Bug fixes:
Backwoods Survivalists
Draconic Intervention
Monstrous Step
Skulking Killer
New cards:
Abandoned Campground
Abhorrent Oculus
Acrobatic Cheerleader
Altanak, the Thrice-Called
Appendage Amalgam
Arabella, Abandoned Doll
Attack-in-the-Box
Balemurk Leech
Balustrade Wurm
Baseball Bat
Bashful Beastie
Bear Trap
Bedhead Beastie
Betrayer's Bargain
Blazemire Verge
Bleeding Woods
Boilerbilges Ripper
Break Down the Door
Broodspinner
Cackling Slasher
Cautious Survivor
Clammy Prowler
Clockwork Percussionist
Commune with Evil
Cracked Skull
Cult Healer
Curator Beastie
Cynical Loner
Daggermaw Megalodon
Dashing Bloodsucker
Defiant Survivor
Deluge of Doom
Demolisher Spawn
Demonic Counsel
Disturbing Mirth
Diversion Specialist
Doomsday Excruciator
Duskmourn's Domination
Emerge from the Cocoon
Enduring Courage
Enduring Curiosity
Enduring Innocence
Enduring Tenacity
Enduring Vitality
Enter the Enigma
Entity Tracker
Erratic Apparition
Etched Cornfield
Exorcise
Fear of Being Hunted
Fear of Exposure
Fear of Failed Tests
Fear of Falling
Fear of Infinity
Fear of Isolation
Fear of Lost Teeth
Fear of Missing Out
Fear of Surveillance
Fear of the Dark
Final Vengeance
Flesh Burrower
Floodfarm Verge
Floodpits Drowner
Formless Genesis
Frantic Strength
Friendly Ghost
Friendly Teddy
Get Out
Ghostly Dancers
Giggling Skitterspike
Give In to Violence
Gleeful Arsonist
Glimmer Seeker
Glimmerburst
Glimmerlight
Gloomlake Verge
Gloomlake Verge
Grasping Longneck
Gremlin Tamer
Hand That Feeds
Hardened Escort
Haunted Screen
Hedge Shredder
Horrid Vigor
House Cartographer
Hushwood Verge
Impossible Inferno
Infernal Phantom
Innocuous Rat
Inquisitive Glimmer
Insidious Fungus
Irreverent Gremlin
Jump Scare
Kaito, Bane of Nightmares
Keys to the House
Kona, Rescue Beastie
Lakeside Shack
Leyline of Hope
Leyline of Mutation
Leyline of Transformation
Lionheart Glimmer
Live or Die
Living Phone
Malevolent Chandelier
Manifest Dread
Marina Vendrell
Marina Vendrell's Grimoire
Metamorphosis Fanatic
Midnight Mayhem
Most Valuable Slayer
Murky Sewer
Neglected Manor
Optimistic Scavenger
Overlord of the Balemurk
Overlord of the Boilerbilges
Overlord of the Floodpits
Overlord of the Hauntwoods
Overlord of the Mistmoors
Patched Plaything
Patchwork Beastie
Peculiar Lighthouse
Peer Past the Veil
Persistent Constrictor
Phenomenon Investigators
Piggy Bank
Piranha Fly
Popular Egotist
Possessed Goat
Ragged Playmate
Raucous Carnival
Razorkin Hordecaller
Razorkin Needlehead
Razortrap Gorge
Redress Fate
Resurrected Cultist
Ripchain Razorkin
Rite of the Moth
Rootwise Survivor
Sadistic Shell Game
Savior of the Small
Say Its Name
Scrabbling Skullcrab
Shardmage's Rescue
Sheltered by Ghosts
Shepherding Spirits
Shrewd Storyteller
Shroudstomper
Skullsnap Nuisance
Slavering Branchsnapper
Soaring Lightbringer
Spectral Snatcher
Spineseeker Centipede
Split Up
Splitskin Doll
Stalked Researcher
Strangled Cemetery
Suspended Sentence
The Jolly Balloon Man
The Swarmweaver
The Wandering Rescuer
Thornspire Verge
Toby, Beastie Befriender
Trapped in the Screen
Tunnel Surveyor
Turn Inside Out
Twist Reality
Twitching Doll
Tyvar, the Pummeler
Unsettling Twins
Unwanted Remake
Ursine Monstrosity
Valgavoth's Faithful
Valgavoth's Lair
Vanish from Sight
Vengeful Possession
Vicious Clown
Vile Mutilator
Violent Urge
Wary Watchdog
Wickerfolk Thresher
Wildfire Wickerfolk
Winter's Intervention
Winter, Misanthropic Guide
Withering Torment
Withering Torment
Changes made to alchemy innistrad to have the correct multiverseid values and better image quality
Nahiri, the Unforgiving
Kaervek's Spite
Ox Drover
Volrath, the Shapestealer
Garna, Bloodfist of Keld
randomCommanderFromFile.txt
The randomcommander from file feature allows players to load a commander deck from a predefined list stored in an external file. Here’s how it works:
File Loading: The game attempts to open a file named commander.txt located in the User/commander/ directory. This file contains a list of possible commander IDs or names.
Default Handling: If the file doesn't exist or is empty, the game creates the file and writes a default commander ID (670972) to it. The file is then re-opened for further processing.
Commander ID Extraction: The game reads each line in the file, ignoring comments (lines starting with #). It validates whether the line is a numeric commander ID. If not, the game tries to convert it from a card name to an ID using function getMTGId().
Filtering and Validation: The game then filters out invalid IDs (e.g., IDs that do not correspond to an existing card in the game's database). If no valid IDs remain, it defaults to using the same commander ID (670972).
Random Selection: Once a list of valid commander IDs is compiled, the game randomly selects one ID from this list to be used as the commander for the player.
Deck Construction: A temporary deck is constructed using the selected commander, along with a predefined number of lands and spells that match the commander's colors.
Summary
The random commander from file feature provides a way to customize and randomize the commander used in a game based on an external file. This adds variety and replayability, as each game can have a different commander selected from the list, allowing for different strategies and experiences.
Loads a player with a randomly selected commander from a specified file.
* This function reads a file ('User/commander/commander.txt') that contains a list of potential commander IDs or names.
* It selects one randomly to be used as the player's commander. If the file doesn't exist, or no valid commanders are found, a default commander ID (670972) is used.
* Can read the commander name and a multiverseID
* Lines that start with '#' are ignored
As long as your life total is less than or equal to half your starting life total, this has indestructible
Agrus Kos, Spirit of Justice
Alloy Animist
Bane, Lord of Darkness
Bhaal, Lord of Murder
Fighter Class
Flamerush Rider
Greasefang, Okiba Boss
Hydroid Krasis
=Ilharg, the Raze-Boar
Mangara, the Diplomat
Myrkul, Lord of Bones
Omo, Queen of Vesuva
Ragavan, Nimble Pilferer
Titania's Song
Vedalken Humiliator
Winota, Joiner of Forces
Zara, Renegade Recruiter
Zoraline, Cosmos Caller
Aethermage's Touch
Dragon Mask
Rakalite
Nahiri, the Harbinger
Had to use the treasure defined as primitive since the Fable of the Mirror-Breaker token won't create a treasure otherwise.
Changes:
Rat Colony
Shadow of the Second Sun
Sphinx of the Second Sun
Viashino is no longer a creature type. The postcombat main phase is now referred to as the second main phase.
Updated Rules.cpp to exclude the Viashino type from random kindred decks.
Bug Fixes:
Fable of the Mirror-Breaker
Rat Colony
Plumb the Forbidden
Oblivion Stone
Due to card type association, Dryad Arbor is placed at the end. Any other card that associates two super types in this manner should also be placed at the end of the primitive to avoid changeling thinking that “forest” is a creature type. This applies to reconfigure cards as well, to avoid making changelings equipment.
Changed ownerHand to just hand, inspecting the source code it is the same
Individual cards bug fixes:
Arbiter of the Ideal have to misspell manifest
Curate Must Draw After Surveil
Deface casting restrictions
Discombobulate
Dovin, Grand Arbiter
Downsize
Dragon Throne Of Tarkir
Dragonshift
Dregs of Sorrow
Elder Spawn
Elvish Mariner
Faerie Mastermind
Fecundity
Finale Of Revelation
Flame Channeler
Flameskull
Frostwalk Bastion frozen ability
Gate To The Afterlife
Invade the City is still on the stack while you count your instant and sorcery cards in your graveyard. It doesn't count itself.
Kabira Evangel doesn't seem to work with a may condition
Krosan Verge
Livewire Lash
Meteor Blast
Midnight Clock
Mindlink Mech
Mirror Match
Morality Shift removed
Overwhelming Encounter removed
Peace Talks removed
Quiet Disrepair removed
Ravenous Gigantotherium removed
Reign Of Chaos
Rout
Sanctuary Blade removed
Sculpted Sunburst
Seeds Of Innocence
Shackles Of Treachery
Shared Summons
Sokenzan Smelter
Valiant Endeavor removed
Vraska, Betrayal's Sting
I had to update the _cards.dat files for The Lord of the Rings: Tales of Middle-earth (LTR) and Tales of Middle-earth Commander (LTC) since they didn't have the correct official multiverse IDs. I'm sorry if this affects past decks, but I had to make these changes because it was difficult to debug cards within the set and obtain their respective tokens.
Hisoka, Minamo Sensei
Ragemonger text
Igneous Inspiration and other instants/serceries that target an opponents permanent
Mind Rake
Keeper of the Accord
Aria Of Flame
Arixmethes, Slumbering Isle, Annoying
Battlefield Scrounger
Bloodchief Ascension
Breathless Knight
Breeches, Brazen Plunderer
Doubling Season
Contaminant Grafter
Cursed Rack was working even after being destroyed
Leovold, Emissary of Trest
soldevi digger
raze-boar returned a card from the graveyard
Hatchery Spider is a cast
Estrid, the Masked had to create a flavorful workaround
Atemsis, All-Seeing not exaclty the effect
Nothic
Thunderwave crashing and not working any iteration
Kuldotha Flamefiend
The effect "Whenever one or more +1/+1 counters are put" should be coded as @totalcounteradded(1/1) to to avoid triggering from a single instance that puts multiple counters.
Updated the BLC file to include the alternative layout cards.
Rakdos the Defiler
Jin-Gitaxias, Progress Tyrant
Jousting Lance
Leaf Drum Controlled By The Ai
Spectacle as a macro causes bugs
Sword of the Paruns
Suit Up
Lurrus of the Dream-Den
Double square brackets was causing bugs.
Changed cards with the effect "Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. (It can attack and {T} this turn.)"
I had to modify how the _cards.dat files are created to incorporate variant layouts of adventures, aftermath, and split cards. They are now showing in the collection, but you will need to download the images again.
Rootless Yew
Repel Intruders
Resplendent Angel
Karn, Scion of Urza
when this creature dies, put its counters on target creature you control
Shiny Impetus
Witch of the Moors
Parish-Blade Trainee
Enduring Bondwarden
Marauding Maulhorn