Commit graph

4077 commits

Author SHA1 Message Date
Susucre
ba395c8385
implement [FIC] Edgar, Master Machinist (#13676) 2025-05-30 15:11:43 +02:00
Susucre
0ac37617d1
implement [FIN] Sorceress's Schemes (#13694) ; small refactor of TargerCard 2025-05-30 14:51:31 +02:00
xenohedron
341479c36b fix and test Stern Judge 2025-05-29 01:24:43 -04:00
Evan Kranzler
abb88e9527
[FIN] Implement Gogo, Master of Mimicry (#13686)
* [FIN] Implement Gogo, Master of Mimicry

* add test

* fix text

* move abstract method definition to interface where it belongs
2025-05-27 22:01:53 -04:00
Evan Kranzler
136988de29
[FIN] Implement Edgar, King of Figaro, rework coin flips (#13672)
* add method for multiple coin flips

* [FIN] Implement Edgar, King of Figaro

* add extra note

* update coin flip logic

* add test
2025-05-27 21:56:23 -04:00
Evan Kranzler
e1f4e9db59
[FIN] Implement Ancient Adamantoise (#13670)
* [FIN] Implement Ancient Adamantoise

* change effect type

* add test
2025-05-27 21:56:07 -04:00
theelk801
85d85a4b17 [FIN] Implement Memories Returning 2025-05-27 16:58:24 -04:00
Susucre
43c45238d0
refactor and test 'greatest [quality] among [permanent filter]' (#13666) 2025-05-25 18:58:53 +02:00
Susucre
0b6a2b2546 refactor and test 'Scry X' effects
Fixes #13667
2025-05-25 17:53:06 +02:00
Susucre
a4f22f21cf fix split cards interaction with Feather, the Redeemed and the like
Fixes #12353
Fixes #13665
2025-05-25 16:06:44 +02:00
Oleg Agafonov
e320bf241c GUI, game: added source info in "choose number/amount" dialogs, added auto-choose for single possible value (part of #13638); 2025-05-17 21:18:45 +04:00
theelk801
748c428202 fix test failures 2025-05-16 15:01:30 -04:00
Susucre
a9af84f533
implement [FIN] Vivi Ornitier ; limit mana computation for "only once per turn" abilities (#13639)
fixes #10930
2025-05-16 19:45:01 +02:00
Oleg Agafonov
66db821437 refactor: combined announceX methods in one, improved X message and selection for AI (part of #10330) 2025-05-16 19:34:57 +04:00
Oleg Agafonov
133e4fe425
other: reworked target selection: (#13638)
- WIP: AI and multi targets, human and X=0 use cases, human and impossible targets use cases;
- improved stability and shared logic (related to #13606, #11134, #11666, continue from a53eb66b58, close #13617, close #13613);
- improved test logs and debug info to show more target info on errors;
- improved test framework to support multiple addTarget calls;
- improved test framework to find bad commands order for targets (related to #11666);
- fixed game freezes on auto-choice usages with disconnected or under control players (related to #11285);
- gui, game: fixed that player doesn't mark avatar as selected/green in "up to" targeting;
- gui, game: fixed small font in some popup messages on big screens (related to #969);
- gui, game: added min targets info for target selection dialog;
- for devs: added new cheat option to call and test any game dialog (define own dialogs, targets, etc in HumanDialogsTester);
- for devs: now tests require complete an any or up to target selection by addTarget + TestPlayer.TARGET_SKIP or setChoice + TestPlayer.CHOICE_SKIP (if not all max/possible targets used);
- for devs: added detail targets info for activate/trigger/cast, can be useful to debug unit tests, auto-choose or AI (see DebugUtil.GAME_SHOW_CHOOSE_TARGET_LOGS)
2025-05-16 13:55:54 +04:00
theelk801
1a62ea36bb [FIN] Implement Zanarkand, Ancient Metropolis 2025-05-11 11:45:42 -04:00
Susucre
826830b905 Implement [FIC] Hildibrand Manderville 2025-05-09 18:40:10 +02:00
Evan Kranzler
5a7d6805e0
[WHO] Implement Barbara Wright (#13602)
* [WHO] Implement Barbara Wright

* add test

* add more tests

* update reminder text
2025-05-08 12:38:10 -04:00
Susucre
f90350c0c5 Implement [40K] Lucius the Eternal 2025-05-07 22:31:10 +02:00
Oleg Agafonov
a53eb66b58 other: reworked target selection (now it use same logic and methods in all places), fixed AI and selection freezes in some use cases (related to #13606, #11285) 2025-05-07 17:34:36 +04:00
Oleg Agafonov
00dc6f4742 refactor: removed useless getNumberOfTargets from Target (replaced with getMinNumberOfTargets) 2025-05-07 02:55:02 +04:00
Evan Kranzler
264eb58644
Rework cards which exile cards and add suspend to them (Ready for review) (#13600)
* rework effects which exile cards and give suspend

* fix test failure

* remove extra zone change

* [WHO] Implement The Wedding of River Song

* [WHO] Implement The Eleventh Doctor

* [WHO] Implement The Parting of the Ways
2025-05-06 17:49:43 -04:00
Susucre
507991b9e2
Implement [DSK] Valgavoth, Terror Eater (#13593) 2025-05-05 20:37:57 +02:00
Susucre
7cbd396e39 fix and test [C21] Incarnation Technique
Incarnation Technique was not processing trigger properly inbetween the mill and return.

part of #13601
2025-05-05 20:04:04 +02:00
Susucre
bc2ba3e4eb Implement [40K] The Red Terror 2025-05-03 17:37:50 +02:00
Oleg Agafonov
d0fd0c4023 tests: added test and todo for Devoted Druid bug (related to #13583) 2025-04-30 07:45:18 +04:00
Oleg Agafonov
4941a0dd8f Tombstone Stairwell - fixed that it doesn't destroy tokens on leaves the battlefield 2025-04-30 06:48:12 +04:00
theelk801
3281f214ab fix test failure 2025-04-28 11:28:17 -04:00
Oleg Agafonov
49c28458ec Can block any number of creatures - fixed that it can be broken with some of "can block an additional creature" effects 2025-04-27 23:34:58 +04:00
Oleg Agafonov
db9bdc05c2 GUI, game: fixed that attacking creature draws a wrong colored arrow after blocked creature removed (must be gray, close #11894) 2025-04-26 00:07:41 +04:00
jmlundeen
b2d8c12ca3 Fix Sigurd, Jarl of Ravensthorpe last ability trigger
* Didn't trigger on entering sagas
* Was checking for P1P1 counters
2025-04-24 10:58:10 -05:00
Oleg Agafonov
0b4dbaabba Ketramose, the New Dawn - fixed that it doesn't trigger on itself (miss setLeavesTheBattlefieldTrigger, related to eafbd5a95c) 2025-04-23 05:38:14 +04:00
jmlundeen
eafbd5a95c Fix Ketramose not seeing itself get exiled 2025-04-22 18:41:18 -05:00
xenohedron
0e63c0a75a refactor: fix name of test class 2025-04-16 20:58:38 -04:00
xenohedron
9e55771b1f add test for "becomes blocked" ability 2025-04-16 20:30:25 -04:00
jmlundeen
b32fd1b9d7 Rename Universes Within cards
Update test referencing Forge, Neverwinter Charlatan

[STX] Implement Bohn, Beguiling Balladeer

[STX] Implement Casal, Lurkwood Pathfinder

[STX] Implement Themberchaud

[STX] Implement Jurin, Leading the Charge

[STX] Implement Evin, Waterdeep Opportunist

[STX] Implement Mathise, Surge Channeler

[STX] Implement Rashel, Fist of Torm
2025-04-15 06:56:26 -05:00
earchip94
9261c1362e
implement [DSK] Osseous Sticktwister (#13421)
---------

Co-authored-by: xenohedron <12538125+xenohedron@users.noreply.github.com>
2025-04-14 01:36:42 -04:00
earchip94
187703a1fc
implement [BLB] Clement, the Worrywort (#13444)
---------

Co-authored-by: xenohedron <12538125+xenohedron@users.noreply.github.com>
2025-04-13 20:56:54 -04:00
jmlundeen
5cf0d8ad10 [TDM] Implement Hundred-Battle Veteran 2025-04-11 09:23:31 -05:00
jmlundeen
089d8c1be0 [TDM] Implement Mistrise Village 2025-04-11 09:23:26 -05: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
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
Oleg Agafonov
0b4c9d90b7 merge fix 2025-04-10 12:57:49 +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
0848382dcd
[TDM] Implement Dragonfire Blade (#13522)
* [TDM] Implement Dragonfire Blade
2025-04-09 13:15:59 -05:00
jmlundeen
178bd22025 [TDM] Implement Host of the Hereafter 2025-04-09 13:12:29 -05: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
Oleg Agafonov
0a1bf47434 AI: fixed game freeze on cards with combat triggers (close #13342) 2025-04-09 02:21:29 +04:00
Oleg Agafonov
6cf1f4af3d refactor: improved Aladdin's Lamp 2025-04-08 23:02:49 +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