Jorn God of Winter and Kaldrin the Rimestaff

This commit is contained in:
Hans Mackowiak
2021-02-05 04:45:50 +00:00
committed by Michael Kamensky
parent 006fcda2c8
commit 592f708c00
4 changed files with 47 additions and 30 deletions

View File

@@ -211,7 +211,9 @@ public class EffectEffect extends SpellAbilityEffect {
}
if (sa.hasParam("ForgetOnMoved")) {
addForgetOnMovedTrigger(eff, sa.getParam("ForgetOnMoved"));
addForgetOnCastTrigger(eff);
if (!"Stack".equals(sa.getParam("ForgetOnMoved"))) {
addForgetOnCastTrigger(eff);
}
} else if (sa.hasParam("ExileOnMoved")) {
addExileOnMovedTrigger(eff, sa.getParam("ExileOnMoved"));
}

View File

@@ -3,10 +3,7 @@ package forge.game.ability.effects;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
import forge.util.Lang;
public class TapEffect extends SpellAbilityEffect {
@@ -22,11 +19,8 @@ public class TapEffect extends SpellAbilityEffect {
card.clearRemembered();
}
final TargetRestrictions tgt = sa.getTargetRestrictions();
final List<Card> tgtCards = getTargetCards(sa);
for (final Card tgtC : tgtCards) {
if (tgt != null && !tgtC.canBeTargetedBy(sa)) {
for (final Card tgtC : getTargetCards(sa)) {
if (sa.usesTargeting() && !tgtC.canBeTargetedBy(sa)) {
continue;
}
if (tgtC.isInPlay()) {
@@ -47,8 +41,7 @@ public class TapEffect extends SpellAbilityEffect {
final StringBuilder sb = new StringBuilder();
sb.append("Tap ");
final List<Card> tgtCards = getTargetCards(sa);
sb.append(StringUtils.join(tgtCards, ", "));
sb.append(Lang.joinHomogenous(getTargetCards(sa)));
sb.append(".");
return sb.toString();
}

View File

@@ -8,15 +8,10 @@ import forge.game.card.CardLists;
import forge.game.card.CardPredicates.Presets;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions;
import forge.game.zone.ZoneType;
import forge.util.Lang;
import forge.util.Localizer;
import org.apache.commons.lang3.StringUtils;
import java.util.List;
public class UntapEffect extends SpellAbilityEffect {
/* (non-Javadoc)
@@ -33,8 +28,7 @@ public class UntapEffect extends SpellAbilityEffect {
sb.append("up to ").append(sa.getParam("Amount")).append(" ");
sb.append(sa.getParam("UntapType")).append("s");
} else {
List<Card> tgtCards = getTargetCards(sa);
sb.append(StringUtils.join(tgtCards, ", "));
sb.append(Lang.joinHomogenous(getTargetCards(sa)));
}
sb.append(".");
return sb.toString();
@@ -42,20 +36,22 @@ public class UntapEffect extends SpellAbilityEffect {
@Override
public void resolve(SpellAbility sa) {
final TargetRestrictions tgt = sa.getTargetRestrictions();
if (sa.hasParam("UntapUpTo")) {
untapChoose(sa, false);
} else if (sa.hasParam("UntapExactly")) {
untapChoose(sa, true);
} else {
final List<Card> tgtCards = getTargetCards(sa);
for (final Card tgtC : tgtCards) {
if (tgtC.isInPlay() && ((tgt == null) || tgtC.canBeTargetedBy(sa))) {
for (final Card tgtC : getTargetCards(sa)) {
if (sa.usesTargeting() && !tgtC.canBeTargetedBy(sa)) {
continue;
}
if (tgtC.isInPlay()) {
tgtC.untap();
}
if (sa.hasParam("ETB")) {
// do not fire triggers
tgtC.setTapped(false);
}
}
}
}
@@ -74,9 +70,7 @@ public class UntapEffect extends SpellAbilityEffect {
final int num = Integer.parseInt(sa.getParam("Amount"));
final String valid = sa.getParam("UntapType");
final List<Player> definedPlayers = AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa);
for (final Player p : definedPlayers) {
for (final Player p : AbilityUtils.getDefinedPlayers(sa.getHostCard(), sa.getParam("Defined"), sa)) {
CardCollectionView list = CardLists.getValidCards(p.getGame().getCardsIn(ZoneType.Battlefield),
valid, sa.getActivatingPlayer(), sa.getHostCard());
list = CardLists.filter(list, Presets.TAPPED);