Transforming Double Faced Cards Rework Cleanup Tracking
This is to track progress on post transforming double-faced cards rework tasks. Remaining cards need to be converted to single classes and some additional cleanup tasks need to be done.
Additional Tasks
- [x] remove
secondSideCardClazzfrom CardImpl - #14111 - [x] ~~remove
nightCardflag from CardImpl~~ still used by meld, can be removed when those are converted - [x] remove
TransformAbility- #14111 - [ ] fix
DisturbAbilitynot capturing targets when abilities are placed in order - [x] cleanup TODOs referencing tdfc - #14111
- [x] move VALUE_KEY_ENTER_TRANSFORMED to a new location / create solution to track entering transformed state
- [x] ZonesHandler Battlefield isGoodToMove check can remove reference to VALUE_KEY_ENTER_TRANSFORMED
- [x] double check mycosynth lattice referencing double faced cards
- [x] double check painters servant referencing double faced cards
- [x] check test_checkMissingCardData contains DoubleSideCards reference still needed
- [x] remove ignoreTransformEffect flag from SpellTransformedAbility (temporary flag to separate from old transform implementation)
- [x] remove instanceof DoubleFacedCardHalf check from CardImpl copy constructor; DFC will still use the field, instance check is currently just to differentiate between old Transforming logic
- [x] remove transform related code from PermanentCard
initmethod; New TDFC implementation will already set the correct values
- [x] - Done -- add verify test to check abilities not added to main card of double faced cards - https://github.com/magefree/mage/commit/b32a7862363ffadc8de2ad5ec587e6009d20aa9b
Cards to be converted
None all finished!
Done
Click to expand
- [x] -- Aang, Swift Savior // Aang and La, Ocean's Fury
- [x] -- Aang, at the Crossroads // Aang, Destined Savior
- [x] -- Aberrant Researcher // Perfected Form
- [x] -- Accursed Witch // Infectious Curse
- [x] -- Aclazotz, Deepest Betrayal // Temple of the Dead
- [x] -- Aetherblade Agent // Gitaxian Mindstinger
- [x] -- Afflicted Deserter // Werewolf Ransacker
- [x] -- Ajani, Nacatl Pariah // Ajani, Nacatl Avenger
- [x] -- Alluring Suitor // Deadly Dancer
- [x] -- Altar of the Wretched // Wretched Bonemass
- [x] -- Ambitious Farmhand // Seasoned Cathar
- [x] -- Anakin Skywalker // Darth Vader
- [x] -- Arcee, Sharpshooter // Arcee, Acrobatic Coupe
- [x] -- Arguel's Blood Fast // Temple of Aclazotz
- [x] -- Arlinn Kord // Arlinn, Embraced by the Moon
- [x] -- Arlinn, the Pack's Hope // Arlinn, the Moon's Fury
- [x] -- Autumnal Gloom // Ancient of the Equinox
- [x] -- Avabruck Caretaker // Hollowhenge Huntmaster
- [x] -- Avacynian Missionaries // Lunarch Inquisitors
- [x] -- Avatar Aang // Aang, Master of Elements
- [x] -- Ayara, Widow of the Realm // Ayara, Furnace Queen
- [x] -- Azor's Gateway // Sanctum of the Sun
- [x] -- Balamb Garden, SeeD Academy // Balamb Garden, Airborne
- [x] -- Ballista Watcher // Ballista Wielder
- [x] -- Baneblade Scoundrel // Baneclaw Marauder
- [x] -- Befriending the Moths // Imperial Moth
- [x] -- Behold the Unspeakable // Vision of the Unspeakable
- [x] -- Beloved Beggar // Generous Soul
- [x] -- Bereaved Survivor // Dauntless Avenger
- [x] -- Binding Geist // Spectral Binding
- [x] -- Biolume Egg // Biolume Serpent
- [x] -- Bird Admirer // Wing Shredder
- [x] -- Blightreaper Thallid // Blightsower Thallid
- [x] -- Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant
- [x] -- Bloodline Keeper // Lord of Lineage
- [x] -- Bloodsworn Squire // Bloodsworn Knight
- [x] -- Bonded Herdbeast // Plated Kilnbeast
- [x] -- Boseiju Reaches Skyward // Branch of Boseiju
- [x] -- Braided Net // Braided Quipu
- [x] -- Brass's Tunnel-Grinder // Tecutlan, the Searing Rift
- [x] -- Breakneck Rider // Neck Breaker
- [x] -- Brine Comber // Brinebound Gift
- [x] -- Brutal Cathar // Moonrage Brute
- [x] -- Burly Breaker // Dire-Strain Demolisher
- [x] -- Captive Weird // Compleated Conjurer
- [x] -- Catapult Fodder // Catapult Captain
- [x] -- Cecil, Dark Knight // Cecil, Redeemed Paladin
- [x] -- Chalice of Life // Chalice of Death
- [x] -- Chandra, Fire of Kaladesh // Chandra, Roaring Flame
- [x] -- Chaplain of Alms // Chapel Shieldgeist
- [x] -- Child of the Pack // Savage Packmate
- [x] -- Chosen of Markov // Markov's Servant
- [x] -- Civilized Scholar // Homicidal Brute
- [x] -- Clay-Fired Bricks // Cosmium Kiln
- [x] -- Clive, Ifrit's Dominant // Ifrit, Warden of Inferno
- [x] -- Cloistered Youth // Unholy Fiend
- [x] -- Concealing Curtains // Revealing Eye
- [x] -- Conduit of Storms // Conduit of Emrakul
- [x] -- Conqueror's Galleon // Conqueror's Foothold
- [x] -- Convicted Killer // Branded Howler
- [x] -- Covert Cutpurse // Covetous Geist
- [x] -- Covetous Castaway // Ghostly Castigator
- [x] -- Cryptolith Fragment // Aurora of Emrakul
- [x] -- Crystal Fragments // Summon: Alexander
- [x] -- Curious Homunculus // Voracious Reader
- [x] -- Curse of Leeches // Leeching Lurker
- [x] -- Cyclonus, the Saboteur // Cyclonus, Cybertronian Fighter
- [x] -- Daring Sleuth // Bearer of Overwhelming Truths
- [x] -- Daybreak Ranger // Nightfall Predator
- [x] -- Deathbonnet Sprout // Deathbonnet Hulk
- [x] -- Delver of Secrets // Insectile Aberration
- [x] -- Dennick, Pious Apprentice // Dennick, Pious Apparition
- [x] -- Desperate Farmer // Depraved Harvester
- [x] -- Devoted Grafkeeper // Departed Soulkeeper
- [x] -- Dion, Bahamut's Dominant // Bahamut, Warden of Light
- [x] -- Dire Flail // Dire Blunderbuss
- [x] -- Distracting Geist // Clever Distraction
- [x] -- Docent of Perfection // Final Iteration
- [x] -- Dormant Grove // Gnarled Grovestrider
- [x] -- Dorothea, Vengeful Victim // Dorothea's Retribution
- [x] -- Dowsing Dagger // Lost Vale
- [x] -- Dowsing Device // Geode Grotto
- [x] -- Drogskol Infantry // Drogskol Armaments
- [x] -- Duskwatch Recruiter // Krallenhorde Howler
- [x] -- Ecstatic Awakener // Awoken Demon
- [x] -- Edgar, Charmed Groom // Edgar Markov's Coffin
- [x] -- Eirdu, Carrier of Dawn // Isilu, Carrier of Twilight
- [x] -- Elbrus, the Binding Blade // Withengar Unbound
- [x] -- Elesh Norn // The Argent Etchings
- [x] -- Elusive Tormentor // Insidious Mist
- [x] -- Emet-Selch, Unsundered // Hades, Sorcerer of Eld
- [x] -- Enduring Angel // Angelic Enforcer
- [x] -- Era of Enlightenment // Hand of Enlightenment
- [x] -- Esper Origins // Summon: Esper Maduin
- [x] -- Etali, Primal Conqueror // Etali, Primal Sickness
- [x] -- Exdeath, Void Warlock // Neo Exdeath, Dimension's End
- [x] -- Extricator of Sin // Extricator of Flesh
- [x] -- Eye of Ojer Taq // Apex Observatory
- [x] -- Fable of the Mirror-Breaker // Reflection of Kiki-Jiki
- [x] -- Fangblade Brigand // Fangblade Eviscerator
- [x] -- Fearful Villager // Fearsome Werewolf
- [x] -- Flame Channeler // Embodiment of Flame
- [x] -- Flamewar, Brash Veteran // Flamewar, Streetwise Operative
- [z] -- Foreboding Statue // Forsaken Thresher
- [x] -- Garland, Knight of Cornelia // Chaos, the Endless
- [x] -- Garruk Relentless // Garruk, the Veil-Cursed
- [x] -- Gatstaf Arsonists // Gatstaf Ravagers
- [x] -- Gatstaf Shepherd // Gatstaf Howler
- [x] -- Geier Reach Bandit // Vildin-Pack Alpha
- [x] -- Gnottvold Hermit // Chrome Host Hulk
- [x] -- Goldbug, Humanity's Ally // Goldbug, Scrappy Scout
- [x] -- Golden Guardian // Gold-Forge Garrison
- [x] -- Grasping Shadows // Shadows' Lair
- [x] -- Graveyard Trespasser // Graveyard Glutton
- [x] -- Grimlock Dinobot Leader // Grimlock Ferocious King
- [x] -- Grizzled Angler // Grisly Anglerfish
- [x] -- Grizzled Outcasts // Krallenhorde Wantons
- [x] -- Growing Rites of Itlimoc // Itlimoc, Cradle of the Sun
- [x] -- Gutter Skulker // Gutter Shortcut
- [x] -- Hadana's Climb // Winged Temple of Orazca
- [x] -- Hanweir Militia Captain // Westvale Cult Leader
- [x] -- Hanweir Watchkeep // Bane of Hanweir
- [x] -- Harried Artisan // Phyrexian Skyflayer
- [x] -- Harvest Hand // Scrounged Scythe
- [x] -- Harvesttide Infiltrator // Harvesttide Assailant
- [x] -- Havengul Laboratory // Havengul Mystery
- [x] -- Heir of Falkenrath // Heir to the Night
- [x] -- Heirloom Mirror // Inherited Fiend
- [x] -- Heliod, the Radiant Dawn // Heliod, the Warped Eclipse
- [x] -- Henrika Domnathi // Henrika, Infernal Seer
- [x] -- Herbology Instructor // Malady Invoker
- [x] -- Hermit of the Natterknolls // Lone Wolf of the Natterknolls
- [x] -- Hidetsugu Consumes All // Vessel of the All-Consuming
- [x] -- Hinterland Hermit // Hinterland Scourge
- [x] -- Hookhand Mariner // Riphook Raider
- [x] -- Hostile Hostel // Creeping Inn
- [x] -- Hound Tamer // Untamed Pup
- [x] -- Howlpack Piper // Wildsong Howler
- [x] -- Huatli, Poet of Unity // Roar of the Fifth People
- [x] -- Idol of the Deep King // Sovereign's Macuahuitl
- [x] -- Ill-Tempered Loner // Howlpack Avenger
- [x] -- Infestation Expert // Infested Werewolf
- [x] -- Innocent Traveler // Malicious Invader
- [x] -- Instigator Gang // Wildblood Pack
- [x] -- Invasion of Alara // Awaken the Maelstrom
- [x] -- Invasion of Amonkhet // Lazotep Convert
- [x] -- Invasion of Arcavios // Invocation of the Founders
- [x] -- Invasion of Azgol // Ashen Reaper
- [x] -- Invasion of Dominaria // Serra Faithkeeper
- [x] -- Invasion of Eldraine // Prickle Faeries
- [x] -- Invasion of Ergamon // Truga Cliffcharger
- [x] -- Invasion of Fiora // Marchesa, Resolute Monarch
- [x] -- Invasion of Gobakhan // Lightshield Array
- [x] -- Invasion of Ikoria // Zilortha, Apex of Ikoria
- [x] -- Invasion of Innistrad // Deluge of the Dead
- [x] -- Invasion of Ixalan // Belligerent Regisaur
- [x] -- Invasion of Kaladesh // Aetherwing, Golden-Scale Flagship
- [x] -- Invasion of Kaldheim // Pyre of the World Tree
- [x] -- Invasion of Kamigawa // Rooftop Saboteurs
- [x] -- Invasion of Karsus // Refraction Elemental
- [x] -- Invasion of Kylem // Valor's Reach Tag Team
- [x] -- Invasion of Lorwyn // Winnowing Forces
- [x] -- Invasion of Mercadia // Kyren Flamewright
- [x] -- Invasion of Moag // Bloomwielder Dryads
- [x] -- Invasion of Muraganda // Primordial Plasm
- [x] -- Invasion of New Capenna // Holy Frazzle-Cannon
- [x] -- Invasion of New Phyrexia // Teferi Akosa of Zhalfir
- [x] -- Invasion of Pyrulea // Gargantuan Slabhorn
- [x] -- Invasion of Ravnica // Guildpact Paragon
- [x] -- Invasion of Regatha // Disciples of the Inferno
- [x] -- Invasion of Segovia // Caetus, Sea Tyrant of Segovia
- [x] -- Invasion of Shandalar // Leyline Surge
- [x] -- Invasion of Tarkir // Defiant Thundermaw
- [x] -- Invasion of Theros // Ephara, Ever-Sheltering
- [x] -- Invasion of Tolvada // The Broken Sky
- [x] -- Invasion of Ulgrotha // Grandmother Ravi Sengir
- [x] -- Invasion of Vryn // Overloaded Mage-Ring
- [x] -- Invasion of Xerex // Vertex Paladin
- [x] -- Invasion of Zendikar // Awakened Skyclave
- [x] -- Inventive Iteration // Living Breakthrough
- [x] -- Inverted Iceberg // Iceberg Titan
- [x] -- Jace, Vryn's Prodigy // Jace, Telepath Unbound
- [x] -- Jacob Hauken, Inspector // Hauken's Insight
- [x] -- Jade Seedstones // Jadeheart Attendant
- [x] -- Jecht, Reluctant Guardian // Braska's Final Aeon
- [x] -- Jerren, Corrupted Bishop // Ormendahl, the Corrupter
- [x] -- Jetfire, Ingenious Scientist // Jetfire, Air Guardian
- [x] -- Jill, Shiva's Dominant // Shiva, Warden of Ice
- [x] -- Jin-Gitaxias // The Great Synthesis
- [x] -- Joshua, Phoenix's Dominant // Phoenix, Warden of Fire
- [x] -- Journey to Eternity // Atzal, Cave of Eternity
- [x] -- Jugan Defends the Temple // Remnant of the Rising Star
- [x] -- Kaslem's Stonetree // Kaslem's Strider
- [x] -- Katilda, Dawnhart Martyr // Katilda's Rising Dawn
- [x] -- Kefka, Court Mage // Kefka, Ruler of Ruin
- [x] -- Kessig Forgemaster // Flameheart Werewolf
- [x] -- Kessig Naturalist // Lord of the Ulvenwald
- [x] -- Kessig Prowler // Sinuous Predator
- [x] -- Khenra Spellspear // Gitaxian Spellstalker
- [x] -- Kindly Ancestor // Ancestor's Embrace
- [x] -- Kindly Stranger // Demon-Possessed Witch
- [x] -- Kruin Outlaw // Terror of Kruin Pass
- [x] -- Kuja, Genome Sorcerer // Trance Kuja, Fate Defied
- [x] -- Kumano Faces Kakkazan // Etching of Kumano
- [x] -- Kytheon, Hero of Akros // Gideon, Battle-Forged
- [x] -- Lambholt Elder // Silverpelt Werewolf
- [x] -- Lambholt Raconteur // Lambholt Ravager
- [x] -- Lantern Bearer // Lanterns' Lift
- [x] -- Legion's Landing // Adanto, the First Fort
- [x] -- Life of Toshiro Umezawa // Memory of Toshiro
- [x] -- Liliana, Heretical Healer // Liliana, Defiant Necromancer
- [x] -- Lodestone Needle // Guidestone Compass
- [x] -- Lone Rider // It That Rides as One
- [x] -- Loyal Cathar // Unhallowed Cathar
- [x] -- Ludevic's Test Subject // Ludevic's Abomination
- [x] -- Ludevic, Necrogenius // Olag, Ludevic's Hubris
- [x] -- Lunarch Veteran // Luminous Phantom
- [x] -- Malevolent Hermit // Benevolent Geist
- [x] -- Master's Guide-Mural // Master's Manufactory
- [x] -- Matzalantli, the Great Door // The Core
- [x] -- Mayor of Avabruck // Howlpack Alpha
- [x] -- Megatron, Tyrant // Megatron, Destructive Force
- [x] -- Michiko's Reign of Truth // Portrait of Michiko
- [x] -- Mirrorhall Mimic // Ghastly Mimicry
- [x] -- Mischievous Catgeist // Catlike Curiosity
- [x] -- Mondronen Shaman // Tovolar's Magehunter
- [x] -- Mourning Patrol // Morning Apparition
- [x] -- Mysterious Tome // Chilling Chronicle
- [x] -- Mystic Skull // Mystic Monstrosity
- [x] -- Neglected Heirloom // Ashmouth Blade
- [x] -- Nezumi Freewheeler // Hideous Fleshwheeler
- [x] -- Nicol Bolas, the Ravager // Nicol Bolas, the Arisen
- [x] -- Nissa, Vastwood Seer // Nissa, Sage Animist
- [x] -- Oakshade Stalker // Moonlit Ambusher
- [x] -- Ojer Axonil, Deepest Might // Temple of Power
- [x] -- Ojer Kaslem, Deepest Growth // Temple of Cultivation
- [x] -- Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time
- [x] -- Ojer Taq, Deepest Foundation // Temple of Civilization
- [x] -- Okiba Reckoner Raid // Nezumi Road Captain
- [x] -- Order of the Mirror // Order of the Alabaster Host
- [x] -- Oteclan Landmark // Oteclan Levitator
- [x] -- Outland Liberator // Frenzied Trapbreaker
- [x] -- Overwhelmed Archivist // Archive Haunt
- [x] -- Panicked Bystander // Cackling Culprit
- [x] -- Path of Mettle // Metzali, Tower of Triumph
- [x] -- Pious Evangel // Wayward Disciple
- [x] -- Polukranos Reborn // Polukranos, Engine of Ruin
- [x] -- Poppet Stitcher // Poppet Factory
- [x] -- Primal Amulet // Primal Wellspring
- [x] -- Profane Procession // Tomb of the Dusk Rose
- [x] -- Pyretic Prankster // Glistening Goremonger
- [x] -- Radiant Grace // Radiant Restraints
- [x] -- Ragged Recluse // Odious Witch
- [x] -- Ratchet, Field Medic // Ratchet, Rescue Racer
- [x] -- Ravenous Demon // Archdemon of Greed
- [x] -- Reckless Stormseeker // Storm-Charged Slasher
- [x] -- Reckless Waif // Merciless Predator
- [x] -- Restless Bloodseeker // Bloodsoaked Reveler
- [x] -- Rona, Herald of Invasion // Rona, Tolarian Obliterator
- [x] -- Runo Stromkirk // Krothuss, Lord of the Deep
- [x] -- Sage of Ancient Lore // Werewolf of Ancient Hunger
- [x] -- Saheeli's Lattice // Mastercraft Raptor
- [x] -- Scorned Villager // Moonscarred Werewolf
- [x] -- Screeching Bat // Stalking Vampire
- [x] -- Search for Azcanta // Azcanta, The Sunken Ruin
- [x] -- Sephiroth, Fabled SOLDIER // Sephiroth, One-Winged Angel
- [x] -- Serah Farron // Crystallized Serah
- [x] -- Seraph of New Capenna // Seraph of New Phyrexia
- [x] -- Shady Traveler // Stalking Predator
- [x] -- Sheoldred // The True Scriptures
- [x] -- Shrill Howler // Howling Chorus
- [x] -- Sidequest: Card Collection // Magicked Card
- [x] -- Sidequest: Catch a Fish // Cooking Campsite
- [x] -- Sidequest: Hunt the Mark // Yiazmat, Ultimate Mark
- [x] -- Sidequest: Play Blitzball // World Champion, Celestial Weapon
- [x] -- Sidequest: Raise a Chocobo // Black Chocobo
- [x] -- Skin Invasion // Skin Shedder
- [x] -- Skyclave Aerialist // Skyclave Invader
- [x] -- Slicer, Hired Muscle // Slicer, High-Speed Antagonist
- [x] -- Smoldering Egg // Ashmouth Dragon
- [x] -- Smoldering Werewolf // Erupting Dreadwolf
- [x] -- Solitary Hunter // One of the Pack
- [x] -- Soul Seizer // Ghastly Haunting
- [x] -- Soulcipher Board // Cipherbound Spirit
- [x] -- Spellrune Painter // Spellrune Howler
- [x] -- Starscream, Power Hungry // Starscream, Seeker Leader
- [x] -- Storm the Vault // Vault of Catlacan
- [x] -- Sun-Blessed Guardian // Furnace-Blessed Conqueror
- [x] -- Sunbird Standard // Sunbird Effigy
- [x] -- Suspicious Stowaway // Seafaring Werewolf
- [x] -- Sygg, Wanderwine Wisdom // Sygg, Wanderbrine Shield
- [x] -- Tales of Master Seshiro // Seshiro's Living Legacy
- [x] -- Tangleclaw Werewolf // Fibrous Entangler
- [x] -- Tarkir Duneshaper // Burnished Dunestomper
- [x] -- Tarrian's Journal // The Tomb of Aclazotz
- [x] -- Tavern Ruffian // Tavern Smasher
- [x] -- Teachings of the Kirin // Kirin-Touched Orochi
- [x] -- Terra, Magical Adept // Esper Terra
- [x] -- Tetzin, Gnome Champion // The Golden-Gear Colossus
- [x] -- Thaumatic Compass // Spires of Orazca
- [x] -- The Dragon-Kami Reborn // Dragon-Kami's Egg
- [x] -- The Emperor of Palamecia // The Lord Master of Hell
- [x] -- The Enigma Jewel // Locus of Enlightenment
- [x] -- The Everflowing Well // The Myriad Pools
- [x] -- The Fall of Lord Konda // Fragment of Konda
- [x] -- The Kami War // O-Kagachi Made Manifest
- [x] -- The Legend of Kuruk // Avatar Kuruk
- [x] -- The Legend of Kyoshi // Avatar Kyoshi
- [x] -- The Legend of Roku // Avatar Roku
- [x] -- The Legend of Yangchen // Avatar Yangchen
- [x] -- The Long Reach of Night // Animus of Night's Reach
- [x] -- The Modern Age // Vector Glider
- [x] -- The Restoration of Eiganjo // Architect of Restoration
- [x] -- The Rise of Sozin // Fire Lord Sozin
- [x] -- The Shattered States Era // Nameless Conqueror
- [x] -- Thing in the Ice // Awoken Horror
- [x] -- Thousand Moons Smithy // Barracks of the Thousand
- [x] -- Thraben Gargoyle // Stonewing Antagonizer
- [x] -- Thraben Sentry // Thraben Militia
- [x] -- Throne of the Grim Captain // The Grim Captain
- [x] -- Tireless Hauler // Dire-Strain Brawler
- [x] -- Tithing Blade // Consuming Sepulcher
- [x] -- Tormented Pariah // Rampaging Werewolf
- [x] -- Tovolar's Huntmaster // Tovolar's Packleader
- [x] -- Tovolar, Dire Overlord // Tovolar, the Midnight Scourge
- [x] -- Town Gossipmonger // Incited Rabble
- [x] -- Treasure Map // Treasure Cove
- [x] -- Tribute to Horobi // Echo of Death's Wail
- [x] -- Twinblade Geist // Twinblade Invocation
- [x] -- Twists and Turns // Mycoid Maze
- [x] -- Ulrich of the Krallenhorde // Ulrich, Uncontested Alpha
- [x] -- Ultimecia, Time Sorceress // Ultimecia, Omnipotent
- [x] -- Ultra Magnus, Tactician // Ultra Magnus, Armored Carrier
- [x] -- Ulvenwald Captive // Ulvenwald Abomination
- [x] -- Ulvenwald Mystics // Ulvenwald Primordials
- [x] -- Ulvenwald Oddity // Ulvenwald Behemoth
- [x] -- Unstable Glyphbridge // Sandswirl Wanderglyph
- [x] -- Urabrask // The Great Work
- [x] -- Vance's Blasting Cannons // Spitfire Bastion
- [x] -- Venat, Heart of Hydaelyn // Hydaelyn, the Mothercrystal
- [x] -- Vengeful Strangler // Strangling Grasp
- [x] -- Vildin-Pack Outcast // Dronepack Kindred
- [x] -- Village Ironsmith // Ironfang
- [x] -- Village Messenger // Moonrise Intruder
- [x] -- Village Watch // Village Reavers
- [x] -- Villagers of Estwald // Howlpack of Estwald
- [x] -- Vincent Valentine // Galian Beast
- [x] -- Visage of Dread // Dread Osseosaur
- [x] -- Volatile Arsonist // Dire-Strain Anarchist
- [x] -- Voldaren Bloodcaster // Bloodbat Summoner
- [x] -- Voldaren Pariah // Abolisher of Bloodlines
- [x] -- Voltaic Visionary // Volt-Charged Berserker
- [x] -- Vorinclex // The Grand Evolution
- [x] -- Waterlogged Hulk // Watertight Gondola
- [x] -- Weary Prisoner // Wrathful Jailbreaker
- [x] -- Weaver of Blossoms // Blossom-Clad Werewolf
- [x] -- Wedding Announcement // Wedding Festivity
- [x] -- Welcome to . . . // Jurassic Park
- [x] -- Westvale Abbey // Ormendahl, Profane Prince
- [x] -- Wolfbitten Captive // Krallenhorde Killer
- [x] -- Wolfkin Outcast // Wedding Crasher
- [x] -- Zenos yae Galvus // Shinryu, Transcendent Rival
It looks like Ambitious Farmhand // Seasoned Cathar accidentally got completely deleted instead of getting converted into new format.
Whoops, good catch, fixed.
@Jmlundeen explain this bug: why it requires such strange fixes? It smells bad, there are must not be order dependent spells or code like that.
I agree it's not ideal, but there are already other abilities with similar order dependency, where the ability depends on some aspect of the card that must already be present. #10164 as an example with Spectacle.
The target isn't captured when the DisturbAbility is made so it needs to be created after, at least for now, since previously the back face was being created when the ability was made. Not ideal, and I don't like it, but better to change disturb after converting. Some kind of post-fix needs to happen likely.
I see. Spectacle requires spell ability with all targets and effects cause it use it as a template. Same for disturb and second side spell (inside inner class).
Both abilities must have verify check code like “if try to add to card with empty spell ability/second side then raise error”.
That’s wrong fix. After zone change you must work with card only, not original permanent. Try to use CardUtil.getDefaultCardSideForBattlefield to find real card and search it on battlefield as permanent
That's not going to work because it will just grab the front face. [[Liliana, Heretical Healer]] comes back as back face which won't be caught.
Liliana, Heretical Healer // Liliana, Defiant Necromancer - (Gatherer) (Scryfall) (EDHREC)
{1}{B}{B} Legendary Creature — Human Cleric 2/3 Lifelink Whenever another nontoken creature you control dies, exile Liliana, Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, create a 2/2 black Zombie creature token. :arrows_counterclockwise: Legendary Planeswalker — Liliana 3 +2: Each player discards a card. −X: Return target nonlegendary creature card with mana value X from your graveyard to the battlefield. −8: You get an emblem with "Whenever a creature dies, return it to the battlefield under your control at the beginning of the next end step."
If you don’t control put to battlefield code but need to make sure it really put something then search all card parts (see cardutil and getcardparts). Do not use permanent id. Or just check main card zone - it must be battlefield.
Standard code example to check card zone (object -> card -> main card). It’s used all round and must work with double faces too (compatible with any id source: from main, side or permanent):
Makes sense, I updated the check.
java.lang.IllegalArgumentException: Error, unknown spell type in commander card: TransformFront SpellAbility from Sephiroth, Fabled SOLDIER
at mage.game.command.Commander.<init>(Commander.java:66)
at mage.game.ZonesHandler.placeInDestinationZone(ZonesHandler.java:275)
at mage.game.ZonesHandler.moveCards(ZonesHandler.java:129)
at mage.game.ZonesHandler.moveCard(ZonesHandler.java:58)
at mage.cards.CardImpl.moveToZone(CardImpl.java:449)
at mage.cards.DoubleFacedCard.moveToZone(DoubleFacedCard.java:87)
at mage.cards.CardImpl.moveToZone(CardImpl.java:429)
at mage.game.GameCommanderImpl.initCommander(GameCommanderImpl.java:141)
at mage.game.GameCommanderImpl.init(GameCommanderImpl.java:128)
at mage.game.FreeformUnlimitedCommander.init(FreeformUnlimitedCommander.java:30)
at mage.game.GameImpl.start(GameImpl.java:1063)
at mage.server.game.GameWorker.call(GameWorker.java:35)
at mage.server.game.GameWorker.call(GameWorker.java:16)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Problem happening with a transforming card as Commander.
This should now be fixed. I missed adding the transform to the commander spell abilities.
@Jmlundeen that’s part code about to restrict special spell types cause it used from non hand zone by rules and can’t be activated from command zone. So it must contain all transform types, not only left side:
Hmm ok. Even though it's only ever cast from the front side?
Well, it’s about your new code with right side restrictions. You can add ignore case or raise error about wrong code usage in commander part. It’s important to add docs/errors in “never” use cases