Commit graph

4567 commits

Author SHA1 Message Date
Grath
145bda842b
[DSK] Implement Hauntwoods Shrieker, added support to reveal face down permanents (#13277)
* [DSK] Implement Hauntwoods Shrieker.
* Change RevealedView and PlayerImpl.revealCards to reveal face-down permanents.
* Fix #13273 using the new RevealCards capability.
2025-02-07 19:18:31 +04:00
Oleg Agafonov
9f2cfc9e09 tests: added runtime check for OrTriggeredAbility (related to #12826, 13309) 2025-02-07 14:34:45 +04:00
Oleg Agafonov
25e4930bd5 Number of card types in graveyards - added card hint for cards like Tarmogoyf 2025-02-07 07:37:27 +04:00
Oleg Agafonov
d018566324 Dredge - fixed game error in some use cases 2025-02-06 22:23:27 +04:00
theelk801
194ff4b073 [DFT] Implement Thunderhead Gunner 2025-02-04 13:51:06 -05:00
theelk801
d098ca5346 [DFT] Implement Redshift, Rocketeer Chief 2025-02-04 10:50:42 -05:00
Oleg Agafonov
3405b51aaf tests: improved load tests (improved progress bar, added effects stats) 2025-02-04 11:41:42 +04:00
theelk801
cf6ba1895a [DFT] Implement Cryptcaller Chariot 2025-02-03 11:35:07 -05:00
Oleg Agafonov
58fbfdd529 refactor: improved usage of getOpponents to ignore leaved players in one short effects 2025-02-03 17:46:57 +04: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
theelk801
293ddd7016 [DFT] rework max speed ability 2025-01-31 13:56:08 -05:00
theelk801
436a0fd2ed [DFT] Implement Gastal Thrillroller 2025-01-31 10:27:46 -05:00
theelk801
660bc0d6b4 [DFT] Implement Howler's Heavy 2025-01-31 10:27:46 -05:00
theelk801
3f3dfa83f1 [DFT] Implement Deathless Pilot 2025-01-31 10:27:46 -05:00
Grath
4dbce1132c Fix typo in method name. 2025-01-30 13:33:06 -05:00
Oleg Agafonov
de19bd56cb refactor: fixed copy constructor in some dynamic values 2025-01-25 01:11:35 +04:00
Grath
7bfb0d2dec [DRC] Implement Prophet of the Scarab
Also adds a DynamicValue that finds the largest of multiple DynamicValues.
2025-01-24 15:47:17 -05:00
theelk801
4b5bf3e1de [DFT] Implement Cloudspire Captain 2025-01-24 12:25:50 -05:00
theelk801
59c1a32697 [DFT] Implement Streaking Oilgorger 2025-01-23 23:07:34 -05:00
theelk801
5738f582ca [DFT] Implement Prowcatcher Specialist 2025-01-23 11:51:53 -05:00
Oleg Agafonov
e6ae7e9114 refactor: fixed wrong copy code of some fields 2025-01-22 19:35:43 +04:00
Oleg Agafonov
3f79ffa21a refactor: improved cards hints support for combined triggers like OrTriggeredAbility 2025-01-22 19:06:05 +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
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
Cameron Merkel
5d4112c45d
Awakened Skyclave & Grond, The Gatebreaker - fixed that it doesn’t give a land type (#13229) 2025-01-15 18:32:00 +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
a5c354f960 You may play an additional land - added card hint to all lands about played count and max limit (#13216) 2025-01-10 22:04:21 +04:00
Oleg Agafonov
c076f4925f Turn under control reworked:
- game: added support for human games (cards like Emrakul, the Promised End, #12878);
 - game: added support of 720.1. to reset control in the turn beginning instead cleanup step (related to #12115);
 - game: added game logs for priorities in cleanup step;
 - game: fixed game freezes and wrong skip settings usages (related to #12878);
 - gui: added playable and choose-able marks for controlling player's cards and permanents, including switched hands;
 - gui: added controlling player name in all choice dialogs;
 - info: control of computer players is it not yet supported;
2025-01-07 12:38:01 +04:00
Grath
9055179f77 [PIP] Implement Yes Man, Personal Securitron 2024-12-18 15:15:34 -05:00
Cameron Merkel
73b63d14ad
TargetAmount refactors (#13128)
* Add minimum and maximum target counts as parameters for TargetAmount and its subclasses; update/add several rules comments (and one actual text) for clarity; remove unused imports

* Get amount+description from target instead of parameters for DistributeCountersEffect and DamageMultiEffect; additions to TargetImpl.getDescription to accommodate

* Create separate method to check if "any number" phrasing should be used, override it in TargetAmount

* Check instanceof TargetAmount before casting

* Add new constructors to chain off of for TargetCreaturePermanentAmount & TargetCreatureOrPlaneswalkerAmount

* Fix text for Storm the Seedcore

* Use Integer.MAX_VALUE instead of 0 to represent no maximum targets

* Add comment about getUseAnyNumber()

* Use amount-only constructors in some TargetAmount subclasses, add clarifying documentation

* Fix a few calls

* Require more specific filters
2024-12-17 19:23:18 -05:00
Oleg Agafonov
4bce1e0a9a When you cast this spell - fixed that it required double cost for cards with alternative costs like Evoke (example: Nulldrifter, #12843) 2024-12-14 21:47:55 +04:00
Oleg Agafonov
ea0b0915a5 Triggered abilities - fixed that sacrice trigger doesn't work on itself (related to #13089, regression from #13088) 2024-12-14 16:59:20 +04:00
Oleg Agafonov
b855434a24 refactor: fixed dies events support in single cards (part 8, related to #13089, continue from #13088); 2024-12-14 15:48:32 +04:00
xenohedron
94db57e9d4 cleanup obsolete comment 2024-12-08 20:27:17 -05:00
Oleg Agafonov
8af7a492c8 refactor: fixed dies events support in single cards (part 7, related to #13089, continue from #13088); 2024-12-07 14:39:52 +04:00
Oleg Agafonov
2949444089 refactor: removed useless code on ChoiceCreatureType usage, removed possibly infinite code (game freezes) (related to #13106); 2024-12-05 01:03:13 +04:00
PurpleCrowbar
9ddafd16ed
[MB2] Implement Hish of the Snake Cult (#13102) 2024-12-02 18:44:58 -05:00
Grath
02db93b75c Correct UntapTargetCost similarly to UntapSourceCost per 118.11 2024-12-01 12:21:24 -05:00
Grath
8f3cd5a106 [DSC] Implement Fear of Sleep Paralysis
Also fix UntapSourceCost to allow 'consuming a stun counter' to count as paying untap cost, per rule 118.11, but only if Fear of Sleep Paralysis isn't making stun permanent.
2024-12-01 12:02:59 -05:00
Oleg Agafonov
c6bec887b9 Triggered abilities - fixed that it can trigger from hand or library (related to #13089, regression from #13088) 2024-12-01 15:28:30 +04:00
xenohedron
4edce76732 refactor: simplify DistributeCountersEffect constructors 2024-11-30 14:27:37 -05:00
xenohedron
ab81e45cc9 text update: "of their choice" of the top or bottom 2024-11-30 14:27:37 -05:00
xenohedron
6f43e76c9e followup text fixes 2024-11-30 14:27:37 -05:00
xenohedron
729869ec36 update text: sacrifice "of their choice" 2024-11-30 14:27:35 -05:00
Oleg Agafonov
b1024d23fc refactor: fixed dies events support in single cards (part 6); 2024-11-30 16:56:00 +04:00
Oleg Agafonov
d49ff89a81 refactor: shared logic for diff implementation of isInUseableZone, improved docs and readability; 2024-11-30 04:23:45 +04:00
Oleg Agafonov
57ef74da90 Recover abilities - fixed that it doesn't ask to pay a cost on multiple triggers; 2024-11-30 04:23:36 +04:00
Oleg Agafonov
6d55e4b9e6 refactor: fixed dies events support in single cards (part 5); 2024-11-30 04:23:35 +04:00
Oleg Agafonov
740a9347ae refactor: removed some usages of short LKI, moved static ability's useable zone logic to basic ability implementation; 2024-11-30 04:23:23 +04:00