* - AI: AttachAi should avoid enchanting or equipping crewed vehicles
* - Attempt to detect attachments that can attach to things other than creatures.
* - Clean up the old (and disabled) version of the puzzle file.
* - AI NeedsToPlay hint for Traverse the Outlands.
* - AI: ChangeZone should bail if X=0 in ChangeNum
* - Improved Blitz AI support (will cast in Main 1 if viable).
- Hold for Ransom AI hint to actually use the ability when able.
- Basic AI support for Grisly Sigil so that at least it doesn't fizzle.
- Basic BranchAi framework, currently will mostly just return true, but may be used for special logic when needed.
* - Only choose from opponent's cards for Grisly Sigil.
* - Simplify implementation.
* - Minor style fix.
* - Fix rankings for Tura Kennerud, Skyknight
* - Implement simple logic for revealing the cards to AI through the memory set.
- Implement an example logic (for Delver of Secrets) where it matters.
* - Change the comment for REVEALED_CARDS
* - Simplify the implementation for reveal with List<CardView>
* - Use confirmAction params to pass the revealed cards to PeekAndRevealAi.
* - Fix imports.
* - AI: Account for transformable cards (e.g. Incubator tokens) when looking for possible defenders.
* - Check if the transformed card is actually a creature
* - Some recommended improvements to the logic
- Comment out a block of code which might not be as useful under the current rules and with contemporary cards anymore
* - Style fix
* - Attempt to count the total mana spent on transforming stuff when determining how many extra defenders are available.
* - Check pay costs for Animate as well as for Transform.
- NPE guard for pay costs check.
* - Improve AI playability for Nissa, Genesis Mage.
* - Check the root ability for Planeswalker costs in activateForCost.
- UntapAi: Reset targets earlier so that they don't linger on the SA (fixes the AI mistakenly assuming that something has already been targeted by the API when just starting a new iteration of the check).
* - Fix imports.
* - Fix the name of the swamp tribal town.
* - Update deck conversion toolchain to the one that was used for the May 2023 MTGDecks.net archive update.
* - Evaluate creature spells when deciding priority for two spells with the same CMC
* - Evaluate the card based on its state.
* - Evaluate the card based on its state, wrapper approach.
* - Fix the name of the swamp tribal town.
* - Fix AILogic$ Fight when checked from a trigger.
* - Move the code to a better location.
* - Only return in the FightAi branch if canFightAi succeeded.
* - Remove a comment for now, since the AI logic check is different compared to the one in checkApiLogic.
* - First draft of (very sketchy) Battle AI code.
* - Imports fix.
* - Slightly cleaner refreshCombatants.
* - Update Combat to allow the protecting player to participate in declaring blocks to defend a battle.
* - Update AiBlockController in order to allow the AI to participate in defending battles it's protecting.
* Clean up
* - Minor cleanup.
* Fix checking backside
* Add TODO
* Fix missing combat removal
* - Suggested minor cleanup.
* - Fix imports.
* - Improve support for battles in getAllPossibleDefenders.
* - AI: prefer own Battles before choosing allied Battles.
* Fix ClassCastException
---------
Co-authored-by: TRT <>