[WHO] Time Reaper, Add target adjuster for "that player controls/owns" damage trigger targets (#12528)

* Implement Time Reaper, start rework

* Create DamagedPlayerControlsTargetAdjuster, convert Aberrant to use it

* Always add targets for EachOpponentPermanentTargetsAdjuster

* Improve target name, finish Time Reaper

* Convert some cards

* Improve documentation, more cards

* More cards, fix cards that needed to use owner instead of controller

* Fix unfinished AlelaCunningConqueror changes

* more cards

* All remaining cards

* Fix target type

* Remove outdated attempt at TargetController.SOURCE_EFFECT_TARGET_POINTER

* Finish removal of SOURCE_EFFECT_TARGET_POINTER

* Change targetAdjuster blueprint target to be set inside setTargetAdjuster, add error checking

* Always add Target Adjuster after Target

* Add comment

* Fix TolarianContemptTest to skip opponent with no valid targets

* Forgot to git add the new abstract GenericTargetAdjuster

* Test now possible after merge, fix missed ChangeOfPlans adjuster order

* Text and optional-ness fixes

* Always set target pointer
This commit is contained in:
ssk97 2024-07-01 21:46:14 -07:00 committed by GitHub
parent bccf323c0f
commit 7cb669603f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
172 changed files with 891 additions and 2219 deletions

View file

@ -4,6 +4,7 @@ import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.counters.CounterType;
import org.junit.Test;
import org.mage.test.player.TestPlayer;
import org.mage.test.serverside.base.CardTestCommander4Players;
/**
@ -13,7 +14,6 @@ public class TolarianContemptTest extends CardTestCommander4Players {
@Test
public void testEachOpponent() {
addCard(Zone.HAND, playerA, "Tolarian Contempt");
addCard(Zone.BATTLEFIELD, playerA, "Island", 5);
addCard(Zone.BATTLEFIELD, playerD, "Raging Goblin");
@ -21,8 +21,9 @@ public class TolarianContemptTest extends CardTestCommander4Players {
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Tolarian Contempt", true);
addTarget(playerA, "Raging Goblin");
addTarget(playerA, "Memnite");
addTarget(playerA, "Raging Goblin"); //target playerD
addTarget(playerA, "Memnite"); //target playerC
addTarget(playerA, TestPlayer.TARGET_SKIP); //target playerB
setChoice(playerD, true);
setChoice(playerC, true);