mirror of
https://github.com/correl/mage.git
synced 2025-03-13 01:09:53 -09:00
Added lockedIn parameter to BoostEffects.
This commit is contained in:
parent
98606e16b7
commit
8618b45bc8
3 changed files with 153 additions and 138 deletions
Mage/src/mage/abilities/effects/common/continious
|
@ -48,10 +48,9 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
|
||||
private DynamicValue power;
|
||||
private DynamicValue toughness;
|
||||
protected boolean excludeSource;
|
||||
protected FilterCreaturePermanent filter;
|
||||
// if true, all dynamic values should be calculated once
|
||||
protected boolean isLockedIn = false;
|
||||
protected boolean excludeSource;
|
||||
protected boolean lockedIn = false;
|
||||
|
||||
public BoostControlledEffect(int power, int toughness, Duration duration) {
|
||||
this(power, toughness, duration, new FilterCreaturePermanent(), false);
|
||||
|
@ -74,11 +73,19 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
}
|
||||
|
||||
public BoostControlledEffect(DynamicValue power, DynamicValue toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource) {
|
||||
this(power, toughness, duration, filter, excludeSource, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lockedIn if true, power and toughness will be calculated only once, when the ability resolves
|
||||
*/
|
||||
public BoostControlledEffect(DynamicValue power, DynamicValue toughness, Duration duration, FilterCreaturePermanent filter, boolean excludeSource, boolean lockedIn) {
|
||||
super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
this.filter = filter;
|
||||
this.excludeSource = excludeSource;
|
||||
this.lockedIn = lockedIn;
|
||||
setText();
|
||||
}
|
||||
|
||||
|
@ -88,7 +95,7 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
this.toughness = effect.toughness;
|
||||
this.filter = effect.filter.copy();
|
||||
this.excludeSource = effect.excludeSource;
|
||||
this.isLockedIn = effect.isLockedIn;
|
||||
this.lockedIn = effect.lockedIn;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -100,13 +107,13 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
public void init(Ability source, Game game) {
|
||||
super.init(source, game);
|
||||
if (this.affectedObjectsSet) {
|
||||
for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
|
||||
for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
|
||||
if (!(excludeSource && perm.getId().equals(source.getSourceId()))) {
|
||||
objects.add(perm.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.isLockedIn) {
|
||||
if (this.lockedIn) {
|
||||
power = new StaticValue(power.calculate(game, source));
|
||||
toughness = new StaticValue(toughness.calculate(game, source));
|
||||
}
|
||||
|
@ -114,7 +121,7 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
|
||||
for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
|
||||
if (!this.affectedObjectsSet || objects.contains(perm.getId())) {
|
||||
if (!(excludeSource && perm.getId().equals(source.getSourceId()))) {
|
||||
perm.addPower(power.calculate(game, source));
|
||||
|
@ -155,8 +162,7 @@ public class BoostControlledEffect extends ContinuousEffectImpl<BoostControlledE
|
|||
staticText = rule;
|
||||
}
|
||||
|
||||
public void setLockedIn(boolean isLockedIn) {
|
||||
this.isLockedIn =isLockedIn;
|
||||
public void setLockedIn(boolean lockedIn) {
|
||||
this.lockedIn = lockedIn;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -46,15 +46,24 @@ import mage.game.permanent.Permanent;
|
|||
public class BoostSourceEffect extends ContinuousEffectImpl<BoostSourceEffect> {
|
||||
private DynamicValue power;
|
||||
private DynamicValue toughness;
|
||||
private boolean lockedIn;
|
||||
|
||||
public BoostSourceEffect(int power, int toughness, Duration duration) {
|
||||
this(new StaticValue(power), new StaticValue(toughness), duration);
|
||||
this(new StaticValue(power), new StaticValue(toughness), duration, false);
|
||||
}
|
||||
|
||||
public BoostSourceEffect(DynamicValue power, DynamicValue toughness, Duration duration) {
|
||||
this(power, toughness, duration, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lockedIn if true, power and toughness will be calculated only once, when the ability resolves
|
||||
*/
|
||||
public BoostSourceEffect(DynamicValue power, DynamicValue toughness, Duration duration, boolean lockedIn) {
|
||||
super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
this.lockedIn = lockedIn;
|
||||
setText();
|
||||
}
|
||||
|
||||
|
@ -62,6 +71,7 @@ public class BoostSourceEffect extends ContinuousEffectImpl<BoostSourceEffect> {
|
|||
super(effect);
|
||||
this.power = effect.power.clone();
|
||||
this.toughness = effect.toughness.clone();
|
||||
this.lockedIn = effect.lockedIn;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -69,6 +79,15 @@ public class BoostSourceEffect extends ContinuousEffectImpl<BoostSourceEffect> {
|
|||
return new BoostSourceEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(Ability source, Game game) {
|
||||
super.init(source, game);
|
||||
if (lockedIn) {
|
||||
power = new StaticValue(power.calculate(game, source));
|
||||
toughness = new StaticValue(toughness.calculate(game, source));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent target = game.getPermanent(source.getSourceId());
|
||||
|
|
|
@ -49,37 +49,31 @@ public class BoostTargetEffect extends ContinuousEffectImpl<BoostTargetEffect> {
|
|||
|
||||
private DynamicValue power;
|
||||
private DynamicValue toughness;
|
||||
// if true, all dynamic values should be calculated once
|
||||
protected boolean isLockedIn = false;
|
||||
private boolean lockedIn;
|
||||
|
||||
public BoostTargetEffect(int power, int toughness, Duration duration) {
|
||||
this(new StaticValue(power), new StaticValue(toughness), duration);
|
||||
this(new StaticValue(power), new StaticValue(toughness), duration, false);
|
||||
}
|
||||
|
||||
public BoostTargetEffect(DynamicValue power, DynamicValue toughness, Duration duration) {
|
||||
super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
this(power, toughness, duration, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param power power value to boost
|
||||
* @param toughness toughness value to boost
|
||||
* @param duration how long does the effecct apply
|
||||
* @param continuousCalculation true = power and toughness will be calculated continuously
|
||||
* false = power and toughness will be calculated once during resolution
|
||||
* @param lockedIn if true, power and toughness will be calculated only once, when the ability resolves
|
||||
*/
|
||||
public BoostTargetEffect(DynamicValue power, DynamicValue toughness, Duration duration, boolean isLockedIn) {
|
||||
public BoostTargetEffect(DynamicValue power, DynamicValue toughness, Duration duration, boolean lockedIn) {
|
||||
super(duration, Layer.PTChangingEffects_7, SubLayer.ModifyPT_7c, Outcome.BoostCreature);
|
||||
this.power = power;
|
||||
this.toughness = toughness;
|
||||
this.isLockedIn = isLockedIn;
|
||||
this.lockedIn = lockedIn;
|
||||
}
|
||||
|
||||
public BoostTargetEffect(final BoostTargetEffect effect) {
|
||||
super(effect);
|
||||
this.power = effect.power.clone();
|
||||
this.toughness = effect.toughness.clone();
|
||||
this.isLockedIn = effect.isLockedIn;
|
||||
this.lockedIn = effect.lockedIn;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -90,7 +84,7 @@ public class BoostTargetEffect extends ContinuousEffectImpl<BoostTargetEffect> {
|
|||
@Override
|
||||
public void init(Ability source, Game game) {
|
||||
super.init(source, game);
|
||||
if (isLockedIn) {
|
||||
if (lockedIn) {
|
||||
power = new StaticValue(power.calculate(game, source));
|
||||
toughness = new StaticValue(toughness.calculate(game, source));
|
||||
}
|
||||
|
@ -140,8 +134,4 @@ public class BoostTargetEffect extends ContinuousEffectImpl<BoostTargetEffect> {
|
|||
sb.append(message);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public void setLockedIn(boolean isLockedIn) {
|
||||
this.isLockedIn =isLockedIn;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue