From 7ea8357190411d281cfec6ebb52b1be71ec49978 Mon Sep 17 00:00:00 2001 From: Jeff Wadsworth Date: Mon, 2 May 2022 14:50:26 -0500 Subject: [PATCH] - Fixed #8903. Creating an independent class would result in a ridiculously long descriptive name. --- Mage.Sets/src/mage/cards/e/EssenceSliver.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/Mage.Sets/src/mage/cards/e/EssenceSliver.java b/Mage.Sets/src/mage/cards/e/EssenceSliver.java index 461faaa28a9..fcf841b7983 100644 --- a/Mage.Sets/src/mage/cards/e/EssenceSliver.java +++ b/Mage.Sets/src/mage/cards/e/EssenceSliver.java @@ -1,4 +1,3 @@ - package mage.cards.e; import mage.MageInt; @@ -14,11 +13,11 @@ import mage.constants.SubType; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; import mage.players.Player; import java.util.UUID; +import mage.target.targetpointer.FixedTarget; /** * @@ -27,14 +26,14 @@ import java.util.UUID; public final class EssenceSliver extends CardImpl { public EssenceSliver(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{W}"); + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.subtype.add(SubType.SLIVER); this.power = new MageInt(3); this.toughness = new MageInt(3); // Whenever a Sliver deals damage, its controller gains that much life. - this.addAbility(new DealsDamageAllTriggeredAbility()); + this.addAbility(new EssenceSliverTriggeredAbility()); } @@ -48,19 +47,19 @@ public final class EssenceSliver extends CardImpl { } } -class DealsDamageAllTriggeredAbility extends TriggeredAbilityImpl { +class EssenceSliverTriggeredAbility extends TriggeredAbilityImpl { - public DealsDamageAllTriggeredAbility() { - super(Zone.BATTLEFIELD, new EssenceSliverGainThatMuchLifeEffect(), false); + public EssenceSliverTriggeredAbility() { + super(Zone.BATTLEFIELD, new EssenceSliverEffect(), false); } - public DealsDamageAllTriggeredAbility(final DealsDamageAllTriggeredAbility ability) { + public EssenceSliverTriggeredAbility(final EssenceSliverTriggeredAbility ability) { super(ability); } @Override - public DealsDamageAllTriggeredAbility copy() { - return new DealsDamageAllTriggeredAbility(this); + public EssenceSliverTriggeredAbility copy() { + return new EssenceSliverTriggeredAbility(this); } @Override @@ -71,10 +70,13 @@ class DealsDamageAllTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean checkTrigger(GameEvent event, Game game) { - Permanent creature = game.getPermanent(event.getSourceId()); - if (creature != null && creature.hasSubtype(SubType.SLIVER, game)) { + Permanent sliver = game.getPermanent(event.getSourceId()); + if (sliver != null + && sliver.hasSubtype(SubType.SLIVER, game) + && sliver.getControllerId() != null) { for (Effect effect : this.getEffects()) { effect.setValue("damage", event.getAmount()); + effect.setTargetPointer(new FixedTarget(sliver.getControllerId())); } return true; } @@ -83,34 +85,33 @@ class DealsDamageAllTriggeredAbility extends TriggeredAbilityImpl { @Override public String getTriggerPhrase() { - return "Whenever a Sliver deals damage, " ; + return "Whenever a Sliver deals damage, "; } } -class EssenceSliverGainThatMuchLifeEffect extends OneShotEffect { +class EssenceSliverEffect extends OneShotEffect { - public EssenceSliverGainThatMuchLifeEffect() { + public EssenceSliverEffect() { super(Outcome.GainLife); this.staticText = "its controller gains that much life"; } - public EssenceSliverGainThatMuchLifeEffect(final EssenceSliverGainThatMuchLifeEffect effect) { + public EssenceSliverEffect(final EssenceSliverEffect effect) { super(effect); } @Override - public EssenceSliverGainThatMuchLifeEffect copy() { - return new EssenceSliverGainThatMuchLifeEffect(this); + public EssenceSliverEffect copy() { + return new EssenceSliverEffect(this); } @Override public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { + Player controllerOfSliver = game.getPlayer(targetPointer.getFirst(game, source)); + if (controllerOfSliver != null) { int amount = (Integer) getValue("damage"); if (amount > 0) { - controller.gainLife(amount, game, source); - + controllerOfSliver.gainLife(amount, game, source); } return true; }