AI Slop Code RIsk Monitor

tModLoader/tModLoader

A mod to make and play Terraria mods. Supports Terraria 1.4 (and earlier) installations

4.6 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for tModLoader/tModLoader, a C# project with 5,720 GitHub stars. SynthScan examined 192,521 lines of code across 1668 source files, recording 932 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 4.6 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.6
Adjusted Signal
4.6
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
5.7K
Stars
C#
Language
192.5K
Lines of Code
1.7K
Files
932
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 20.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 929 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

Are imports declared and package/API names verified? 1 finding(s).

Agent Over-Engineering Ratio 0.1/100 · LOW

Are wrappers, guards, and repeated structures necessary? 2 finding(s).

PR Review Velocity Impact 22.8/100 · LOW

Which changes need focused human review? 932 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 3MEDIUM 20LOW 908

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 932 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block895 hits · 770 pts
SeverityFileLineSnippetContext
LOWreworking_todo.txt1//Things that need to be done after initial patches are fixed.COMMENT
LOWreworking_todo.txt21 //This includes tile counts and banner buffs.COMMENT
LOWpatching_todo.txt1//Rartrin:COMMENT
LOWpatching_todo.txt21//Mirsario:COMMENT
LOWExampleMod/Content/ExampleRecipes.cs61 // When you're done, call this to register the recipe.COMMENT
LOWExampleMod/Content/NPCs/Worm.cs41 /// <summary>COMMENT
LOWExampleMod/Content/NPCs/Worm.cs121 /// </summary>COMMENT
LOWExampleMod/Content/NPCs/Worm.cs141 public int MinSegmentLength { get; set; }COMMENT
LOWExampleMod/Content/NPCs/Worm.cs161 /// </summary>COMMENT
LOWExampleMod/Content/NPCs/Worm.cs181 /// Spawns a body or tail segment of the worm.COMMENT
LOWExampleMod/Content/NPCs/ExampleCritter.cs21 /// </summary>COMMENT
LOWExampleMod/Content/NPCs/ExampleCritter.cs41 /// This causes the frog statue to spawn this NPC 50% of the timeCOMMENT
LOWExampleMod/Content/NPCs/ExampleCritter.cs221 public override void SetStaticDefaults() {COMMENT
LOWExampleMod/Content/NPCs/MinionBoss/MinionBossBody.cs181COMMENT
LOWExampleMod/Content/Tiles/ExampleAnimatedGlowmaskTile.cs21 // This changes a Framed tile to a FrameImportant tileCOMMENT
LOWExampleMod/Content/Tiles/ExampleAnimatedTile.cs21COMMENT
LOWExampleMod/Content/Buffs/AnimatedBuff.cs41 // Other stuff you can do in this hookCOMMENT
LOWExampleMod/Content/DamageClasses/ExampleDamageClass.cs41 knockbackInheritance: 0fCOMMENT
LOW…/Content/Projectiles/ExamplePaperAirplaneProjectile.cs21 Projectile.DamageType = DamageClass.Ranged; // Set the damage type to ranged damage.COMMENT
LOW…leMod/Content/Projectiles/ExamplePiercingProjectile.cs1using ExampleMod.Content.Items;COMMENT
LOW…leMod/Content/Projectiles/ExamplePiercingProjectile.cs21 // 3. Override OnHitNPC: If not immune, when it hits it manually set an immune other than 10COMMENT
LOW…nt/Projectiles/ExampleSwingingEnergySwordProjectile.cs41 // But, for this case, we want the projectile to continue to live so we can have the visuals of the swing.COMMENT
LOW…Content/Projectiles/Rockets/ExampleRocketProjectile.cs161COMMENT
LOWExampleMod/Content/Items/ExamplePaperAirplane.cs21 // Item.useTime = 17;COMMENT
LOW…Content/Items/Accessories/ExampleStatBonusAccessory.cs41 // - Adding 5 flat damage.COMMENT
LOWExampleMod/Content/Items/Tools/ExampleHook.cs61COMMENT
LOWExampleMod/Content/Items/Tools/ExampleGolfClub.cs21 ItemID.Sets.CanBePlacedOnWeaponRacks[Type] = true;COMMENT
LOWExampleMod/Content/Items/Tools/ExampleGolfClub.cs41 Item.SetShopValues(ItemRarityColor.Green2, Item.buyPrice(0, 10));COMMENT
LOWExampleMod/Content/Items/Placeable/ExampleGem.cs1using ExampleMod.Content.Tiles;COMMENT
LOWExampleMod/Content/Items/Armor/ExampleCostume.cs1using ExampleMod.Common.Players;COMMENT
LOWExampleMod/Old/ExampleMod.cs41COMMENT
LOWExampleMod/Old/ExampleConfig.cs21 // This file contains 2 real ModConfigs (and also a bunch of fake ModConfigs showcasing various ideas). One is set to CCOMMENT
LOWExampleMod/Old/NPCs/DeathAnimation.cs81 public override void FindFrame(int frameHeight) {COMMENT
LOWExampleMod/Old/Items/PrefixChanceGlobalItem.cs41 }COMMENT
LOWExampleMod/Old/Items/ExampleDrawTooltips.cs61 //line.isModifier = false;COMMENT
LOW…pleMod/Common/UI/ResourceOverlay/VanillaLifeOverlay.cs121 // "context" contains information used to draw the resourceCOMMENT
LOWExampleMod/Common/GlobalNPCs/BuffImmuneGlobalNPC.cs21 // This example does 2 things.COMMENT
LOWExampleMod/Common/Players/SimpleModPlayer.cs1using ExampleMod.Common.Players;COMMENT
LOWExampleMod/Common/Systems/LanguageSubstitutionSystem.cs41COMMENT
LOW…eMod/Common/Systems/SimpleDataAtParticularLocations.cs1using Microsoft.Xna.Framework;COMMENT
LOW…rter/tModPorter.Tests/TestData/GenBaseTest.Expected.cs41 // not-yet-implementedCOMMENT
LOWpatches/tModLoader/Terraria/Projectile.TML.cs81 private int _crit = 0;COMMENT
LOWpatches/tModLoader/Terraria/Projectile.TML.cs101 public int OriginalArmorPenetration { get; set; }COMMENT
LOWpatches/tModLoader/Terraria/Projectile.TML.cs201COMMENT
LOWpatches/tModLoader/Terraria/Recipe.TML.cs81COMMENT
LOWpatches/tModLoader/Terraria/Recipe.TML.cs241 /// </summary>COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs21 public readonly ushort X;COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs41 /// Whether there is a tile at this position. Check this whenever you are accessing data from a tile to avoid getting dCOMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs61 public bool HasActuator { get => Get<TileWallWireStateData>().HasActuator; set => Get<TileWallWireStateData>().HasActuaCOMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs81 /// The <see cref="Slope"/> and <see cref="IsHalfBlock"/> of this tile combined, which can be changed by hammering.<br/COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs101 public bool BottomSlope => Slope == SlopeType.SlopeUpLeft || Slope == SlopeType.SlopeUpRight;COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs121 public ref short TileFrameX => ref Get<TileWallWireStateData>().TileFrameX;COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs141 /// The random style number the tile at this position has, which is random number between 0 and 2 (inclusive).<br/>COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs161 /// The <see cref="PaintID"/> the wall at this position is painted with. Is <see cref="PaintID.None"/> if not painted.<COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs181 /// <summary>COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs201 /// </summary>COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs221 /// </summary>COMMENT
LOWpatches/tModLoader/Terraria/Tile.TML.cs241 /// Legacy/vanilla equivalent is <see cref="anyWire()"/>.COMMENT
LOWpatches/tModLoader/Terraria/Item.TML.cs61COMMENT
LOWpatches/tModLoader/Terraria/Item.TML.cs81 public void NetStateChanged() => NetStateVersion++;COMMENT
835 more matches not shown…
AI Slop Vocabulary16 hits · 46 pts
SeverityFileLineSnippetContext
MEDIUMExampleMod/Content/Tiles/ExampleAnimatedGlowmaskTile.cs25 // Use this to utilize an existing templateCOMMENT
MEDIUMExampleMod/Content/Tiles/ExampleAnimatedTile.cs35 // Use this to utilize an existing templateCOMMENT
MEDIUM…ampleMod/Content/Projectiles/ExampleCloneProjectile.cs56 // Essentially, using ? and : is a glorified and shortened method of creating a simple if statement inCOMMENT
LOWExampleMod/Old/Projectiles/ExampleLaser.cs34 // Are we at max charge? With c#6 you can simply use => which indicates this is a get only propertyCOMMENT
MEDIUM…GameNotification/ExampleJoinWorldInGameNotification.cs79 // - we utilize the calculated opacity and scale values.COMMENT
MEDIUM…/tModLoader/Terraria/DataStructures/TileRestingInfo.cs37 /// Offset applied to the final anchor position. Use with caution, vanilla does not utilize it!COMMENT
MEDIUMpatches/tModLoader/Terraria/ModLoader/GlobalNPC.cs218 /// <para/> Essentially, modders implementing damage over time debuffs should subtract from <see cref="NPC.lifeRegen"/>COMMENT
MEDIUMpatches/tModLoader/Terraria/ModLoader/ModNPC.cs342 /// <para/>Essentially, modders implementing damage over time debuffs should subtract from <see cref="NPC.lifeRegen"/> COMMENT
MEDIUM…hes/tModLoader/Terraria/ModLoader/ILocalizedModType.cs9 /// The category used by this modded content for use in localization keys. Localization keys follow the pattern of "ModCOMMENT
MEDIUM…hes/tModLoader/Terraria/ModLoader/ILocalizedModType.cs9 /// The category used by this modded content for use in localization keys. Localization keys follow the pattern of "ModCOMMENT
MEDIUMpatches/tModLoader/Terraria/ModLoader/Mod.cs334 /// The <see href="https://github.com/tModLoader/tModLoader/wiki/Expert-Cross-Mod-Content">Expert Cross Mod Content GuiCOMMENT
MEDIUMpatches/tModLoader/Terraria/ModLoader/ModTile.cs608 /// <br/><br/> Code in HitWire, RightClick, or SwitchTiles could call <see cref="Wiring.HitSwitch"/> followed by <c>NetCOMMENT
MEDIUM…ches/tModLoader/Terraria/ModLoader/UI/UIModPackItem.cs476 //TODO: Add code to utilize the saved configsCOMMENT
MEDIUM…ches/tModLoader/Terraria/ModLoader/UI/UIModPackItem.cs489 //TODO: Add code to utilize the saved configsCOMMENT
MEDIUMpatches/tModLoader/Terraria/ID/ProjAIStyleID.cs80 /// Note that projectiles using <see cref="Sets.Explosive" /> will utilize much of the custom logic corresponding to thCOMMENT
MEDIUMpatches/tModLoader/Terraria/ID/SetFactory.TML.cs136 /// <para/> Essentially, the sets will be merged and share the same data. The default value must still be consistent beCOMMENT
Slop Phrases10 hits · 18 pts
SeverityFileLineSnippetContext
LOWExampleMod/Content/NPCs/ExampleTravelingMerchant.cs367 // This uses some fairly advanced C# to avoid being excessively long, so make sure you learn the language before tryingCOMMENT
MEDIUMExampleMod/Content/Tiles/ExampleOre.cs37 // Example of how to enable the Biome Sight buff to highlight this tile. Biome Sight is technically intended to show "COMMENT
MEDIUM…ampleMod/Content/Items/Weapons/HitModifiersShowcase.cs21 /// This example is purely for demonstration purposes only, it will not work in multiplayer. This should also not be coCOMMENT
LOWExampleMod/Common/GlobalNPCs/EmotePickerGlobalNPC.cs26 // Don't forget to return base method because we don't want to override the emote totallyCOMMENT
LOWpatches/tModLoader/Terraria/ModLoader/ModPlayer.cs247 /// <para/> Don't forget to check if your armor set is active.COMMENT
LOWpatches/tModLoader/Terraria/ModLoader/ModPlayer.cs258 /// <para/> Don't forget to check if your armor set is active.COMMENT
LOW…ModLoader/Terraria/ModLoader/Engine/InstallVerifier.cs51 gogHash = ToByteArray("18013fe58e2b64be3ed0d7b7161c6800"); // Don't forget to update CheckExe aboveCODE
LOWpatches/tModLoader/Terraria/ID/ItemID.TML.cs34 /// <br/> Don't forget to use the <see cref="BossBag"/> set in conjunction with this one.COMMENT
LOWpatches/tModLoader/Terraria/ID/ItemID.TML.cs108 /// If you want your catching tool to be able to catch the Underworld's lava critters, don't forget to use the <see crCOMMENT
LOWpatches/tModLoader/Terraria/ID/ItemID.TML.cs118 /// Don't forget to use the <see cref="CatchingTool"/> set in conjunction with this one.COMMENT
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippetContext
CRITICALpatches/tModLoader/Terraria/ID/SetFactory.TML.cs237 /// Manually registers a named ID set. This is typically done through the <c>Terraria.ID.XID.Sets.Factory.CreateNamedSeCOMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…eAssist/tModCodeAssist.CodeFixes/Resources.Designer.cs3// This code was generated by a tool.COMMENT
HIGHtModCodeAssist/tModCodeAssist/Resources.Designer.cs3// This code was generated by a tool.COMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHExampleMod/Old/UI/VanillaItemSlotWrapper.cs14 // I've added basic functionality for validating the item attempting to be placed in the slot via the validItem Func.COMMENT
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWExampleMod/Common/Systems/ChestItemWorldGen.cs31 // We need to check if the current chest is the Frozen Chest. We need to check that it exists and has the TileType aCOMMENT
LOW…ModLoader/Terraria/ModLoader/Engine/InstallVerifier.cs231 // TODO: This will fake install terraria, leading to errors. We need to check if Terraria is actually installed.COMMENT
LOWsetup/Core/Utilities/HookGenerator.cs283 bool obsolete = method.HasCustomAttribute("System.ObsoleteAttribute"); // Do we need to check if error is trCODE
Excessive Try-Catch Wrapping2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMsolutions/Legacy Files/ZipAndMakeExecutable.py62 print("Something went wrong")CODE
MEDIUM…amPageLocalization/UpdateStorePageLocalizationFiles.py41 print("Error: Corresponding LongDescription file not found.")CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM…tions/documentation/generateAndPublishDocumentation.sh42# Create a clean working directory for this script.COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…oader/Terraria/release_extras/LaunchUtils/BashUtils.sh11# Check if a program is present or notCOMMENT