mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
* Megrim - Fixed target handling (using always the target from first time the ability triggered).
This commit is contained in:
parent
cc9f036c89
commit
91482964dc
2 changed files with 29 additions and 48 deletions
|
@ -25,20 +25,15 @@
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.sets.tenthedition;
|
package mage.sets.tenthedition;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.common.DiscardsACardOpponentTriggeredAbility;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
import mage.constants.Zone;
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.game.Game;
|
|
||||||
import mage.game.events.GameEvent;
|
|
||||||
import mage.game.events.GameEvent.EventType;
|
|
||||||
import mage.target.common.TargetOpponent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -46,14 +41,15 @@ import mage.target.common.TargetOpponent;
|
||||||
*/
|
*/
|
||||||
public class Megrim extends CardImpl {
|
public class Megrim extends CardImpl {
|
||||||
|
|
||||||
public Megrim (UUID ownerId) {
|
public Megrim(UUID ownerId) {
|
||||||
super(ownerId, 157, "Megrim", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
|
super(ownerId, 157, "Megrim", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
|
||||||
this.expansionSetCode = "10E";
|
this.expansionSetCode = "10E";
|
||||||
|
|
||||||
this.addAbility(new MergimTriggeredAbility());
|
// Whenever an opponent discards a card, Megrim deals 2 damage to that player.
|
||||||
|
this.addAbility(new DiscardsACardOpponentTriggeredAbility(new DamageTargetEffect(2, true, "that player"), false, SetTargetPointer.PLAYER));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Megrim (final Megrim card) {
|
public Megrim(final Megrim card) {
|
||||||
super(card);
|
super(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,39 +59,3 @@ public class Megrim extends CardImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class MergimTriggeredAbility extends TriggeredAbilityImpl {
|
|
||||||
|
|
||||||
MergimTriggeredAbility() {
|
|
||||||
super(Zone.BATTLEFIELD, new DamageTargetEffect(2));
|
|
||||||
this.addTarget(new TargetOpponent());
|
|
||||||
}
|
|
||||||
|
|
||||||
MergimTriggeredAbility(final MergimTriggeredAbility ability) {
|
|
||||||
super(ability);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public MergimTriggeredAbility copy() {
|
|
||||||
return new MergimTriggeredAbility(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkEventType(GameEvent event, Game game) {
|
|
||||||
return event.getType() == EventType.DISCARDED_CARD;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
|
||||||
if (game.getOpponents(this.getControllerId()).contains(event.getPlayerId())) {
|
|
||||||
this.getTargets().get(0).add(event.getPlayerId(), game);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getRule() {
|
|
||||||
return "Whenever an opponent discards a card, {this} deals 2 damage to that player.";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,10 +6,11 @@ package mage.abilities.common;
|
||||||
|
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.constants.SetTargetPointer;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
import mage.target.targetpointer.FixedTarget;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -17,12 +18,20 @@ import mage.game.events.GameEvent.EventType;
|
||||||
*/
|
*/
|
||||||
public class DiscardsACardOpponentTriggeredAbility extends TriggeredAbilityImpl {
|
public class DiscardsACardOpponentTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
|
|
||||||
|
private SetTargetPointer setTargetPointer;
|
||||||
|
|
||||||
public DiscardsACardOpponentTriggeredAbility(Effect effect, Boolean isOptional) {
|
public DiscardsACardOpponentTriggeredAbility(Effect effect, Boolean isOptional) {
|
||||||
|
this(effect, isOptional, SetTargetPointer.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DiscardsACardOpponentTriggeredAbility(Effect effect, Boolean isOptional, SetTargetPointer setTargetPointer) {
|
||||||
super(Zone.BATTLEFIELD, effect, isOptional);
|
super(Zone.BATTLEFIELD, effect, isOptional);
|
||||||
|
this.setTargetPointer = setTargetPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiscardsACardOpponentTriggeredAbility(final DiscardsACardOpponentTriggeredAbility ability) {
|
public DiscardsACardOpponentTriggeredAbility(final DiscardsACardOpponentTriggeredAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
|
this.setTargetPointer = ability.setTargetPointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,7 +46,19 @@ public class DiscardsACardOpponentTriggeredAbility extends TriggeredAbilityImpl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
return game.getOpponents(controllerId).contains(event.getPlayerId());
|
if (game.getOpponents(controllerId).contains(event.getPlayerId())) {
|
||||||
|
switch (setTargetPointer) {
|
||||||
|
case PLAYER:
|
||||||
|
for (Effect effect : getEffects()) {
|
||||||
|
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new UnsupportedOperationException(setTargetPointer.toString() + " not supported for this ability.");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue