* Fixed a bug of colorless mana (e.g. caused Heartbeat of Spring not working with Urza's lands).

This commit is contained in:
LevelX2 2016-02-16 17:15:47 +01:00
parent bf934137e8
commit f54c675c4b
15 changed files with 203 additions and 97 deletions

View file

@ -85,7 +85,7 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
if (isOptional()) {
MageObject object = game.getObject(getSourceId());
Player player = game.getPlayer(this.getControllerId());
if (player != null) {
if (player != null && object != null) {
if (!player.chooseUse(getEffects().get(0).getOutcome(), (object != null ? this.getRule(object.getLogName()) : this.getRule()), this, game)) {
return false;
}
@ -129,22 +129,18 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
newRule.insert(4, "may ");
superRule = newRule.toString();
}
} else {
if (this.getTargets().isEmpty()
|| ruleLow.startsWith("exile")
|| ruleLow.startsWith("destroy")
|| ruleLow.startsWith("return")
|| ruleLow.startsWith("tap")
|| ruleLow.startsWith("untap")
|| ruleLow.startsWith("put")
|| ruleLow.startsWith("remove")
|| ruleLow.startsWith("counter")) {
sb.append("you may ");
} else {
if (!ruleLow.startsWith("its controller may")) {
sb.append("you may have ");
}
}
} else if (this.getTargets().isEmpty()
|| ruleLow.startsWith("exile")
|| ruleLow.startsWith("destroy")
|| ruleLow.startsWith("return")
|| ruleLow.startsWith("tap")
|| ruleLow.startsWith("untap")
|| ruleLow.startsWith("put")
|| ruleLow.startsWith("remove")
|| ruleLow.startsWith("counter")) {
sb.append("you may ");
} else if (!ruleLow.startsWith("its controller may")) {
sb.append("you may have ");
}
}
@ -191,12 +187,10 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
if (isLeavesTheBattlefieldTrigger()) {
if (event.getType().equals(EventType.DESTROYED_PERMANENT)) {
source = game.getLastKnownInformation(getSourceId(), Zone.BATTLEFIELD);
} else if (((ZoneChangeEvent) event).getTarget() != null) {
source = ((ZoneChangeEvent) event).getTarget();
} else {
if (((ZoneChangeEvent) event).getTarget() != null) {
source = ((ZoneChangeEvent) event).getTarget();
} else {
source = game.getLastKnownInformation(getSourceId(), ((ZoneChangeEvent) event).getZone());
}
source = game.getLastKnownInformation(getSourceId(), ((ZoneChangeEvent) event).getZone());
}
}