Commit graph

10971 commits

Author SHA1 Message Date
ssk97
a6e23f9704
additional fixes for Kaito's watcher (#10646) 2023-07-18 10:19:40 +04:00
PurpleCrowbar
6a244c09a7
[LTC] Implement Shelob, Dread Weaver (#10645) 2023-07-18 05:46:54 +01:00
ssk97
c3f7a9ab21
Simplify implementation and fix bugs of Kaito, Dancing Shadow (#10639)
Implement PermanentReferenceInCollectionPredicate used by that
convert existing cards to use new Predicate as needed
Replaces PermanentInListPredicate for longer term effects
2023-07-17 23:47:37 -04:00
Susucre
8128e9935d
add Renown hint (similar to Monstrous one) (#10644) 2023-07-17 20:03:19 -04:00
xenohedron
fa72e243e9
Text generation improvements for triggered abilities (#10638) 2023-07-17 20:03:01 -04:00
Susucre
0c7965a725
Fix Pyrrhic Revival not adding -1/-1 counters on returned creatures. (#10626)
* Add (failing) unit test on Pyrrhic Revival

* fix PyrrhicRevival

reworked ReturnFromGraveyardToBattlefieldWithCounterTargetEffect to support having multiple cards in its targetPointer.

added test for Persist (the card from mh2).

* refactor & cleanup

* add myself as author, the effect was remade.
2023-07-17 20:02:49 -04:00
xenohedron
3eaf80cfa6 new StaticFilters.FILTER_PERMANENT_CREATURE_OR_LAND 2023-07-17 00:25:10 -04:00
Susucre
d658bf2265
refactor: expose Player->incrementLandsPlayed for some custom effects. (#10632)
* Expose Player->incrementLandsPlayed for some custom effects.
* also expose resetLandsPlayed
2023-07-17 03:53:22 +04:00
xenohedron
a5dbf30605 Fix #10631 (Forge, Neverwinter Charlatan) 2023-07-16 16:19:31 -04:00
xenohedron
1f9de03bf3
Lots of text fixes (#10636) 2023-07-16 14:55:59 -04:00
Susucre
6b616dbf20
refactor: expose startingHandSize in GameImpl constructor. (#10629)
For now, it is 7 in every game mode.
2023-07-16 18:36:26 +04:00
xenohedron
906e30a81b GainAbilityAttachedEffect no longer includes reminder text on the attachment 2023-07-16 00:46:23 -04:00
xenohedron
481384a3c8
Text fixes [M10] [M11] [M12] [M13] [M14] [M15] [ORI] (#10630)
* Text fixes M10-ORI core sets, part 1

* Text fixes M10-ORI core sets, part 2

* Text fixes M10-ORI core sets, part 3

* another text fix
2023-07-16 00:35:18 -04:00
xenohedron
8372c358b2
refactor: some code linting (#10624)
* remove obsolete check method
* code clean: PermanentImpl
* code clean: PlayerImpl
* protected constructors in CardImpl
2023-07-16 01:50:24 +04:00
Susucre
b960b77774
Refactor name of minimum deck size (was startingHandSize) (#10628)
* Refactor: rename starting hand size, it was actually minimum deck size (40, 60 or 100 most of the time)
2023-07-16 01:45:19 +04:00
xenohedron
a7f78e8190
Clean up triggered ability text generation (#10627)
* move "or battle" to its own class

* move "or planeswalker" to its own class

* remove strange way of setting custom text

* finally remove getTriggerPhrase

* copy constructor visibility

* fix Vraska
2023-07-15 16:49:40 -04:00
xenohedron
e2cff095b3
Rework Infectious Rage (#10625)
* put custom predicate back with Aura Graft

* Rework Infectious Rage and add unit test

* cleanup Aura Graft
2023-07-15 16:49:26 -04:00
xenohedron
ee29c38413
Clash adjustments (#10616)
* adjust clash effect

* Make clash not a singleton

* Add unit test for Clash effect

* fix test (skip init shuffling)

* Fix CLASHED event flag logic and add to unit test

* Additional test and comments

* comments in GameEvent

* param name typo
2023-07-14 23:15:01 -04:00
xenohedron
0d4c73b385 [LRW] [MOR] [SHM] [EVE] text fixes 2023-07-14 22:40:56 -04:00
xenohedron
aaf99a4c1a followup fixes 2023-07-14 22:12:08 -04:00
xenohedron
ae9f920d87 more [LTR] text fixes / corrections 2023-07-14 21:58:33 -04:00
Susucre
2c505bbcac
[LTR] Implement King of the Oathbreakers (#10619)
* make a new BecomesTargetTriggeredAbility to filter on target permanents.
2023-07-14 21:32:23 -04:00
Susucre
2188c690c6
[LTR] Implement Eomer, Marshal of Rohan (#10617)
Also, small refactor adding EachTurn to the name of both `setTriggersOnce` and `setDoOnlyOnce`.
2023-07-14 21:32:00 -04:00
xenohedron
72ebe2b1f1 minor code cleanup triggered abilities 2023-07-14 20:30:09 -04:00
xenohedron
ef739688fb remove unused duplicated effect class 2023-07-14 20:28:33 -04:00
xenohedron
792224d6dc more followup text fixes 2023-07-14 02:12:57 -04:00
xenohedron
176a61190b Followup text fixes 2023-07-14 01:59:27 -04:00
xenohedron
185fae28a4 Text fixes [10E] 2023-07-14 01:40:12 -04:00
xenohedron
eeffafcc62 Generalize UntapEnchantedEffect to UntapAttachedEffect 2023-07-13 00:28:03 -04:00
Susucre
6a9340f1aa
Introduce Duration.UntilYourNextUpkeepStep (#10600)
* add new Duration

* refactor cards with new Duration.

* fix both Durations and add unit tests.

* fix text
2023-07-12 19:40:27 -04:00
Susucre
14235b6320
Rework Ring-bearer implementation. Add GUI + gamelogs. (#10596)
* Fix Ring-bearer choosing & add some GUI + logs

* use a ring svg in a separate gold panel

* use a fontawesome svg

* add a couple null checks, group icon with commander

* rework rinbearer logic according to review

* fix typo in game log

* small fixes
2023-07-12 19:40:09 -04:00
Bobby McCann
09530f1cdb
[LTR] Implement Glamdring (#10574) 2023-07-12 19:39:31 -04:00
xenohedron
3f346d791c fix file location in source tree 2023-07-10 06:32:04 -04:00
xenohedron
6c9079012c
Cleanup: source deals damage to {this}; mill cards (#10603)
* New common class for "Whenever a source deals damage to {this}, " which resolves #9340 
* Merge `PutLibraryIntoGraveTargetEffect` with functionally identical `MillCardsTargetEffect`
* Text fix on `RevealDragonFromHandCost` noticed in #10593
* Text fix following up on #10594
2023-07-09 22:05:28 -04:00
Bobby McCann
73104f6705
[LTR] Implement Radagast the Brown; also resolves #9419 (#10568)
* Fix #9419 bug with EntersBattlefieldThisOrAnotherTriggeredAbility
* Add test for Radagast as well as Risen Reef and Caldaia Guardian
* Minor associated cleanup for EntersBattlefieldAllTriggeredAbility
* New PermanentEnteringBattlefieldManaValue
2023-07-09 22:04:45 -04:00
Susucre
39904d0ca3
[LTR] Implement Boromir, Warden of the Tower (#10594)
* [LTR] Implement Boromir, Warden of the Tower

* group trigger from Boromir and Lavinia

* fix trigger text
2023-07-09 16:42:29 -04:00
Susucre
f8b1ada369
Fix RevealTargetFromHandCost when no target in hand (#10593)
* [CSP] Fix the RevealTargetFromHandCost not allowing payment when no valid card to reveal

* cleanup text of cost

* fix martyr of bones text

* fix test using a Martyr of Sands
2023-07-09 16:42:16 -04:00
xenohedron
b86014a29c
Text fixes [CSP] (#10599)
* fix text: ExileFromHandCost

* fix text: CumulativeUpkeepAbility

* text fixes: individual CSP cards

* text fix followups
2023-07-09 02:14:42 -04:00
Oleg Agafonov
03f8d72031 merge fix 2023-07-09 03:43:19 +04:00
Oleg Agafonov
0520d0b262 game: fixed miss clear code for permanent's additional info, fixed random sorting; 2023-07-09 02:35:26 +04:00
Oleg Agafonov
4ae5ca8421 docs: card hints usage improved 2023-07-09 02:21:56 +04:00
Susucre
a7d49e1f45
[LTR] Implement Faramir, Prince of Ithilien (#10595) 2023-07-08 13:09:10 -04:00
xenohedron
0fa971514a
code style: eliminate unnecessary static imports (#10585)
* SacrificeTargetCost(StaticFilters)

* remove import static mage.constants.Outcome

* remove import static mage.constants.Duration

* remove other import static

* a few more sacrifice filters

* simpler constructors

* remove import static mage.filter

* remove a few more import static
2023-07-08 13:08:28 -04:00
xenohedron
45b54e8cc4 code style: private static final 2023-07-07 23:34:16 -04:00
ssk97
e1edec542c
Lazotep Convert fix (#10578)
* Fix Lazotep Convert card (add color, need to actually apply the applier)

* Don't copy Transformed status, add test
2023-07-07 01:26:27 -04:00
xenohedron
063429b70a
New StaticFilters.FILTER_ANOTHER_CREATURE_YOU_CONTROL (#10577) 2023-07-07 01:26:11 -04:00
xenohedron
e50f8b05c1
[LTR] [LTC] Text fixes (#10569) 2023-07-06 00:24:12 -04:00
xenohedron
1ccaf06366
Refactor flicker effects to single common class (#10564)
* New common class for flicker target effects

* Update cards to ExileThenReturnTargetEffect

* process game state before returning exiled card
2023-07-05 19:23:08 -04:00
Bobby McCann
c8564efbb7
[LTR] Implement Witch-king of Angmar (#10563)
* Add card

* Add TapSourceEffect

* De-duplicate watcher logic

* Abstract and fix(?) logic

* Fix sacrifice targets

* Controller instead of Owner

* Add tests, fix, and refactor

* Throw if controller not supported

* Fix test (not supposed to start tapped)
2023-07-05 19:22:21 -04:00
Susucre
008662be5e
[LTR] Implement Shelob, Child of Ungoliant (#10558)
* [LTR] Implement Shelob, Child of Ungoliant

This is almost working.

I could not figure out why, but tokens made with the trigger still have subtypes, even though it has only artifact as its type.

* fix subtype of the token copy not being cleaned.

fixed Myrkul, Lord of Bones that had the same issue.
removed game argument from CreateTokenCopyTargetEffect's PermanentModifier. It was only used by Myrkul, and with no effect.
2023-07-05 19:21:52 -04:00