Commit graph

1918 commits

Author SHA1 Message Date
Susucre
0e5069ccc2
[LTC] Implement Gandalf, Westward Voyager (#10727)
* refactor and cleanup SpellCastControllerTriggeredAbility

* [LTC] Implement Gandalf, Westward Voyager

* throw on unexpected setTargetPointer
2023-08-04 22:26:25 -04:00
Susucre
f75b1c9f0a
Code cleanup: protect all copy constructors (#10750)
* apply regex to change public copy constructors to protected
* cleanup code using now protected constructors
* fix manaBuilder weird casting of Mana into ConditionalMana
2023-08-04 19:34:58 -04:00
Susucre
5c58e28f9b
Fix King of the Oathbreaker (#10747) 2023-08-04 18:37:11 -04:00
Susucre
40e508ac19
Refactor Devour ability; [LTC] Implement Feasting Hobbit (#10708)
* [LTC] Implement Feasting Hobbit

Refactor DevourEffect and its text generation, to be more permissive in the future.

* change DevourAbility to have the constructor parameters of DevourEffect

* only pluralize when there is more than 1 devoured permanent.

* added more unit tests than there are cards with devour

* public -> private filter of Caprichrome.
2023-08-01 09:49:32 -04:00
Oleg Agafonov
3d3358cd05 game: turn modification improves:
- fixed miss phase changed events and logs in some use cases;
 - added source info in turn modification logs;
 - added game logs for take and lost control of the spell (example: Word of Command)
 - added game logs for skip step;
 - added game logs for extra step;
 - added game logs for skip phase;
2023-08-01 16:52:53 +04:00
Susucre
63d9061f6a
[LTC] Implement Assemble the Entmoot (#10711)
* [LTC] Implement Assemble the Entmoot

* rename ControllerGotLifeCount -> ControllerGainedLifeCount
2023-07-31 23:50:29 -04:00
Oleg Agafonov
8d938926b6 refactor: improved usage of one time turn modifications (skip step, extra turn, etc) 2023-07-31 20:16:28 +04:00
Susucre
4554fbc408
[LTC] Implement Denethor, Stone Seer (#10709)
* [LTC] Implement Denethor, Stone Seer

* rename game.damagePlayerOrPlaneswalker.

Reason being that It does actually damage any player or permanent.
2023-07-30 23:06:21 -04:00
Susucre
4856c65443
[BOT] Implement Megatron, Tyrant // Megatron, Destructive Force (#10666)
* [BOT] Implement Megatron, Tyrant // Megatron, Destructive Force

* fix verify test.

* cleanup AbilityCastMode for Disturb & MoreThanMeetsTheEye

* cleanup unecessary checks.

* fix duration of silence static effect

* fix Disturb tests
2023-07-29 13:45:09 -04:00
Alexander Novotny
519b3988be
game timer: Add chess-style buffer time option (#10598)
* UI Changes

* Add new buffer time options

* Main functionality

* Final implementation

Also added player UI for when they are using their buffer time (timer turns green)
2023-07-28 22:05:21 -04:00
Alexander Novotny
a36a7d9b7f
[LTR] Add Goldberry, River-Daughter (#10524)
* Added Goldberry

* Slight optimizaztion

* Happy Path Test

* More unhappy tests

* Sanity check for Goldberry's counter choices

* Updated player.getMultiAmount to support individual constraints

* Some cleanup

Also modified ResourcefulDefense to use new multi amount api

* Updated logging

* Added hint for number of counters

* Fixed issue with Resourceful Defense

* Improvements to defaults

Default list will properly make sure to stay within individual maximums
If a player is asked for a choice that isn't actually a choice because each choice's min and max are equal, instead the default response is immediately returned. This helps with situations like moving a counter off of Goldberry when she only has one counter on her.

* -1/-1 Counter test

* Fixed issue with -1/-1 counters

* Adjusted dialog to properly enforce constraints
2023-07-28 21:29:40 -04:00
Susucre
3e406a9975
GUI: add basic hint for goaded by a player. (#10688) 2023-07-28 19:33:18 -04:00
Susucre
9eb7e2870e
GUI: fix card hints being shown twice on permanents. (#10675) 2023-07-27 17:34:38 +04:00
Oleg Agafonov
9383f5eadd game: fixed miss data in turn mode (possible fix for cards like Sphinx of the Second Sun and Moraug, Fury of Akoum - #10100) 2023-07-23 09:37:25 +04:00
theelk801
03320d1752 [CMM] Implement Battle at the Helvault 2023-07-21 22:23:31 -04:00
theelk801
564a24f7a3 [CMM] Implement Lazotep Sliver 2023-07-21 20:08:15 -04:00
PurpleCrowbar
599473be12 [LTC] Implement Gwaihir, Greatest of the Eagles 2023-07-20 04:48:46 +01:00
PurpleCrowbar
394bd7552e [LTC] Implement Lord of the Nazgul 2023-07-19 04:47:09 +01: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
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
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
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
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
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
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
Oleg Agafonov
f26b1470fa game: fixed miss state triggers check in multi-steps abilities/effects (#10564) 2023-07-05 09:52:38 +04:00
Alex Vasile
6b5d4abb69
Add documentation to Cards and CardsImpl (#9019)
* Added minor documentation and TODO questions

* Fixed typo

* Address one set of comments

* merge fix

* remove commented code

---------

Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
2023-07-02 18:20:28 -04:00
Oleg Agafonov
4c59551cf0 number of triggers event - fixed game error with state based triggers (NPE in cards like Veyran, Voice of Duality); 2023-06-30 07:15:21 +04:00
Oleg Agafonov
6529ead72f refactor: simplified extra turn code, fixed NPE error on usage (Alchemist's Gambit) 2023-06-30 06:39:01 +04:00
rullinoiz
6caa46f9d5
[LTC] Implement Moria Scavenger, Saruman The White Hand, Wake The Dragon (#10537)
* Implement Moria Scavenger, Saruman The White Hand, Wake The Dragon

* Remove Ward Hint

* Create Dragon Token Class

* StaticFilters.FILTER_SPELL_A_NON_CREATURE

* Rename TokenTriggeredAbility
2023-06-29 22:04:46 -04:00
Susucre
06cce0ce22
[LTR] Implement Mordor Trebuchet (#10496)
Along with its unique token Ballistic Boulder.
2023-06-29 22:02:55 -04:00
xenohedron
ec4c2e2170
Cleanup: GainAbilityControlledSpellsEffect (#10446)
* Hide reminder text on Zhulodok

* Use logic from GainAbilitySpellsEffect, fix so that CastFromZonePredicate works

* Text adjustments

* Show cascade ability in hand for Abaddon the Despoiler

* Remove redundant class

* Simplify Cast Through Time

* Don't add additional instances of redundant abilities

* Remove redundant check

* Add option to ignore mana validation when checking playable objects

* Fix null errors

* Fix GainAbilityControlledSpellsEffect to apply ability to playable cards rather than owned cards

* Add unit test

* Revert bad workaround code

This reverts commit 17f5be6a79.
This reverts commit 7ebd2f1815.
This reverts commit 00969d1fe7.

* Remove ownership check on exiled cards

* Another test (currently failing)

* ignore test

* fix test: strict choose mode
2023-06-24 01:15:58 -04:00
Susucre
09e0cba992
[LTR] Fix Smaug Token producing food tokens instead of treasures (#10513) 2023-06-22 13:20:45 -04:00
Susucre
720b2fe163
[LTC] Implement Oarth Of Eorl (#10469)
Added one constructor for SagaAbility, accepting multiple effects and a target.
2023-06-18 22:38:18 -04:00
Oleg Agafonov
38be371c25 tests: real fix of Auratouched Mage - miss draw card effect (#9462) 2023-06-18 16:50:51 +04:00
Oleg Agafonov
afe89a1056 momir game: fixed game error on start, added momir emblem image 2023-06-17 09:29:47 +04:00
xenohedron
2cdfb255cf
cleanup to use ObjectColor.COLORLESS (#10447)
* Replace for BecomesColorSourceEffect

* Replace for BecomesColorTargetEffect

* Remove unused class

* Use common static instance
2023-06-11 23:36:01 -04:00
theelk801
b114e77a3a [LTR] Implement Saradoc, Master of Buckland 2023-06-11 22:18:20 -04:00
Oleg Agafonov
49ce794c45 Merge fix 2023-06-09 07:03:32 +04:00
Oleg Agafonov
35b00c3da1 Fixed game errors for non started games (some cards uses dynamic hints with non-protected code) 2023-06-09 07:03:31 +04:00
Oleg Agafonov
ae5bc90915 Fixed game error on attack order disconnects 2023-06-09 07:03:31 +04:00
Alexander Novotny
a0f8a42699
Fixing copy and cast from exile effects (#10436)
* Added unit test for magefree/mage#10435

* Added test for potential breakage of prosper functionality

* Copies of cards are now created in the right zone

* Added PlayCardTriggeredAbility

This triggered ability checks to make sure a card was actually played (as opposed to a copy of a card).
Common abilities have been refactored to use this new ability

* Added mizzix's mastery overload test

* Fixed Mizzix's mastery overload

* Added new ability to Juju Bubble

---------

Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
2023-06-09 05:32:59 +04:00
Alexander Novotny
079424f8f1
Added hint for restrictions which must attack a player (#10438)
Fixes #10140
2023-06-07 20:00:27 -04:00
xenohedron
807a6c95f1
Merge pull request #10369 from xenohedron/refactor-search
Refactor search library effect classes to clean up text generation
2023-06-04 22:18:18 +03:00
theelk801
a4a995f615 [LTR] Implement There and Back Again 2023-06-02 09:02:51 -04:00
theelk801
579f953e8b [LTR] Implement Long List of the Ents 2023-05-31 22:56:52 -04:00