Card: move changed text and remove PreventAllDamageBy

This commit is contained in:
Hanmac
2018-03-04 20:26:25 +01:00
parent c74b0a017b
commit fffa4cf157
3 changed files with 18 additions and 39 deletions

View File

@@ -1404,8 +1404,7 @@ public class Card extends GameEntity implements Comparable<Card> {
int i = 0; int i = 0;
for (KeywordInterface inst : keywords) { for (KeywordInterface inst : keywords) {
String keyword = inst.getOriginal(); String keyword = inst.getOriginal();
if (keyword.startsWith("PreventAllDamageBy") if (keyword.startsWith("CantEquip")
|| keyword.startsWith("CantEquip")
|| keyword.startsWith("SpellCantTarget")) { || keyword.startsWith("SpellCantTarget")) {
continue; continue;
} }
@@ -3427,17 +3426,7 @@ public class Card extends GameEntity implements Comparable<Card> {
*/ */
private void updateChangedText() { private void updateChangedText() {
resetChangedSVars(); resetChangedSVars();
final List<CardTraitBase> allAbs = ImmutableList.<CardTraitBase>builder() currentState.updateChangedText();
.addAll(getSpellAbilities())
.addAll(getStaticAbilities())
.addAll(getReplacementEffects())
.addAll(getTriggers())
.build();
for (final CardTraitBase ctb : allAbs) {
if (ctb.isIntrinsic()) {
ctb.changeText();
}
}
text = AbilityUtils.applyDescriptionTextChangeEffects(originalText, this); text = AbilityUtils.applyDescriptionTextChangeEffects(originalText, this);
currentState.getView().updateAbilityText(this, currentState); currentState.getView().updateAbilityText(this, currentState);
@@ -4326,15 +4315,6 @@ public class Card extends GameEntity implements Comparable<Card> {
return 0; return 0;
} }
for (KeywordInterface inst : getKeywords()) {
String kw = inst.getOriginal();
if (kw.startsWith("PreventAllDamageBy")) {
if (source.isValid(kw.split(" ", 2)[1].split(","), getController(), this, null)) {
return 0;
}
}
}
// Prevent Damage static abilities // Prevent Damage static abilities
for (final Card ca : getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) { for (final Card ca : getGame().getCardsIn(ZoneType.listValueOf("Battlefield,Command"))) {
for (final StaticAbility stAb : ca.getStaticAbilities()) { for (final StaticAbility stAb : ca.getStaticAbilities()) {

View File

@@ -3460,22 +3460,6 @@ public class CardFactoryUtil {
inst.addReplacement(re); inst.addReplacement(re);
} }
// No finish yet, need card updates
if (keyword.startsWith("PreventAllDamageBy") && keyword.contains(":")) {
final String[] k = keyword.split(":");
String rep = "Event$ DamageDone | Prevent$ True | ValidTarget$ Card.Self | ValidSource$ " + k[1];
rep += "| Description$ ";
if (k.length > 2) {
rep += k[2];
} else {
rep += "Prevent all damage that would be dealt to CARDNAME by " + k[1];
}
ReplacementEffect re = ReplacementHandler.parseReplacement(rep, card, intrinsic);
inst.addReplacement(re);
}
} }
public static void addSpellAbility(final KeywordInterface inst, final Card card, final boolean intrinsic) { public static void addSpellAbility(final KeywordInterface inst, final Card card, final boolean intrinsic) {

View File

@@ -17,12 +17,14 @@
*/ */
package forge.game.card; package forge.game.card;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import forge.card.*; import forge.card.*;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
import forge.card.mana.ManaCostParser; import forge.card.mana.ManaCostParser;
import forge.game.CardTraitBase;
import forge.game.ForgeScript; import forge.game.ForgeScript;
import forge.game.GameObject; import forge.game.GameObject;
import forge.game.card.CardView.CardStateView; import forge.game.card.CardView.CardStateView;
@@ -509,5 +511,18 @@ public class CardState extends GameObject {
} }
} }
public void updateChangedText() {
final List<CardTraitBase> allAbs = ImmutableList.<CardTraitBase>builder()
.addAll(manaAbilities)
.addAll(nonManaAbilities)
.addAll(triggers)
.addAll(replacementEffects)
.addAll(staticAbilities)
.build();
for (final CardTraitBase ctb : allAbs) {
if (ctb.isIntrinsic()) {
ctb.changeText();
}
}
}
} }