mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
* Icefall Regent, Monastery Siege, Elderwood Scion, Accursed Witch, Infectious Curse - Fixed target check not working for multi modal spells (fixed #2114).
This commit is contained in:
parent
e9c994d8e5
commit
94e59e5ee7
5 changed files with 65 additions and 53 deletions
|
@ -30,6 +30,7 @@ package mage.sets.dragonsoftarkir;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -125,9 +126,9 @@ class IcefallRegentEffect extends ContinuousRuleModifyingEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checksEventType(GameEvent event, Game game) {
|
public boolean checksEventType(GameEvent event, Game game) {
|
||||||
return event.getType() == GameEvent.EventType.LOST_CONTROL ||
|
return event.getType() == GameEvent.EventType.LOST_CONTROL
|
||||||
event.getType() == GameEvent.EventType.ZONE_CHANGE ||
|
|| event.getType() == GameEvent.EventType.ZONE_CHANGE
|
||||||
event.getType() == GameEvent.EventType.UNTAP;
|
|| event.getType() == GameEvent.EventType.UNTAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -226,7 +227,8 @@ class IcefallRegentCostIncreaseEffect extends CostModificationEffectImpl {
|
||||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||||
if (abilityToModify instanceof SpellAbility) {
|
if (abilityToModify instanceof SpellAbility) {
|
||||||
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
||||||
for (Target target :abilityToModify.getTargets()) {
|
for (Mode mode : abilityToModify.getModes().getSelectedModes()) {
|
||||||
|
for (Target target : mode.getTargets()) {
|
||||||
for (UUID targetUUID : target.getTargets()) {
|
for (UUID targetUUID : target.getTargets()) {
|
||||||
if (targetUUID.equals(source.getSourceId())) {
|
if (targetUUID.equals(source.getSourceId())) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -235,6 +237,7 @@ class IcefallRegentCostIncreaseEffect extends CostModificationEffectImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ package mage.sets.fatereforged;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.BeginningOfDrawTriggeredAbility;
|
import mage.abilities.common.BeginningOfDrawTriggeredAbility;
|
||||||
import mage.abilities.common.EntersBattlefieldAbility;
|
import mage.abilities.common.EntersBattlefieldAbility;
|
||||||
|
@ -108,7 +109,8 @@ class MonasterySiegeCostIncreaseEffect extends CostModificationEffectImpl {
|
||||||
if (new ModeChoiceSourceCondition("Dragons").apply(game, source)) {
|
if (new ModeChoiceSourceCondition("Dragons").apply(game, source)) {
|
||||||
if (abilityToModify instanceof SpellAbility) {
|
if (abilityToModify instanceof SpellAbility) {
|
||||||
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
||||||
for (Target target : abilityToModify.getTargets()) {
|
for (Mode mode : abilityToModify.getModes().getSelectedModes()) {
|
||||||
|
for (Target target : mode.getTargets()) {
|
||||||
for (UUID targetUUID : target.getTargets()) {
|
for (UUID targetUUID : target.getTargets()) {
|
||||||
if (targetUUID.equals(source.getControllerId())) {
|
if (targetUUID.equals(source.getControllerId())) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -122,6 +124,7 @@ class MonasterySiegeCostIncreaseEffect extends CostModificationEffectImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,10 @@
|
||||||
*/
|
*/
|
||||||
package mage.sets.planechase2012;
|
package mage.sets.planechase2012;
|
||||||
|
|
||||||
import mage.constants.CardType;
|
import java.util.UUID;
|
||||||
import mage.constants.Rarity;
|
|
||||||
import mage.constants.Zone;
|
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
||||||
|
@ -39,15 +38,16 @@ import mage.abilities.keyword.FlashbackAbility;
|
||||||
import mage.abilities.keyword.LifelinkAbility;
|
import mage.abilities.keyword.LifelinkAbility;
|
||||||
import mage.abilities.keyword.TrampleAbility;
|
import mage.abilities.keyword.TrampleAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.CostModificationType;
|
||||||
import mage.constants.Duration;
|
import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.target.Target;
|
import mage.target.Target;
|
||||||
import mage.util.CardUtil;
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
import mage.constants.CostModificationType;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author LevelX2
|
* @author LevelX2
|
||||||
|
@ -106,7 +106,8 @@ class ElderwoodScionCostReductionEffect extends CostModificationEffectImpl {
|
||||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||||
if (abilityToModify instanceof SpellAbility || abilityToModify instanceof FlashbackAbility) {
|
if (abilityToModify instanceof SpellAbility || abilityToModify instanceof FlashbackAbility) {
|
||||||
if (abilityToModify.getControllerId().equals(source.getControllerId())) {
|
if (abilityToModify.getControllerId().equals(source.getControllerId())) {
|
||||||
for (Target target :abilityToModify.getTargets()) {
|
for (Mode mode : abilityToModify.getModes().getSelectedModes()) {
|
||||||
|
for (Target target : mode.getTargets()) {
|
||||||
for (UUID targetUUID : target.getTargets()) {
|
for (UUID targetUUID : target.getTargets()) {
|
||||||
if (targetUUID.equals(source.getSourceId())) {
|
if (targetUUID.equals(source.getSourceId())) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -115,6 +116,7 @@ class ElderwoodScionCostReductionEffect extends CostModificationEffectImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ package mage.sets.shadowsoverinnistrad;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.MageInt;
|
import mage.MageInt;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.common.DiesTriggeredAbility;
|
import mage.abilities.common.DiesTriggeredAbility;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -139,7 +140,8 @@ class AccursedWitchSpellsCostReductionEffect extends CostModificationEffectImpl
|
||||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||||
if (abilityToModify instanceof SpellAbility) {
|
if (abilityToModify instanceof SpellAbility) {
|
||||||
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
if (game.getOpponents(source.getControllerId()).contains(abilityToModify.getControllerId())) {
|
||||||
for (Target target : abilityToModify.getTargets()) {
|
for (Mode mode : abilityToModify.getModes().getSelectedModes()) {
|
||||||
|
for (Target target : mode.getTargets()) {
|
||||||
for (UUID targetUUID : target.getTargets()) {
|
for (UUID targetUUID : target.getTargets()) {
|
||||||
Permanent permanent = game.getPermanent(targetUUID);
|
Permanent permanent = game.getPermanent(targetUUID);
|
||||||
if (permanent != null && permanent.getId().equals(source.getSourceId())) {
|
if (permanent != null && permanent.getId().equals(source.getSourceId())) {
|
||||||
|
@ -149,6 +151,7 @@ class AccursedWitchSpellsCostReductionEffect extends CostModificationEffectImpl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,5 +160,3 @@ class AccursedWitchSpellsCostReductionEffect extends CostModificationEffectImpl
|
||||||
return new AccursedWitchSpellsCostReductionEffect(this);
|
return new AccursedWitchSpellsCostReductionEffect(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ package mage.sets.shadowsoverinnistrad;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.Mode;
|
||||||
import mage.abilities.SpellAbility;
|
import mage.abilities.SpellAbility;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
import mage.abilities.TriggeredAbilityImpl;
|
||||||
import mage.abilities.common.SimpleStaticAbility;
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
@ -154,7 +155,8 @@ class InfectiousCurseCostReductionEffect extends CostModificationEffectImpl {
|
||||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||||
if (abilityToModify instanceof SpellAbility) {
|
if (abilityToModify instanceof SpellAbility) {
|
||||||
if (source.getControllerId().equals(abilityToModify.getControllerId())) {
|
if (source.getControllerId().equals(abilityToModify.getControllerId())) {
|
||||||
for (Target target : abilityToModify.getTargets()) {
|
for (Mode mode : abilityToModify.getModes().getSelectedModes()) {
|
||||||
|
for (Target target : mode.getTargets()) {
|
||||||
for (UUID targetUUID : target.getTargets()) {
|
for (UUID targetUUID : target.getTargets()) {
|
||||||
Permanent enchantment = game.getPermanent(source.getSourceId());
|
Permanent enchantment = game.getPermanent(source.getSourceId());
|
||||||
UUID attachedTo = enchantment.getAttachedTo();
|
UUID attachedTo = enchantment.getAttachedTo();
|
||||||
|
@ -165,6 +167,7 @@ class InfectiousCurseCostReductionEffect extends CostModificationEffectImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue