Commit graph

4034 commits

Author SHA1 Message Date
theelk801
2fbd7624b9 Merge branch 'master' into feature/implement-harmonize-ability 2025-04-08 09:20:18 -04:00
Jmlundeen
0df5f17603
[TDM] Implement omen mechanic (#13501)
* Abstract AdventureCard to SingleFaceSplitCard

* Fix AdventureCardSpellImpl

* Finish converting adventure card and adventure spell

* Update Brightcap Badger

change finalize call to adventure card

* Update Darksteel Monolith

being cast from hand condition referencing AdventureCardSpell

* Update Tlincalli Hunter

exiled creature condition referencing AdventureCardSpell

* Update Twice Upon a Time

finalizeAdventure called from Adventure card

* Finish abstracting Adventure

missed some more references to adventure cards

* Implement Omen cards

* Implement Dirgur Island Dragon

* Missed some adventureSpellName references

* OmenCardSpell had wrong comma symbol

* Add tests for Omen Cards

* Rename two part card components

change from SingleFaceSplitCard to CardWithSpellOption

* Update comments and variable name
2025-04-08 08:54:18 -04:00
jmlundeen
8e1805c874 Fix Ward batch event bug
Fixes #13498

getTargetingStackObject wasn't processing all stackObjects in a batch event

added tests for some related cards that also use the method
- Agrus Kos, Eternal Soldier
- Pawpatch Recruit
- Ward Ability
2025-04-05 07:47:24 -05:00
theelk801
ce1ab45c9d update tests 2025-03-31 11:51:34 -04:00
theelk801
f0ec570cb5 add harmonize test 2025-03-31 09:42:25 -04:00
ssk97
969ffa1c98
FDN New Combat Rules (#13279)
* Remove all combat ordering code

* Use MultiAmount division for damage

* Remove damage selection division skipping in tests

* Fix Banding, Multi-block, add tests

* Fix test

* Fix random iteration order, fix new tests

* Add more info to choose dialog, make MultiAmountType class instead of enum

* Don't prompt for trample damage assignment if none possible

* Mark "Assign default damage" on tests, minor other test improvements
2025-03-30 14:42:05 -07:00
xenohedron
c64a56acf7 add test for #13419 2025-03-16 01:09:31 -04:00
xenohedron
fa88a3217d fix #13451 (Nether Traitor), add test 2025-03-16 00:46:11 -04:00
xenohedron
a6b3a20aeb fix Minion of the Wastes multiple replacement (related to f252525c) 2025-03-16 00:17:02 -04:00
xenohedron
8b1b04cd7c add assertion to ninjutsu test 2025-03-16 00:17:02 -04:00
xenohedron
4d1c6def23 fix Mongrel Pack, add test 2025-03-15 18:02:03 -04:00
xenohedron
7b03af3de3 fix #13433 (DoIfCostPaid regression), add test 2025-03-15 17:45:28 -04:00
xenohedron
bf8c8c4e99 fix #13425 (ninjutsu ability), add test 2025-03-15 17:36:46 -04:00
xenohedron
f252525cb8 fix Minion of the Wastes, add test 2025-03-15 16:33:37 -04:00
Grath
a9bffe4d25
Fix missing ProcessAction between the last mana being paid and the spell being cast. (#13396)
This is necessary so that, among other things, the Rain of Riches watcher can see that the last mana of a spell was a Treasure before the spell is cast - at which point it needs to already have Cascade.
2025-03-14 20:45:15 -04:00
Jmlundeen
9aaad5193f
[DFT] Implement Elvish Refueler (#13392) 2025-03-14 07:24:26 +04:00
Grath
419030b681 [NCC] Partially fix Rain of Riches and add tests.
Two tests are failing and ignored because this is only a partial fix, as we will still need to process actions between the last mana being paid and the spell being cast.
2025-02-26 23:12:07 -05:00
Steven Knipe
17e0c82a07 Remove BroodofCockroaches text test (in Verify), uncapitalize CreateDelayedTriggeredAbilityEffect ability rule text 2025-02-20 18:27:17 -08:00
jimga150
2174797c4b
Mu Yanling, Wind Rider - fixed not working second ability (#13361) 2025-02-18 19:57:13 +04:00
Oleg Agafonov
0612431ab2 [PIP] Implement Struggle for Project Purity (part of #11324) 2025-02-08 02:00:43 +04:00
Oleg Agafonov
89be55c816 tests: fixed randomly fail test 2025-02-07 15:13:58 +04:00
Wesley Mauk
b31a6c834a
Shifting Woodland - fixed game error on usage with MDF cards (#13308) 2025-02-07 08:12:30 +04:00
Oleg Agafonov
703d275356 merge fix 2025-02-06 18:01:52 +04:00
Oleg Agafonov
f17cbbe72b AI: improved performance and fixed crashes on use cases with too much target options like "deals 5 damage divided as you choose" (related to #11285):
* added DebugUtil.AI_ENABLE_DEBUG_MODE for better IDE's debugging AI code;
 * it's a target amount optimizations;
 * it's use a grouping of possible targets due same static and dynamic stats (name, abilities, rules, damage, etc);
 * instead of going through all possible combinations, AI uses only meaningful targets from particular groups;
2025-02-06 17:40:22 +04:00
Oleg Agafonov
b4fa6ace66 AI: reworked blockers selections:
* now computer will use simplified 1 vs 1 combat damage simulations to choose better blockers (due better game score after combat);
* it's not a full combat simulation, but support many things like non-stack abilities, damage replacement effects and SBA -- much better than older PT compare (related to #13290);
* now AI correctly use a blockers with deathtouth, indestructible, first/double strike and other abilities;
* chump blocks also supported (chump logic implemented before in 92b7ed8efc, related to #4485);
2025-02-06 07:03:16 +04:00
Oleg Agafonov
7d229e511c tests: added AI performance tests to reproduce bad use cases with too much possible targets 2025-02-05 13:12:22 +04:00
Oleg Agafonov
416beb741c tests: improved load tests (added deck gen from all sets support, added network errors support, e.g. on server crash) 2025-02-05 13:05:37 +04:00
theelk801
e719cd03a3 fix test failure 2025-02-04 11:11:40 -05:00
Oleg Agafonov
690bc36023 tests: improved load tests (better logs) 2025-02-04 14:23:15 +04:00
Oleg Agafonov
2b659cd72c tests: improved load tests (added finish step in result table, fixed outdated game data) 2025-02-04 12:26:24 +04:00
Oleg Agafonov
3405b51aaf tests: improved load tests (improved progress bar, added effects stats) 2025-02-04 11:41:42 +04:00
Oleg Agafonov
f5b901beb4 tests: improved load tests (added creature stats, improved progress bar) 2025-02-04 10:23:00 +04:00
Oleg Agafonov
92b7ed8efc AI: reworked blockers selections:
* fixed game freezes for no-possible block configurations like Menace (#13290);
* fixed computer cheating to ignore block requirements like Menace (now AI will choose all required blockers instead 1);
* improved computer logic for blockers selection (try to sacrifice a creature instead game loose, simple use cases only);
* added freeze protection for bad or unsupported attacker-block configuration;
* refactor: deleted outdated AI code;
2025-02-04 01:14:59 +04:00
Oleg Agafonov
356d677dac tests: added AI reproduceable bug from #13290 2025-02-03 20:01:38 +04:00
theelk801
3776a39683 [DFT] Implement Spikeshell Harrier 2025-02-01 19:21:46 -05:00
Evan Kranzler
ef213b1bef
Implementing "Start your engines!" mechanic (#13259)
* add initial speed handling

* finish speed implementation

* remove skip list

* add initial test

* add some more tests

* change speed initialization to state-based action

* add opponent speed check

* add control change test

* add check for speed 5
2025-02-01 13:49:47 -05:00
Oleg Agafonov
fc159728c7 version bump 2025-02-01 20:16:27 +04:00
Oleg Agafonov
a0a19a6a20 tests: added test for #13002 2025-01-29 01:05:00 +04:00
Oleg Agafonov
36309206a2 Create copy effects - fixed that it can't copy second side of the modal double-faced card (close #11307, close #13269); 2025-01-29 00:51:34 +04:00
Marco Romano
0bcf5f9e03
[DSK] Implement Unable to Scream (#13234)
* Introduced LoseAllAbilitiesAttachedEffect

* Added unit tests for Unable to Scream
2025-01-19 16:09:57 -05:00
Oleg Agafonov
1f7af53dbb tests: added more strictly checks for choice commands order (related to #12044); 2025-01-16 17:26:44 +04:00
Oleg Agafonov
34af53879a Do if cost pay improved:
* added additional hint to the optional pay dialog, so user can split it and remember for auto-answer (see withChooseHint);
* Mana Vault - improved UX, now user can hide an untap cost dialog for already untapped permanent (use right click on buttons, #2656);
2025-01-16 14:14:16 +04:00
Oleg Agafonov
c82511f96f tests: added more strictly checks for choice commands order, fixed wrong commands in old tests (related to #12044); 2025-01-16 08:14:28 +04:00
Marco Romano
b58fbbdd84
[DSK] Implement Acrobatic Cheerleader and per-game trigger limits (#13232) 2025-01-15 18:28:30 +04:00
Oleg Agafonov
39872e2625 AI: fixed that computer can cheat with target selection and choose 1 creature instead multiple required (example: sacrifice, close #13219) 2025-01-12 14:46:16 +04:00
Oleg Agafonov
1f1d1088a1 Turn under control reworked:
- game: fixed game freezes when computer try to take control over another computer or human (added game logs, related to #12878);
 - cheats: improved take and give control commands, now you can give control under yourself to another player;
 - cheats: improved take and give control commands, now you can return control to computer in the same priority;
 - cheats: deleted useless and unused command to activate opponent's ability;
2025-01-11 22:21:58 +04:00
Oleg Agafonov
0505f5159e Turn under control reworked:
- game: added support when a human is take control over a computer player (related to #12878);
 - game: fixed game freezes while controlling player leaves/disconnect on active priority/choose of another player;
2025-01-10 20:20:11 +04:00
Marco Romano
30dac5cc9f
[DSK] Implement Nowhere to Run (#13208)
* [DSK] implemented Nowhere to Run

* [DSK] implemented Nowhere to Run

* NowhereToRun - fixed typo in static test

* NowhereToRun - fixed hexproof effect
2025-01-09 15:07:13 -05:00
xenohedron
9c5c394c75
refactor: TargetCreatureOrPlayer inheritance (#13199)
* update TargetCreatureOrPlayer to be a subclass of TargetPermanentOrPlayer

closes #11161

* fix usages
2025-01-08 22:47:36 -05:00
Oleg Agafonov
0c8d49ce56 merge fix 2025-01-07 20:05:27 +04:00