Merge pull request #3828 from tool4ever/fix27

Some fixes
This commit is contained in:
kevlahnota
2023-09-30 04:29:48 +08:00
committed by GitHub
7 changed files with 18 additions and 10 deletions

View File

@@ -910,6 +910,11 @@ public final class GameActionUtil {
}
}
if (ability.getApi() == ApiType.Charm) {
// reset chain
ability.setSubAbility(null);
}
ability.clearTargets();
ability.resetOnceResolved();

View File

@@ -636,7 +636,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
// TODO can't attach later or moveToPlay would attach indirectly
// bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection
gameCard.attachToEntity(game.getCardState(attachedTo), sa, true);
} else { // When it should enter the battlefield attached to an illegal permanent it fails
} else if (gameCard.isAura()) { // When it should enter the battlefield attached to an illegal permanent it fails
continue;
}
}
@@ -1366,7 +1366,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
// bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection
c.attachToEntity(game.getCardState(attachedTo), sa, true);
}
else { // When it should enter the battlefield attached to an illegal permanent it fails
else if (c.isAura()) { // When it should enter the battlefield attached to an illegal permanent it fails
continue;
}
}

View File

@@ -231,7 +231,7 @@ public class DigUntilEffect extends SpellAbilityEffect {
params.put("Attach", c);
Card attachedTo = p.getController().chooseSingleEntityForEffect(list, sa, Localizer.getInstance().getMessage("lblSelectACardAttachSourceTo", c.toString()), params);
c.attachToEntity(game.getCardState(attachedTo), sa, true);
} else {
} else if (c.isAura()) {
continue;
}
}

View File

@@ -1063,7 +1063,6 @@ public class PhaseHandler implements java.io.Serializable {
// do setup
this.setupFirstTurn(goesFirst, startGameHook);
// MAIN GAME LOOP
while (!game.isGameOver()) {
this.mainLoopStep();

View File

@@ -80,6 +80,11 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
sVars.put("StoredTransform", String.valueOf(ability.getHostCard().getTransformedTimestamp()));
}
if (sa.getApi() == ApiType.Charm && sa.hasParam("ChoiceRestriction")) {
// Remember the Choice here for later handling
sa.getHostCard().addChosenModes(sa, sa.getSubAbility().getDescription(), sa.getHostCard().getGame().getPhaseHandler().inCombat());
}
view = new StackItemView(this);
}

View File

@@ -291,11 +291,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
return;
}
if (sp.getApi() == ApiType.Charm && sp.hasParam("ChoiceRestriction")) {
// Remember the Choice here for later handling
source.addChosenModes(sp, sp.getSubAbility().getDescription(), game.getPhaseHandler().inCombat());
}
//cancel auto-pass for all opponents of activating player
//when a new non-triggered ability is put on the stack
if (!sp.isTrigger()) {
@@ -312,6 +307,10 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
sp.changeText();
sp.setOriginalAbility(original);
original.setXManaCostPaid(null);
if (original.getApi() == ApiType.Charm) {
// reset chain
original.setSubAbility(null);
}
}
if (frozen && !sp.hasParam("IgnoreFreeze")) {

View File

@@ -3,7 +3,7 @@ ManaCost:R G
Types:Legendary Creature Gnoll
PT:2/2
T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerZones$ Battlefield | CheckSVar$ PackTactics | SVarCompare$ GE6 | NoResolvingCheck$ True | TriggerDescription$ Pack tactics — Whenever CARDNAME attacks, if you attacked with creatures with total power 6 or greater this combat, attacking creatures get +1/+0 until end of turn.
A:AB$ Pump | Cost$ 2 R G | NumAtt$ +X | NumDef$ +Y | Double$ True | SpellDescription$ Double CARDNAME's power and toughness until end of turn.
A:AB$ Pump | Cost$ 2 R G | NumAtt$ +X | NumDef$ +Y | Double$ True | SpellDescription$ Double NICKNAME's power and toughness until end of turn.
SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.attacking | NumAtt$ 1
SVar:X:Count$CardPower
SVar:Y:Count$CardToughness