* Fixed some cards with "When a spell or ability an opponent controls causes you to discard" trigger (e.g. Guerilla Tactics).

This commit is contained in:
LevelX2 2015-10-06 23:26:22 +02:00
parent ac35b41e26
commit af61e8b43b
3 changed files with 32 additions and 17 deletions

View file

@ -97,9 +97,13 @@ class QuagnothTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return game.getOpponents(this.getControllerId()).contains(game.getControllerId(event.getSourceId())) &&
StackObject.class.isInstance(game.getObject(event.getSourceId())) &&
getSourceId().equals(event.getTargetId());
if (getSourceId().equals(event.getTargetId())) {
StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
if (stackObject != null) {
return game.getOpponents(this.getControllerId()).contains(stackObject.getControllerId());
}
}
return false;
}
@Override

View file

@ -50,7 +50,6 @@ public class GuerrillaTactics extends CardImpl {
super(ownerId, 196, "Guerrilla Tactics", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
this.expansionSetCode = "9ED";
// Guerrilla Tactics deals 2 damage to target creature or player.
this.getSpellAbility().addEffect(new DamageTargetEffect(2));
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
@ -91,9 +90,13 @@ class GuerrillaTacticsTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return game.getOpponents(this.getControllerId()).contains(game.getControllerId(event.getSourceId())) &&
StackObject.class.isInstance(game.getObject(event.getSourceId())) &&
getSourceId().equals(event.getTargetId());
if (getSourceId().equals(event.getTargetId())) {
StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
if (stackObject != null) {
return game.getOpponents(this.getControllerId()).contains(stackObject.getControllerId());
}
}
return false;
}
@Override

View file

@ -92,8 +92,9 @@ class PureIntentionsAllTriggeredAbility extends DelayedTriggeredAbility {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
if (game.getOpponents(this.getControllerId()).contains(game.getControllerId(event.getSourceId())) &&
StackObject.class.isInstance(game.getObject(event.getSourceId()))) {
StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
if (stackObject != null
&& game.getOpponents(this.getControllerId()).contains(stackObject.getControllerId())) {
Card card = game.getCard(event.getTargetId());
if (card != null && card.getOwnerId().equals(getControllerId())) {
for (Effect effect : getEffects()) {
@ -116,7 +117,6 @@ class PureIntentionsAllTriggeredAbility extends DelayedTriggeredAbility {
}
}
class PureIntentionsTriggeredAbility extends TriggeredAbilityImpl {
public PureIntentionsTriggeredAbility() {
@ -140,9 +140,17 @@ class PureIntentionsTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
return game.getOpponents(this.getControllerId()).contains(game.getControllerId(event.getSourceId())) &&
StackObject.class.isInstance(game.getObject(event.getSourceId())) &&
event.getTargetId().equals(getSourceId());
if (getSourceId().equals(event.getTargetId())) {
StackObject stackObject = game.getStack().getStackObject(event.getSourceId());
if (stackObject != null
&& game.getOpponents(this.getControllerId()).contains(stackObject.getControllerId())) {
for (Effect effect : getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
}
return true;
}
}
return false;
}
@Override