mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 11:32:00 -08:00
Additional watchers fixes for #6065, see comments in f21151bca5
This commit is contained in:
parent
97f066a31a
commit
a8d707b469
3 changed files with 35 additions and 11 deletions
|
|
@ -58,7 +58,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
protected ManaCosts<ManaCost> manaCostsToPay;
|
protected ManaCosts<ManaCost> manaCostsToPay;
|
||||||
protected Costs<Cost> costs;
|
protected Costs<Cost> costs;
|
||||||
protected Costs<Cost> optionalCosts;
|
protected Costs<Cost> optionalCosts;
|
||||||
protected Modes modes;
|
protected Modes modes; // access to it by GetModes only (it's can be override by some abilities)
|
||||||
protected Zone zone;
|
protected Zone zone;
|
||||||
protected String name;
|
protected String name;
|
||||||
protected AbilityWord abilityWord;
|
protected AbilityWord abilityWord;
|
||||||
|
|
@ -70,7 +70,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
protected boolean activated = false;
|
protected boolean activated = false;
|
||||||
protected boolean worksFaceDown = false;
|
protected boolean worksFaceDown = false;
|
||||||
protected int sourceObjectZoneChangeCounter;
|
protected int sourceObjectZoneChangeCounter;
|
||||||
protected List<Watcher> watchers = new ArrayList<>();
|
protected List<Watcher> watchers = new ArrayList<>(); // access to it by GetWatchers only (it's can be override by some abilities)
|
||||||
protected List<Ability> subAbilities = null;
|
protected List<Ability> subAbilities = null;
|
||||||
protected boolean canFizzle = true;
|
protected boolean canFizzle = true;
|
||||||
protected TargetAdjuster targetAdjuster = null;
|
protected TargetAdjuster targetAdjuster = null;
|
||||||
|
|
@ -102,7 +102,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
this.manaCostsToPay = ability.manaCostsToPay.copy();
|
this.manaCostsToPay = ability.manaCostsToPay.copy();
|
||||||
this.costs = ability.costs.copy();
|
this.costs = ability.costs.copy();
|
||||||
this.optionalCosts = ability.optionalCosts.copy();
|
this.optionalCosts = ability.optionalCosts.copy();
|
||||||
for (Watcher watcher : ability.watchers) {
|
for (Watcher watcher : ability.getWatchers()) {
|
||||||
watchers.add(watcher.copy());
|
watchers.add(watcher.copy());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -263,8 +263,9 @@ public abstract class AbilityImpl implements Ability {
|
||||||
this.getManaCostsToPay().clear();
|
this.getManaCostsToPay().clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (modes.getAdditionalCost() != null) {
|
|
||||||
modes.getAdditionalCost().addOptionalAdditionalModeCosts(this, game);
|
if (getModes().getAdditionalCost() != null) {
|
||||||
|
getModes().getAdditionalCost().addOptionalAdditionalModeCosts(this, game);
|
||||||
}
|
}
|
||||||
// 20130201 - 601.2b
|
// 20130201 - 601.2b
|
||||||
// If the spell has alternative or additional costs that will be paid as it's being cast such
|
// If the spell has alternative or additional costs that will be paid as it's being cast such
|
||||||
|
|
@ -656,7 +657,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
@Override
|
@Override
|
||||||
public void setControllerId(UUID controllerId) {
|
public void setControllerId(UUID controllerId) {
|
||||||
this.controllerId = controllerId;
|
this.controllerId = controllerId;
|
||||||
for (Watcher watcher : watchers) {
|
for (Watcher watcher : getWatchers()) {
|
||||||
watcher.setControllerId(controllerId);
|
watcher.setControllerId(controllerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -684,7 +685,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
subAbility.setSourceId(sourceId);
|
subAbility.setSourceId(sourceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Watcher watcher : watchers) {
|
for (Watcher watcher : getWatchers()) {
|
||||||
watcher.setSourceId(sourceId);
|
watcher.setSourceId(sourceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -757,7 +758,7 @@ public abstract class AbilityImpl implements Ability {
|
||||||
|
|
||||||
watcher.setSourceId(this.sourceId);
|
watcher.setSourceId(this.sourceId);
|
||||||
watcher.setControllerId(this.controllerId);
|
watcher.setControllerId(this.controllerId);
|
||||||
watchers.add(watcher);
|
getWatchers().add(watcher);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ import mage.abilities.effects.Effects;
|
||||||
import mage.constants.EffectType;
|
import mage.constants.EffectType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
|
import mage.watchers.Watcher;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds condition to {@link mage.abilities.effects.ContinuousEffect}. Acts as
|
* Adds condition to {@link mage.abilities.effects.ContinuousEffect}. Acts as
|
||||||
|
|
@ -37,7 +40,6 @@ public class ConditionalInterveningIfTriggeredAbility extends TriggeredAbilityIm
|
||||||
this.modes = ability.getModes();
|
this.modes = ability.getModes();
|
||||||
this.condition = condition;
|
this.condition = condition;
|
||||||
this.abilityText = text;
|
this.abilityText = text;
|
||||||
this.watchers = ability.getWatchers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConditionalInterveningIfTriggeredAbility(final ConditionalInterveningIfTriggeredAbility triggered) {
|
public ConditionalInterveningIfTriggeredAbility(final ConditionalInterveningIfTriggeredAbility triggered) {
|
||||||
|
|
@ -45,7 +47,6 @@ public class ConditionalInterveningIfTriggeredAbility extends TriggeredAbilityIm
|
||||||
this.ability = triggered.ability.copy();
|
this.ability = triggered.ability.copy();
|
||||||
this.condition = triggered.condition;
|
this.condition = triggered.condition;
|
||||||
this.abilityText = triggered.abilityText;
|
this.abilityText = triggered.abilityText;
|
||||||
this.watchers = triggered.watchers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -93,6 +94,16 @@ public class ConditionalInterveningIfTriggeredAbility extends TriggeredAbilityIm
|
||||||
return ability.getModes();
|
return ability.getModes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Watcher> getWatchers() {
|
||||||
|
return ability.getWatchers();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addWatcher(Watcher watcher) {
|
||||||
|
ability.addWatcher(watcher);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Effects getEffects(Game game, EffectType effectType) {
|
public Effects getEffects(Game game, EffectType effectType) {
|
||||||
return ability.getEffects(game, effectType);
|
return ability.getEffects(game, effectType);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ import mage.abilities.effects.Effects;
|
||||||
import mage.constants.EffectType;
|
import mage.constants.EffectType;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
|
import mage.watchers.Watcher;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds condition to {@link mage.abilities.effects.ContinuousEffect}. Acts as
|
* Adds condition to {@link mage.abilities.effects.ContinuousEffect}. Acts as
|
||||||
|
|
@ -34,7 +37,6 @@ public class ConditionalTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
public ConditionalTriggeredAbility(TriggeredAbility ability, Condition condition, String text) {
|
public ConditionalTriggeredAbility(TriggeredAbility ability, Condition condition, String text) {
|
||||||
super(ability.getZone(), null);
|
super(ability.getZone(), null);
|
||||||
this.ability = ability;
|
this.ability = ability;
|
||||||
this.modes = ability.getModes();
|
|
||||||
this.condition = condition;
|
this.condition = condition;
|
||||||
this.abilityText = text;
|
this.abilityText = text;
|
||||||
}
|
}
|
||||||
|
|
@ -86,6 +88,16 @@ public class ConditionalTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
return ability.getModes();
|
return ability.getModes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Watcher> getWatchers() {
|
||||||
|
return ability.getWatchers();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addWatcher(Watcher watcher) {
|
||||||
|
ability.addWatcher(watcher);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Effects getEffects(Game game, EffectType effectType) {
|
public Effects getEffects(Game game, EffectType effectType) {
|
||||||
return ability.getEffects(game, effectType);
|
return ability.getEffects(game, effectType);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue