mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
make sure Trigger, StaticAbility and ReplacementEffect obey RemoveAllAbilities in AF Animate/AnimateAll
This commit is contained in:
@@ -32,6 +32,7 @@ import forge.ComputerUtil;
|
|||||||
import forge.Constant;
|
import forge.Constant;
|
||||||
import forge.Constant.Zone;
|
import forge.Constant.Zone;
|
||||||
import forge.Player;
|
import forge.Player;
|
||||||
|
import forge.card.replacement.ReplacementEffect;
|
||||||
import forge.card.spellability.AbilityActivated;
|
import forge.card.spellability.AbilityActivated;
|
||||||
import forge.card.spellability.AbilitySub;
|
import forge.card.spellability.AbilitySub;
|
||||||
import forge.card.spellability.Spell;
|
import forge.card.spellability.Spell;
|
||||||
@@ -637,6 +638,26 @@ public final class AbilityFactoryAnimate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// suppress static abilities from the animated card
|
||||||
|
final ArrayList<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
|
||||||
|
if (params.containsKey("OverwriteStatics") || params.containsKey("RemoveAllAbilities")) {
|
||||||
|
final ArrayList<StaticAbility> staticsToRemove = c.getStaticAbilities();
|
||||||
|
for (final StaticAbility stAb : staticsToRemove) {
|
||||||
|
stAb.setTemporarilySuppressed(true);
|
||||||
|
removedStatics.add(stAb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// suppress static abilities from the animated card
|
||||||
|
final ArrayList<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
|
||||||
|
if (params.containsKey("OverwriteReplacements") || params.containsKey("RemoveAllAbilities")) {
|
||||||
|
final ArrayList<ReplacementEffect> replacementsToRemove = c.getReplacementEffects();
|
||||||
|
for (final ReplacementEffect re : replacementsToRemove) {
|
||||||
|
re.setTemporarilySuppressed(true);
|
||||||
|
removedReplacements.add(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final boolean givesStAbs = (stAbs.size() > 0);
|
final boolean givesStAbs = (stAbs.size() > 0);
|
||||||
|
|
||||||
final Command unanimate = new Command() {
|
final Command unanimate = new Command() {
|
||||||
@@ -651,6 +672,16 @@ public final class AbilityFactoryAnimate {
|
|||||||
for (final Trigger t : removedTriggers) {
|
for (final Trigger t : removedTriggers) {
|
||||||
t.setSuppressed(false);
|
t.setSuppressed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// give back suppressed static abilities
|
||||||
|
for (final StaticAbility s : removedStatics) {
|
||||||
|
s.setTemporarilySuppressed(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// give back suppressed replacement effects
|
||||||
|
for (final ReplacementEffect re : removedReplacements) {
|
||||||
|
re.setTemporarilySuppressed(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1178,7 +1209,7 @@ public final class AbilityFactoryAnimate {
|
|||||||
|
|
||||||
// remove abilities
|
// remove abilities
|
||||||
final ArrayList<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
|
final ArrayList<SpellAbility> removedAbilities = new ArrayList<SpellAbility>();
|
||||||
if (params.containsKey("OverwriteAbilities")) {
|
if (params.containsKey("OverwriteAbilities") || params.containsKey("RemoveAllAbilities")) {
|
||||||
for (final SpellAbility ab : c.getSpellAbilities()) {
|
for (final SpellAbility ab : c.getSpellAbilities()) {
|
||||||
if (ab.isAbility()) {
|
if (ab.isAbility()) {
|
||||||
c.removeSpellAbility(ab);
|
c.removeSpellAbility(ab);
|
||||||
@@ -1197,6 +1228,36 @@ public final class AbilityFactoryAnimate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// suppress triggers from the animated card
|
||||||
|
final ArrayList<Trigger> removedTriggers = new ArrayList<Trigger>();
|
||||||
|
if (params.containsKey("OverwriteTriggers") || params.containsKey("RemoveAllAbilities")) {
|
||||||
|
final ArrayList<Trigger> triggersToRemove = c.getTriggers();
|
||||||
|
for (final Trigger trigger : triggersToRemove) {
|
||||||
|
trigger.setSuppressed(true);
|
||||||
|
removedTriggers.add(trigger);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// suppress static abilities from the animated card
|
||||||
|
final ArrayList<StaticAbility> removedStatics = new ArrayList<StaticAbility>();
|
||||||
|
if (params.containsKey("OverwriteStatics") || params.containsKey("RemoveAllAbilities")) {
|
||||||
|
final ArrayList<StaticAbility> staticsToRemove = c.getStaticAbilities();
|
||||||
|
for (final StaticAbility stAb : staticsToRemove) {
|
||||||
|
stAb.setTemporarilySuppressed(true);
|
||||||
|
removedStatics.add(stAb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// suppress static abilities from the animated card
|
||||||
|
final ArrayList<ReplacementEffect> removedReplacements = new ArrayList<ReplacementEffect>();
|
||||||
|
if (params.containsKey("OverwriteReplacements") || params.containsKey("RemoveAllAbilities")) {
|
||||||
|
final ArrayList<ReplacementEffect> replacementsToRemove = c.getReplacementEffects();
|
||||||
|
for (final ReplacementEffect re : replacementsToRemove) {
|
||||||
|
re.setTemporarilySuppressed(true);
|
||||||
|
removedReplacements.add(re);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// give sVars
|
// give sVars
|
||||||
if (sVars.size() > 0) {
|
if (sVars.size() > 0) {
|
||||||
for (final String s : sVars) {
|
for (final String s : sVars) {
|
||||||
@@ -1212,6 +1273,21 @@ public final class AbilityFactoryAnimate {
|
|||||||
public void execute() {
|
public void execute() {
|
||||||
AbilityFactoryAnimate.doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers,
|
AbilityFactoryAnimate.doUnanimate(c, af, finalDesc, hiddenKeywords, addedAbilities, addedTriggers,
|
||||||
colorTimestamp, false, removedAbilities, timestamp);
|
colorTimestamp, false, removedAbilities, timestamp);
|
||||||
|
|
||||||
|
// give back suppressed triggers
|
||||||
|
for (final Trigger t : removedTriggers) {
|
||||||
|
t.setSuppressed(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// give back suppressed static abilities
|
||||||
|
for (final StaticAbility s : removedStatics) {
|
||||||
|
s.setTemporarilySuppressed(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// give back suppressed replacement effects
|
||||||
|
for (final ReplacementEffect re : removedReplacements) {
|
||||||
|
re.setTemporarilySuppressed(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user