Commit graph

12666 commits

Author SHA1 Message Date
Oleg Agafonov
3dc606501d AI: improved stability and bug fixes (related to #13290):
- bug's reason: wrong usage of canTarget, add/addTarget, getOpponents, etc;
- fixed that it can target dead players in some use cases (close #13507);
- fixed that it wrongly choose targets in bad/good effects in some use cases;
- fixed that it can't find valid targets in some use cases;
- fixed game freezes and errors with some cards;
2025-04-19 07:04:55 +04:00
Oleg Agafonov
30d44ce869 Improved server's reconnection and drafts stability:
* draft: fixed miss or empty draft panels on reconnect;
* draft: fixed tourney freezes for richman drafts on disconnects;
* draft: fixed tourney freezes on rare use cases with bad connection;
2025-04-18 09:38:52 +04:00
theelk801
5e27be4dfa [SPE] Implement Sensational Spider-Man 2025-04-17 20:52:49 -04:00
theelk801
93b08ef78d [SPE] Implement Venom, Deadly Devourer 2025-04-17 18:14:07 -04:00
theelk801
6932a798d8 [FIN] Implement Cloud, Planet's Champion 2025-04-17 09:51:56 -04:00
xenohedron
a5cd541490 fix #13547
When drawing from the bottom of the library, don't reveal the card just because the top card is revealed
2025-04-16 21:25:48 -04:00
theelk801
d4954bf784 rework effects and abilities which care about controlling your own commander (fixes #13542) 2025-04-16 12:13:15 -04:00
Oleg Agafonov
c0c27c81fa refactor: simplified code (related to 6bf8aedce7) 2025-04-16 10:11:22 +04:00
xenohedron
74d2265c12
refactor: find targeting stack object (#13534)
* refactor: simplify finding targeting stack object
related to #11185, 8e1805c

* clarify docs

---------

Co-authored-by: xenohedron <12538125+xenohedron@users.noreply.github.com>
2025-04-14 10:19:57 -05:00
theelk801
391f0e256b [TDM] fix Call the Spirit Dragons not working 2025-04-14 10:51:01 -04:00
theelk801
5876040be7 fix harmonize implementation (fixes #13531) 2025-04-14 10:19:08 -04:00
jmlundeen
121845ad93 [TDC] Implement Thundermane Dragon 2025-04-13 17:16:38 -05:00
theelk801
af512ce3f4 [TDM] Implement Rite of Renewal 2025-04-13 18:09:01 -04:00
theelk801
e54210ad2e [TDM] Implement Desperate Measures 2025-04-13 18:00:14 -04:00
jmlundeen
4d38f6b942 Fix Riptide Gearhulk not bouncing all targets
Reported on Discord, PutIntoLibraryNFromTopTargetEffect was only processing the first target. The effect now supports multiple targets.
2025-04-12 14:59:25 -05:00
jmlundeen
6335cee30c [TDC] Implement Kotis, Sibsig Champion
* Give ability to add another cost to CastFromGraveyardOnceEachTurnAbility
2025-04-12 10:35:41 -05:00
androosss
482745928e
implement [TDM] All-Out Assault (#13512)
- new main phase condition
- Added when you attack delayed triggered ability
2025-04-11 22:39:21 -04:00
theelk801
92e37a05aa [TDC] Implement Rampart Architect 2025-04-11 18:34:48 -04:00
theelk801
1ace958057 [TDC] Implement Broodcaller Scourge 2025-04-11 12:19:45 -04:00
Oleg Agafonov
b819545744 bump version 2025-04-11 17:50:12 +04:00
Jmlundeen
1b06813997
Reworked Suspend ability: (#13527)
* Updated Delay and Gandalf Of The Secret Fire to get the main card since they target spells

* Suspend now properly lets you play either side of mdfc and spell parts from adventure/omen cards utilizing CardUtil.castSpellWithAttributesForFree method

* Removed extra code in SuspendPlayCardEffect since the referenced bug for Epochrasite does not seem to appear. Removed related gainedTemporary variable also.

* Added tests for Omen and Suspend With Taigam, Master Opportunists as well as an Epochrasite test for recasting after suspend.
2025-04-11 15:22:13 +04:00
theelk801
9285b7e78a [TDM] Implement Perennation 2025-04-10 18:26:13 -04:00
theelk801
5ae4d7c0bc [TDM] Implement Severance Priest 2025-04-10 15:52:11 -04:00
Evan Kranzler
4d8028adb9
[TDM] Implement harmonize mechanic (#13475)
* add initial ability

* remove skip list

* update harmonize ability

* add reminder text

* remove skip list

* add harmonize test

* update tests

* create base class for flashback-like abilities
2025-04-10 13:39:21 -04:00
theelk801
f3ffca26fa [TDC] Implement Redoubled Stormsinger 2025-04-10 08:47:59 -04:00
theelk801
3b959c25b9 fix verify failure 2025-04-10 08:23:18 -04:00
theelk801
2363fd6390 [TDC] Implement Arbor Adherent 2025-04-10 07:44:23 -04:00
Oleg Agafonov
dcdf0ca4a5 Choose a player at random - fixed that it wrongly choose same player (example: Scrambleverse, close #12679, close #13526);
Inniaz, the Gale Force - fixed that it wrongly choose left/right player (close #13526);
2025-04-10 12:42:42 +04:00
Jmlundeen
e552a54e6f
[TDM] Focus the Mind and Sage of the Skies (#13524)
* [TDM] Implement Focus the Mind
* [TDM] Implement Sage of the Skies
* Extracted cast another spell this turn condition from Rally the Monastery
* Add condition to Rally the Monastery and Slick Sequence
2025-04-09 13:16:48 -05:00
theelk801
4c8337e0e5 [TDM] Implement Rot-Curse Rakshasa 2025-04-09 13:52:07 -04:00
Evan Kranzler
56a05a7843
Rework implementation of anchor words (#13518)
* refactor anchor word implementation

* fix error

* [TDM] Implement Windcrag Siege
2025-04-09 13:24:57 -04:00
theelk801
3c6e055f41 [TDC] Implement Become the Avalanche 2025-04-09 08:36:38 -04:00
theelk801
d567582cf0 [TDC] Implement Aligned Heart 2025-04-09 08:12:34 -04:00
theelk801
04f9ab75ba [TDM] Implement Krumar Initiate 2025-04-08 17:47:02 -04:00
Oleg Agafonov
d674c592ea refactor: improved Aladdin's Lamp 2025-04-08 23:11:43 +04:00
Oleg Agafonov
36cec8961e refactor: better naming in CardsInControllerHandCount 2025-04-08 22:42:31 +04:00
Oleg Agafonov
bae3089abb Reworked cost adjuster logic for better support of X and cost modification effects:
Improves:
* refactor: split CostAdjuster logic in multiple parts - prepare X, prepare cost, increase cost, reduce cost;
* refactor: improved VariableManaCost to support min/max values, playable and AI calculations, test framework;
* refactor: improved EarlyTargetCost to support mana costs too (related to #13023);
* refactor: migrated some cards with CostAdjuster and X to EarlyTargetCost (Knollspine Invocation, etc - related to #13023);
* refactor: added shared code for "As an additional cost to cast this spell, discard X creature cards";
* refactor: added shared code for "X is the converted mana cost of the exiled card";
* tests: added dozens tests with cost adjusters;

Bug fixes:
* game: fixed that some cards with CostAdjuster ignore min/max limits for X (allow to choose any X, example: Scorched Earth, Open The Way);
* game: fixed that some cards ask to announce already defined X values (example: Bargaining Table);
* game: fixed that some cards with CostAdjuster do not support combo with other cost modification effects;
* game, gui: fixed missing game logs about predefined X values;
* game, gui: fixed wrong X icon for predefined X values;

Test framework:
* test framework: added X min/max check for wrong values;
* test framework: added X min/max info in miss X value announce;
* test framework: added check to find duplicated effect bugs (see assertNoDuplicatedEffects);

Cards:
* Open The Way - fixed that it allow to choose any X without limits (close #12810);
* Unbound Flourishing - improved combo support for activated abilities with predefined X mana costs like Bargaining Table;
2025-04-08 22:39:10 +04:00
jmlundeen
63781e9ca1 Missed some references to instanceof AdventureCard
replaced with CardWithSpellOption
2025-04-08 09:49:08 -05:00
theelk801
2e6e3cd4e7 [TDM] Implement Mardu Siegebreaker 2025-04-08 09:16:50 -04:00
theelk801
235e5200d0 [TDM] Implement Warden of the Grove 2025-04-08 08:54:27 -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
Balázs Kristóf
6f524b69c0
[FIN] Implement Stiltzkin, Moogle Merchant (#13443) 2025-04-05 14:13:23 -04:00
padfoothelix
eac265f4f7
[WHO] Implement Fugitive of the Judoon (#13467) 2025-04-05 14:10:45 -04:00
androosss
97b5341688
- Implemented Highspire Bell-Ringer (#13495)
- Commonized second spell condition
2025-04-05 13:44:16 -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
androosss
b6421e4b6c
images: added new tokens from promo and other sets, fixed miss images (#13492)
* add missing tokens images
* fix broken card images
* remove tokens without image
* remove copy tokens references (embalm, eternalize)
2025-04-02 15:13:25 +04:00
androosss
730bd8e63d
refactor: improved tokens structure (#13487)
- removed duplicate tokens
- fixed names of some tokens
- corrected tokens used in tokens database
2025-04-01 13:58:05 +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
theelk801
abcabefbd9 [TDM] Implement Molten Exhale 2025-03-30 17:05:20 -04:00
PurpleCrowbar
fa909b2b40 Add TDM token images for implemented tokens 2025-03-29 01:52:53 +00:00