Commit graph

11333 commits

Author SHA1 Message Date
Artemis Kearney
41874b0b4b
new feature: Emblem Cards (#10498)
* new feature: Emblem Cards

Allows match/tournament creator to specify cards to give each player
emblem versions of (or just the starting player for symmetric effects).

Technical details:
- new UI for specifying emblem cards (.dck files)
  - available for all match/tournament types
- new class `EmblemOfCard`
- new method `copyWithZone` on `AbilityImpl` (used to make abilities
  work from command zone)
- new fields on `GameOptions` and `MatchOptions` for emblem cards
- emblems are granted after mulligans, before first turn (technically
  after Planechase starting plane creation)

* fixes

* defaults for emblem cards in match options (fixes quick game buttons)

* minor fixes

* use DeckCardInfo instead of Card for emblem cards options

* restore accessible parent properties

* fix images for card emblems

* look up cards in a way that preserves which art

* fix typos; make Emblem.sourceObject protected

* add descriptions to planechase and emblem cards

* fixes

* add some unit tests for known working cards

* fix author name

* add explanation comment

* fix up tests

* copyWithZone: no longer modifies zone for singleton abilities

* directly check for MageSingleton
2023-09-26 22:47:13 -04:00
xenohedron
04dba063aa fix #11211 (CR 602.3)
(Golgothian Sylex and Apocalypse Chime)
2023-09-26 22:46:01 -04:00
xenohedron
e66c9900f7 fix #11210 and similar (LKI in TapEnchantedEffect) 2023-09-26 22:46:01 -04:00
xenohedron
4e561b6254
text generation improvements (#11203)
* update ETB trigger effect text gen

* set replace for common abilities

* fix remaining

* rename method, cleanup

* more fixes, better logic
2023-09-25 21:51:51 -04:00
xenohedron
1a13dcd091
Merge pull request #11185 from xenohedron/becomestarget
Rework "whenever ... becomes the target of ..., " abilities
2023-09-24 22:09:14 -04:00
xenohedron
0287efcffb minor cleanup 2023-09-24 00:52:38 -04:00
xenohedron
1b9bcb92e6 improve targetMap usage, naming, docs per review 2023-09-24 00:22:21 -04:00
Susucre
b624da7aa8
[ICE] Implement Kjeldoran Guard (#11184)
closes #8593
2023-09-23 20:23:47 -04:00
Oleg Agafonov
8ebbeef8f4 Choose triggers order dialog - fixed game error on remember of multiple instances of the trigger (fixes #11194) 2023-09-23 20:16:55 +04:00
Oleg Agafonov
b80f440e15 game: fixed some NPE errors 2023-09-23 07:41:18 +04:00
xenohedron
cd5ee1c31d text fixes 2023-09-22 23:38:16 -04:00
xenohedron
a7cda75b22 new AuraSpellPredicate for Brine Comber, Fugitive Druid (related to #11174) 2023-09-22 23:38:16 -04:00
xenohedron
48d7d07f93 reimplement Fractured Loyalty 2023-09-22 23:38:16 -04:00
xenohedron
2a210404a2 reimplement more cards to use BecomesTargetSource 2023-09-22 23:38:16 -04:00
xenohedron
8f92a23302 rename class for consistency 2023-09-22 23:38:16 -04:00
xenohedron
d83d27dfa3 update SourceBecomesTargetTriggeredAbility with proper logic and trigger phrase generation 2023-09-22 23:38:15 -04:00
xenohedron
4ab36880fe new common BecomesTargetSourceFirstTimeTriggeredAbility 2023-09-22 23:38:15 -04:00
xenohedron
6abe9ff821 new common BecomesTargetAnyTriggeredAbility 2023-09-22 23:38:15 -04:00
xenohedron
65523b9fec new common BecomesTargetControllerTriggeredAbility
remove old classes
2023-09-22 23:14:41 -04:00
xenohedron
79b10856b8 use common methods in BecomesTargetAttachedTriggeredAbility 2023-09-22 23:14:41 -04:00
xenohedron
ee68726865 use common methods for WardAbility 2023-09-22 23:14:41 -04:00
xenohedron
0086c5e4a2 add util methods getTargetingStackObject, checkTargetMap 2023-09-22 23:14:41 -04:00
Oleg Agafonov
0bf4b63bcf refactor: additional improves for mana choice in some cards, related to Naked Singularity from 81039d6e72 2023-09-23 06:39:01 +04:00
Oleg Agafonov
a9152e886f refactor: improved ContinuousRuleModifying effects:
* removed unused apply methods;
* added miss overrides of checksEventType (related to wrong event usage, see 5f2edde20c).
2023-09-22 21:32:55 +04:00
Oleg Agafonov
342979a55a
network: reworked client-server events (related to triggers dialog problem from #11173) (#11189)
* added bad connection mode to test client works on slow network, use -Dxmage.badconnection;
* added bad connection protection in events processing due event type;
* split events to different types (can be ignored, must be synced, etc);
* removed some unused server events.
2023-09-21 18:40:52 +04:00
xenohedron
fa8e93a29d
rework CombatDamageByToughnessAllEffect (#11180)
new CombatDamageByToughnessControlledEffect
add tests
fix #11179
2023-09-19 01:41:55 -04:00
xenohedron
0ad678ff56
enable multiple added subtypes in CreateTokenCopyTargetEffect (#11181)
fix #11176
2023-09-19 01:41:40 -04:00
Oleg Agafonov
11528e7d35 server: removed useless fastDbMode, improved db stats logs on updating 2023-09-17 22:16:12 +04:00
Oleg Agafonov
5f15e962da Bestow ability - fixed that it could be used with other alternative costs 2023-09-17 15:03:16 +04:00
Oleg Agafonov
4e77ccb381 refactor: removed unused data from special action, improved code (related to #11137) 2023-09-17 14:37:49 +04:00
Oleg Agafonov
a4daad1f92 docs: added additional comments and todos for "choose new targets" code 2023-09-16 10:19:23 +04:00
ssk97
b6dbc782be
Fix casting Transformed (#10778)
* Combine casting Transformed into a shared SpellAbility, apply transform effect before spell is cast

* Minor cleanup

* Use effect.apply() rather than game.applyEffects()

* Add test with Maskwood Nexus
2023-09-15 17:56:32 -04:00
Susucre
8859637844
[CMB1] Implement Innocuous Insect (#11143) 2023-09-15 17:56:08 -04:00
Susucre
ecf4b11d2e
[CMB1] Implement Evil Boros Charm (#11142) 2023-09-15 17:55:54 -04:00
Susucre
58fdbc9345
[CMB1] Implement Frogkin Kidnapper (#11137) 2023-09-15 17:55:24 -04:00
Susucre
f4b0b83612
[UNF] Implement Comet, Stellar Pup (#10925) 2023-09-15 17:55:11 -04:00
Oleg Agafonov
6f12d62882 tests: fixed random fails in RadiateTest (wrong MOR predicate code, #9550) 2023-09-15 06:30:10 +04:00
Susucre
b62b089659
Autosave limited decks on submit (#11147)
* Autosave limited decks in gamelogs folder

* differentiate LIMITED_SIDEBOARD_BUILDING from LIMITED_BUILDING
2023-09-12 21:43:13 -04:00
Oleg Agafonov
be4bff6097 game: fixed wrong usage of batch events (related to #10870) 2023-09-13 04:42:46 +04:00
Oleg Agafonov
ba3b0e4cb7 Merge fix 2023-09-13 03:49:59 +04:00
Oleg Agafonov
316e0dc1f3 refactor: improved damaged batch events, added todo to fix (related to #10870) 2023-09-13 03:14:19 +04:00
Vivian Greenslade
8c1a4d1fa6
[WOC] Implement Misleading Signpost (#11084)
* [WOC] Implement Misleading Signpost

* moved effect to common file

* added unit test

* added battle to test

* updated effect name, fixed list of defenders

* fix test text

* added text for effect

* fixed target

* made changes as per PR comments

* added unit test for 508.7c
2023-09-09 15:32:04 -04:00
Susucre
8b79053deb
[WOC] Implement Court of Garenbrig (#10970)
* add DoubleCounterOnEachPermanentEffect

* Clean text generation of ConditionalOneShotEffect to prevent "if if"

* [WOC] Implement Court of Garenbrig

* better rule generation

* fix target, add tests
2023-09-09 15:31:49 -04:00
Susucre
249e7bf31b
[WOC] Implement Court of Embereth (#10971)
* Clean text generation of ConditionalOneShotEffect to prevent "if if"

* [WOC] Implement Court of Embereth
2023-09-08 23:57:36 -04:00
Susucre
cc4a5f9959
Fix DamagedPlayerBatchOnePlayerEvent not checking the target is the player. (#11128) 2023-09-08 23:56:31 -04:00
xenohedron
144b261fc2 another batch of text fixes 2023-09-07 02:22:16 -04:00
xenohedron
8c9ecb9b9a adjust Cascade ability reminder text 2023-09-07 02:22:16 -04:00
xenohedron
34b671bc83 cleanup add color/subtype attached effects 2023-09-07 02:22:16 -04:00
xenohedron
72be1856f7 describe targets: look at hand; can't be blocked 2023-09-07 02:22:16 -04:00
Oleg Agafonov
4b3a19b4d5 refactor: improved target usage, replaced setNotTarget by withNotTarget 2023-09-07 05:35:54 +04:00