XMage - Magic Another Game Engine
This report summarizes scanner evidence for magefree/mage, a Java project with 2,399 GitHub stars. SynthScan examined 2,950,417 lines of code across 40143 source files, recording 186 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.1 (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.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 182 finding(s).
Are imports declared and package/API names verified? 3 finding(s).
Are wrappers, guards, and repeated structures necessary? 2 finding(s).
Which changes need focused human review? 186 finding(s).
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.
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.
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.
The scanner identified 186 distinct pattern matches across 11 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/main/java/org/mage/card/arcane/RetroCardRenderer.java | 1202 | // Absolutely mental, but the coloring for the spirals is as follows (reading from biggest box in): | COMMENT |
| MEDIUM | …main/java/org/mage/card/arcane/ModernCardRenderer.java | 1705 | // Absolutely mental, but the coloring for the spirals is as follows (reading from biggest box in): | COMMENT |
| MEDIUM | …ge/abilities/costs/mana/ActivationManaAbilityStep.java | 14 | AFTER(2); // convoke, delve, improvise | CODE |
| MEDIUM | …src/main/java/mage/abilities/keyword/DelveAbility.java | 192 | // can't use mana abilities after that (delve cost must be payed after mana abilities only) | COMMENT |
| MEDIUM | …yer.AI/src/mage/player/ai/PossibleTargetsSelector.java | 177 | // (more exiled -- more good things you get, e.g. delve's pay or search cards with same name) | COMMENT |
| MEDIUM | Mage.Common/src/main/java/mage/view/GameView.java | 222 | // has only to be set for active player with priority (e.g. pay mana by delve or Quenchable Fire special act | COMMENT |
| MEDIUM⚡ | …rds/cost/modification/PayDelveFromCommandZoneTest.java | 17 | // Having this problem with Tasigur, the Golden Fang. I can't attempt to use delve to cast him from command zone | COMMENT |
| MEDIUM⚡ | …rds/cost/modification/PayDelveFromCommandZoneTest.java | 22 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 5); // delve | CODE |
| MEDIUM⚡ | …rds/cost/modification/PayDelveFromCommandZoneTest.java | 26 | setChoice(playerA, "Balduvian Bears", 5); // delve pay | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 15 | // no simple playable tests for delve, it's same as ConvokeTest | COMMENT |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 23 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 4); // delve pay | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 31 | // delve can be payed in test only by one card | COMMENT |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 33 | setChoice(playerA, "Balduvian Bears"); // pay 3 as delve | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 35 | setChoice(playerA, "Balduvian Bears"); // pay 4 as delve | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 37 | setChoice(playerA, "Balduvian Bears"); // pay 5 as delve | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 39 | setChoice(playerA, "Balduvian Bears"); // pay 6 as delve | CODE |
| MEDIUM | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 54 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 4); // delve pay | CODE |
| MEDIUM | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 56 | // AI must use special actions to pay as delve | COMMENT |
| MEDIUM | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 72 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 4); // delve pay | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 85 | // possible bug: users can start to pay delve special action with nothing (done button) and gets no mana cast | COMMENT |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 95 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 7); // delve pay | CODE |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 99 | // 2. Use delve as special action | COMMENT |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 100 | // 3. Press done without real delve pay | COMMENT |
| MEDIUM⚡ | …/org/mage/test/cards/abilities/keywords/DelveTest.java | 105 | setChoice(playerA, "Exile a card"); // delve activate (special button in UI) | CODE |
| MEDIUM | …/mage/test/cards/abilities/keywords/ImproviseTest.java | 52 | // AI must use special actions to pay as delve | COMMENT |
| MEDIUM | …rg/mage/test/cards/abilities/keywords/ConvokeTest.java | 317 | addCard(Zone.GRAVEYARD, playerA, "Balduvian Bears", 5); // delve | CODE |
| MEDIUM | …rg/mage/test/cards/abilities/keywords/ConvokeTest.java | 321 | setChoice(playerA, "Balduvian Bears", 5); // delve pay | CODE |
| MEDIUM | …org/mage/test/cards/continuous/CommandersCastTest.java | 277 | // disable auto-payment for delve test | COMMENT |
| MEDIUM | …org/mage/test/cards/continuous/CommandersCastTest.java | 290 | addCard(Zone.BATTLEFIELD, playerA, "Island", 5); // one from delve | CODE |
| MEDIUM | …org/mage/test/cards/continuous/CommandersCastTest.java | 304 | // use commander as delve pay | COMMENT |
| MEDIUM | …org/mage/test/cards/continuous/CommandersCastTest.java | 308 | setChoice(playerA, "Exile a card"); // pay delve | CODE |
| MEDIUM | Mage.Sets/src/mage/cards/t/TevalArbiterOfVirtue.java | 55 | // Spells you cast have delve. | COMMENT |
| MEDIUM | Mage.Sets/src/mage/cards/s/Soulflayer.java | 36 | // If a creature card with flying was exiled with Soulflayer's delve ability, Soulflayer has flying. The same is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nt/src/main/java/mage/client/cards/CardIconsPanel.java | 261 | } | COMMENT |
| LOW | …rc/main/java/mage/client/dialog/PreferencesDialog.java | 421 | } | COMMENT |
| LOW | …/java/mage/client/components/BracketLegalityLabel.java | 41 | private static final String GROUP_GAME_CHANGES = "Game Changers"; | COMMENT |
| LOW | …ient/src/main/java/org/mage/card/arcane/MageLayer.java | 261 | double originY = height - originX; | COMMENT |
| LOW | …plugins/card/dl/sources/ScryfallImageSupportCards.java | 641 | add("MDC"); // Darkhold Destiny Commander | COMMENT |
| LOW | …plugins/card/dl/sources/ScryfallImageSupportCards.java | 661 | // | COMMENT |
| LOW | …lugins/card/dl/sources/ScryfallImageSupportTokens.java | 21 | // direct example: https://cards.scryfall.io/large/back/d/c/dc26e13b-7a0f-4e7f-8593-4f22234f4517.jpg | COMMENT |
| LOW | Mage/src/main/resources/tokens-database.txt | 1 | # Tokens database | COMMENT |
| LOW | Mage/src/main/java/mage/MageIdentifier.java | 41 | TheFourthDoctorWatcher, | COMMENT |
| LOW | Mage/src/main/java/mage/util/GameLog.java | 121 | public static String injectPopupSupport(String htmlLogs) { | COMMENT |
| LOW | Mage/src/main/java/mage/players/PlayerImpl.java | 321 | COMMENT | |
| LOW | Mage/src/main/java/mage/players/PlayerImpl.java | 5181 | break; | COMMENT |
| LOW | …e/src/main/java/mage/constants/AsThoughEffectType.java | 41 | CAST_AS_INSTANT(true, true), | COMMENT |
| LOW | Mage/src/main/java/mage/cards/ExpansionSet.java | 761 | this.numBoosterCommon += 1; | COMMENT |
| LOW | …rc/main/java/mage/cards/repository/CardRepository.java | 81 | // TODO: implement same logic for set repository, users repository and other db sources?! | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameImpl.java | 2341 | // The exiled cards return to the battlefield immediately after Grasp of Fate leaves the battlefield. Nothin | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameImpl.java | 2381 | newAbility.newId(); | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameCommanderImpl.java | 181 | super.mulligan(playerId); | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameCommanderImpl.java | 201 | // } | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameCommanderImpl.java | 221 | // .append(numCards) | COMMENT |
| LOW | Mage/src/main/java/mage/game/turn/UntapStep.java | 61 | .getActivePlayerPrevTurnCount(); | COMMENT |
| LOW | …e/src/main/java/mage/game/permanent/PermanentImpl.java | 1401 | // 616.1a | COMMENT |
| LOW | …e/src/main/java/mage/game/permanent/PermanentCard.java | 281 | @Override | COMMENT |
| LOW | …src/main/java/mage/abilities/TriggeredAbilityImpl.java | 421 | } | COMMENT |
| LOW | …src/main/java/mage/abilities/TriggeredAbilityImpl.java | 541 | // --!---------------!-------------!-----!-----------! | COMMENT |
| LOW | Mage/src/main/java/mage/abilities/LoyaltyAbility.java | 41 | // loyalty cost modification rules from Carth the Lion | COMMENT |
| LOW | Mage/src/main/java/mage/abilities/AbilityImpl.java | 321 | COMMENT | |
| LOW | Mage/src/main/java/mage/abilities/AbilityImpl.java | 401 | } | COMMENT |
| LOW | Mage/src/main/java/mage/abilities/AbilityImpl.java | 801 | * @return variableManaCost for posting to log later | COMMENT |
| LOW | Mage/src/main/java/mage/abilities/AbilityImpl.java | 1341 | // ... | COMMENT |
| LOW | …on/PutIntoGraveFromAnywhereSourceTriggeredAbility.java | 21 | } | COMMENT |
| LOW | …on/PutIntoGraveFromAnywhereSourceTriggeredAbility.java | 41 | // * @return | COMMENT |
| LOW | …ilities/effects/ContinuousRuleModifyingEffectImpl.java | 21 | // 613.10 | COMMENT |
| LOW | …/java/mage/abilities/effects/ContinuousEffectImpl.java | 181 | // 20210112 - 611.2c | COMMENT |
| LOW | …ge.Player.Human/src/mage/player/human/HumanPlayer.java | 61 | * Human: server side logic to exchange game data between server app and another player's app | COMMENT |
| LOW | …ge.Player.Human/src/mage/player/human/HumanPlayer.java | 81 | // * it's income in async mode at any time and in any order by "CALL xxx" threads | COMMENT |
| LOW | …ge.Player.Human/src/mage/player/human/HumanPlayer.java | 201 | // so if next command come too fast then wait here until game ready | COMMENT |
| LOW | …ge.Player.Human/src/mage/player/human/HumanPlayer.java | 361 | // async commands can be lost on two parallel answers of the same player | COMMENT |
| LOW | …r.AI/src/mage/player/ai/score/GameStateEvaluator2.java | 101 | // - possible bug in wrong score: instant and sorcery on hand will be more valuable compared to other zones, | COMMENT |
| LOW | …ge.Deck.Constructed/src/mage/deck/HistoricalType2.java | 41 | {"MIR", "VIS", "5ED", "WTH", "TMP", "STH", "EXO"}, | COMMENT |
| LOW | .devcontainer/xmage-dev-tools/devcontainer.json | 1 | { | COMMENT |
| LOW | .devcontainer/xmage-dev-tools/devcontainer.json | 21 | // Offline work mode: | COMMENT |
| LOW | Mage.Server/src/main/java/mage/server/Session.java | 41 | COMMENT | |
| LOW | …/mage/test/commander/duel/MairsilThePretenderTest.java | 141 | addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1); | COMMENT |
| LOW | …rg/mage/test/commander/duel/GlimpseOfTomorrowTest.java | 21 | // card without paying its mana cost. Put all revealed cards not cast this | COMMENT |
| LOW | …test/cards/triggers/dies/SacrificeDiesTriggerTest.java | 81 | // Bug: reports of Dies trigger not triggering on sacrifice. | COMMENT |
| LOW | …test/cards/triggers/dies/SacrificeDiesTriggerTest.java | 121 | // This pair was specifically mentionned to not trigger the Su-Chi trigger. | COMMENT |
| LOW | …test/cards/triggers/dies/SacrificeDiesTriggerTest.java | 161 | // This pair was specifically mentionned to not trigger the Su-Chi trigger. | COMMENT |
| LOW | …test/cards/cost/modification/CostModificationTest.java | 401 | addCard(Zone.BATTLEFIELD, playerA, "Carth the Lion", 1); | COMMENT |
| LOW | …/mage/test/cards/cost/modification/CostReduceTest.java | 121 | testReduce("{3}{R}", -2, "{5}{R}"); | COMMENT |
| LOW | …cards/cost/modification/KaradorGhostChieftainTest.java | 101 | // | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 521 | // Verify that the original "Bottomless Pool" is on playerA's battlefield, and a | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 581 | // Each other non-Aura enchantment is a creature in addition to its other types | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 661 | @Test | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 761 | // Opalescence | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 901 | // creature to its owner's hand. | COMMENT |
| LOW | …/org/mage/test/cards/cost/splitcards/RoomCardTest.java | 961 | setStrictChooseMode(true); | COMMENT |
| LOW | …s/cost/modaldoublefaced/ModalDoubleFacedCardsTest.java | 1101 | // 707.8a | COMMENT |
| LOW | …st/cards/single/one/EleshNornMotherOfMachinesTest.java | 41 | COMMENT | |
| LOW | …rg/mage/test/cards/single/c16/ArmoryAutomatonTest.java | 41 | addTarget(playerA, "Leonin Scimitar"); | COMMENT |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …e.Client/src/main/java/mage/client/game/GamePanel.java | 2173 | //TODO: implement this | COMMENT |
| LOW | …lient/src/main/java/org/mage/card/arcane/SvgUtils.java | 106 | useShadow = false; // TODO: implement shadow drawing | CODE |
| LOW | …ain/java/org/mage/card/arcane/CardRendererFactory.java | 24 | // TODO: implement split card renderer for retro cards | COMMENT |
| LOW | …/org/mage/plugins/card/dl/sources/ScryfallApiCard.java | 35 | //public UUID oracle_id; // TODO: implement card hint with oracle/cr ruling texts (see Rulings bulk data) | COMMENT |
| LOW | …/collectors/services/SaveGameHistoryDataCollector.java | 282 | // TODO: implement? | COMMENT |
| LOW | …rc/main/java/mage/cards/repository/CardRepository.java | 81 | // TODO: implement same logic for set repository, users repository and other db sources?! | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameImpl.java | 3148 | //TODO: implement the rest | COMMENT |
| LOW | Mage/src/main/java/mage/game/draft/DraftImpl.java | 187 | //TODO: implement this | COMMENT |
| LOW | …s/common/continuous/BecomesFaceDownCreatureEffect.java | 232 | // TODO: implement multiple face down types?! | COMMENT |
| LOW | ….Player.AI.MAD/src/mage/player/ai/ComputerPlayer6.java | 881 | // TODO: implement choices simulation? | COMMENT |
| LOW | ….Player.AI.MAD/src/mage/player/ai/util/CombatUtil.java | 171 | // TODO: implement full game simulations of all possible combinations (e.g. multiblockers support) | COMMENT |
| LOW | ….Player.AI.MAD/src/mage/player/ai/util/CombatUtil.java | 320 | int endNonBlockingScore = startScore; // TODO: implement | CODE |
| LOW | …/Mage.Player.AI/src/mage/player/ai/ComputerPlayer.java | 914 | //TODO: implement this | COMMENT |
| LOW | …/src/mage/player/ai/score/ArtificialScoringSystem.java | 55 | // TODO: implement in the mage core | COMMENT |
| LOW | …/src/mage/player/ai/score/ArtificialScoringSystem.java | 85 | // TODO: implement getOutcomeTotal for permanents and cards too (not only attachments) | COMMENT |
| LOW | …/src/mage/player/ai/score/ArtificialScoringSystem.java | 151 | //TODO: implement this | COMMENT |
| LOW | …main/java/mage/utils/testers/ChoiceTestableResult.java | 21 | return null; // TODO: implement | CODE |
| LOW | …c/main/java/mage/utils/testers/BaseTestableResult.java | 35 | return null; // TODO: implement | CODE |
| LOW | Mage.Common/src/main/java/mage/view/GameView.java | 44 | // TODO: implement RepeatedGameView to send back ref number instead full game view on non-changeable | COMMENT |
| LOW | Mage.Common/src/main/java/mage/view/GameView.java | 75 | // TODO: implement and support in admin tools | COMMENT |
| LOW | Mage.Common/src/main/java/mage/view/CardView.java | 1141 | // TODO: implement diff backface images someday and insert here (user data + card owner) | COMMENT |
| LOW | Mage.Server/src/main/java/mage/server/Session.java | 500 | // TODO: implement important in call.getMethod().getType() | COMMENT |
| LOW | …ver/src/main/java/mage/server/game/GameController.java | 754 | // TODO: implement allow deck view for all (same as allow hand view for all) | COMMENT |
| LOW | …src/main/java/mage/server/game/GameSessionWatcher.java | 127 | // TODO: implement shared link here (store game state, full battlefield info, history/logs, etc with shared | COMMENT |
| LOW | …/mage/test/cards/cost/additional/AdjusterCostTest.java | 200 | // TODO: implement AI and add tests for non-mana X values (announceXCost) | COMMENT |
| LOW | …rg/mage/test/cards/single/emn/NephaliaAcademyTest.java | 86 | //TODO: Add tests for replacement effect by ability | COMMENT |
| LOW | …rg/mage/test/cards/single/msh/BaronHelmutZemoTest.java | 123 | // TODO: implement possible targets check/assert | COMMENT |
| LOW | …java/org/mage/test/cards/single/ltr/GlamdringTest.java | 34 | // TODO: implement possible targets check/assert | COMMENT |
| LOW | …va/org/mage/test/cards/single/mh3/NulldrifterTest.java | 57 | @Ignore // TODO: implement alternative cost choose by AI instead random | CODE |
| LOW | …va/org/mage/test/cards/single/mh3/NulldrifterTest.java | 99 | @Ignore // TODO: implement alternative cost choose by AI instead random | CODE |
| LOW | …va/org/mage/test/cards/single/mh3/NulldrifterTest.java | 141 | @Ignore // TODO: implement alternative cost choose by AI instead random | CODE |
| LOW | …sts/src/test/java/org/mage/test/player/TestPlayer.java | 4768 | // TODO: implement after takeMaxTargetsPerChoose fix/remove (targets must use while logic all the time - same as cho | COMMENT |
| LOW | …rify/src/test/java/mage/verify/VerifyCardDataTest.java | 3035 | // TODO: implement tests result/stats by github actions to show in check message compared to prev version | COMMENT |
| LOW | …Sets/src/mage/sets/ShadowsOverInnistradRemastered.java | 25 | // TODO: implement special slot with x1 card from SIS - Shadows of the Past | COMMENT |
| LOW | Mage.Sets/src/mage/sets/PioneerMasters.java | 24 | // TODO: implement special slot with x1 card from bonus sheet | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Mage/src/main/java/mage/util/DebugUtil.java | 12 | * WARNING, don't forget to disable it before release/commit | COMMENT |
| LOW | Mage/src/main/java/mage/util/CardUtil.java | 1393 | * Take control under another player, use it in inner effects like Word of Commands. Don't forget to end it in same | COMMENT |
| LOW | …in/java/mage/cards/repository/ExpansionRepository.java | 67 | * Warning, don't forget to unsubscribe due memory leak problems | COMMENT |
| LOW | Mage/src/main/java/mage/game/GameImpl.java | 93 | * WARNING, if you add new fields then don't forget to add it to copy constructor (deep copy, not ref). | COMMENT |
| LOW | Mage/src/main/java/mage/game/stack/Spell.java | 850 | * Warning, don't forget to call CopyStackObjectEvent and CopiedStackObjectEvent before and after copy | COMMENT |
| LOW | Mage/src/main/java/mage/game/stack/Spell.java | 853 | * Warning, don't forget to call spell.setZone before push to stack | COMMENT |
| LOW | …src/main/java/mage/abilities/ActivatedAbilityImpl.java | 105 | * WARNING, don't forget to call super.canActivate on override in card's code in most cases. | COMMENT |
| LOW | Mage/src/main/java/mage/abilities/ActivatedAbility.java | 65 | * WARNING, don't forget to call super.canActivate on override in card's code | COMMENT |
| LOW | …/java/mage/abilities/costs/OptionalAdditionalCost.java | 5 | * Don't forget to set up cost type for variable costs | COMMENT |
| LOW | …age/abilities/costs/OptionalAdditionalSourceCosts.java | 17 | * Warning, don't forget to set up cost type for costs, it can help with X announce | COMMENT |
| LOW | …ain/java/mage/abilities/effects/ContinuousEffects.java | 696 | * Warning, don't forget to call ability.adjustX before any cost modifications | COMMENT |
| LOW | …ain/java/mage/abilities/effects/ContinuousEffects.java | 1353 | // so if you change keys or texts logic then don't forget to change auto-choose too | COMMENT |
| LOW | …predicate/permanent/CrewedSourceThisTurnPredicate.java | 10 | * Warning, don't forget to add CrewedVehicleWatcher watcher to the ability | COMMENT |
| LOW | …Player.Human/src/mage/player/human/PlayerResponse.java | 28 | // if you add new response type the don't forget to change hasAnswer() | COMMENT |
| LOW | …e.Common/src/main/java/mage/view/StackAbilityView.java | 29 | // in GUI: that's view will be replaced by sourceCard, so don't forget to sync settings like | COMMENT |
| LOW | Mage.Common/src/main/java/mage/view/CardView.java | 145 | // warning, don't forget to hide it in face down cards (null) | COMMENT |
| LOW | Mage.Server/src/main/java/mage/server/Session.java | 474 | * Don't forget to call flushCallbacksQueue after fill complete | COMMENT |
| LOW | …/src/main/java/mage/server/game/GameSessionPlayer.java | 209 | // warning, don't forget to sync logci with GameSessionWatcher and GameSessionPlayer | COMMENT |
| LOW | …src/main/java/mage/server/game/GameSessionWatcher.java | 152 | // warning, don't forget to sync logci with GameSessionWatcher and GameSessionPlayer | COMMENT |
| LOW | …test/java/org/mage/test/player/TestComputerPlayer.java | 26 | * Don't forget to add new methods in another classes like TestComputerPlayer7 or TestComputerPlayerMonteCarlo | COMMENT |
| LOW | …rify/src/test/java/mage/verify/VerifyCardDataTest.java | 1120 | // also don't forget to change names in mtg-cards-data.txt | COMMENT |
| LOW | …rify/src/test/java/mage/verify/VerifyCardDataTest.java | 1537 | // (also don't forget to add new set to scryfall download) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …nt/src/main/java/mage/client/dialog/ConnectDialog.java | 189 | cbFlag = new mage.client.util.gui.countryBox.CountryComboBox(); | CODE |
| CRITICAL | …rc/main/java/mage/cards/repository/CardRepository.java | 704 | at com.j256.ormlite.jdbc.JdbcDatabaseConnection.executeStatement(JdbcDatabaseConnection.java:141) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Utils/gen-card-test.pl | 136 | # Check if this is a planeswalker | COMMENT |
| LOW | Utils/gen-card-test.pl | 257 | # Check if card is already implemented | COMMENT |
| LOW | Utils/mtg-cards-data-scryfall.py | 134 | # Check if file doesn't exist or is stale (older than 24 hours) | COMMENT |
| LOW | Utils/find_new_cards.pl | 160 | # Check if name is correct if not try to fix with ' before the endings of first word | COMMENT |
| LOW | Utils/gen-card.pl | 148 | # Check if card is already implemented | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Mage/src/main/java/mage/players/PlayerImpl.java | 3924 | if (mana.enough(avail)) { // here we need to check if spend mana as though allow to pay the mana cos | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Utils/gen-draft-rates-17Lands.py | 339 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Utils/gen-draft-rates-17Lands.py | 535 | def is_ratings_older_than_data(code, own_ratings): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Utils/gen-draft-rates-17Lands.py | 89 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Utils/CubeCobraDownloader.py | 4 | CODE |