Improve resetOriginalHost (#5939)

Co-authored-by: TRT <>
This commit is contained in:
tool4ever
2024-08-17 09:58:34 +02:00
committed by GitHub
parent 852cdacb02
commit 1857d1795d
10 changed files with 10 additions and 24 deletions

View File

@@ -56,7 +56,6 @@ public class IncubateEffect extends TokenEffectBase {
triggerList, combatChanged, sa);
triggerList.triggerChangesZoneAll(game, sa);
triggerList.clear();
game.fireEvent(new GameEventTokenCreated());

View File

@@ -1,7 +1,5 @@
package forge.game.ability.effects;
import java.util.List;
import forge.GameCommand;
import forge.game.Game;
import forge.game.ability.AbilityFactory;
@@ -22,8 +20,7 @@ public class SkipPhaseEffect extends SpellAbilityEffect {
final String phase = sa.getParam("Phase");
final String step = sa.getParam("Step");
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
for (final Player player : getTargetPlayers(sa)) {
sb.append(player).append(" ");
sb.append("skips their ");
if (duration == null) {
@@ -45,8 +42,7 @@ public class SkipPhaseEffect extends SpellAbilityEffect {
final String phase = sa.getParam("Phase");
final String step = sa.getParam("Step");
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
for (final Player player : getTargetPlayers(sa)) {
createSkipPhaseEffect(sa, player, duration, phase, step);
}
}

View File

@@ -1,7 +1,5 @@
package forge.game.ability.effects;
import java.util.List;
import forge.game.Game;
import forge.game.ability.AbilityFactory;
import forge.game.ability.AbilityUtils;
@@ -22,8 +20,7 @@ public class SkipTurnEffect extends SpellAbilityEffect {
final StringBuilder sb = new StringBuilder();
final int numTurns = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumTurns"), sa);
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
for (final Player player : getTargetPlayers(sa)) {
sb.append(player).append(" ");
}
@@ -44,8 +41,7 @@ public class SkipTurnEffect extends SpellAbilityEffect {
String exile = "DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile " +
"| ConditionCheckSVar$ NumTurns | ConditionSVarCompare$ EQ0";
List<Player> tgtPlayers = getTargetPlayers(sa);
for (final Player player : tgtPlayers) {
for (final Player player : getTargetPlayers(sa)) {
final Card eff = createEffect(sa, player, name, image);
eff.setSVar("NumTurns", "Number$" + numTurns);
SpellAbility calcTurn = AbilityFactory.getAbility(effect, eff);

View File

@@ -117,7 +117,7 @@ public abstract class TokenEffectBase extends SpellAbilityEffect {
for (int i = 0; i < cellAmount; i++) {
Card tok = new CardCopyService(prototype).copyCard(true);
// disconnect from prototype
tok.getStates().forEach(cs -> tok.getState(cs).resetOriginalHost());
tok.getStates().forEach(cs -> tok.getState(cs).resetOriginalHost(prototype));
// Crafty Cutpurse would change under which control it does enter,
// but it shouldn't change who creates the token
tok.setOwner(creator);

View File

@@ -10,7 +10,6 @@ import forge.game.spellability.SpellAbility;
import java.util.List;
public class VillainousChoiceEffect extends SpellAbilityEffect {
@Override
public void resolve(SpellAbility sa) {

View File

@@ -1991,7 +1991,6 @@ public class CardFactoryUtil {
final Trigger t = TriggerHandler.parseTrigger(trigStr, card, intrinsic);
t.setOverridingAbility(sa);
inst.addTrigger(t);
} else if (keyword.startsWith("Prize")) {
final String[] k = keyword.split(":");

View File

@@ -757,9 +757,10 @@ public class CardState extends GameObject implements IHasSVars {
.build();
}
public void resetOriginalHost() {
public void resetOriginalHost(Card oldHost) {
for (final CardTraitBase ctb : getTraits()) {
if (ctb.isIntrinsic()) {
if (ctb.isIntrinsic() && ctb.getOriginalHost() != null && ctb.getOriginalHost().equals(oldHost)) {
// only update traits with undesired host or SVar lookup would fail
ctb.setCardState(this);
}
}

View File

@@ -193,10 +193,6 @@ public class PlayerProperty {
if (!player.hasTappedLandForManaThisTurn()) {
return false;
}
} else if (property.equals("NoCardsInHandAtBeginningOfTurn")) {
if (player.getNumCardsInHandStartedThisTurnWith() > 0) {
return false;
}
} else if (property.equals("CardsInHandAtBeginningOfTurn")) {
if (player.getNumCardsInHandStartedThisTurnWith() <= 0) {
return false;