mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
@@ -910,6 +910,11 @@ public final class GameActionUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ability.getApi() == ApiType.Charm) {
|
||||||
|
// reset chain
|
||||||
|
ability.setSubAbility(null);
|
||||||
|
}
|
||||||
|
|
||||||
ability.clearTargets();
|
ability.clearTargets();
|
||||||
|
|
||||||
ability.resetOnceResolved();
|
ability.resetOnceResolved();
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
|
|||||||
// TODO can't attach later or moveToPlay would attach indirectly
|
// 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
|
// bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection
|
||||||
gameCard.attachToEntity(game.getCardState(attachedTo), sa, true);
|
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;
|
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
|
// bypass canBeAttached to skip Protection checks when trying to attach multiple auras that would grant protection
|
||||||
c.attachToEntity(game.getCardState(attachedTo), sa, true);
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ public class DigUntilEffect extends SpellAbilityEffect {
|
|||||||
params.put("Attach", c);
|
params.put("Attach", c);
|
||||||
Card attachedTo = p.getController().chooseSingleEntityForEffect(list, sa, Localizer.getInstance().getMessage("lblSelectACardAttachSourceTo", c.toString()), params);
|
Card attachedTo = p.getController().chooseSingleEntityForEffect(list, sa, Localizer.getInstance().getMessage("lblSelectACardAttachSourceTo", c.toString()), params);
|
||||||
c.attachToEntity(game.getCardState(attachedTo), sa, true);
|
c.attachToEntity(game.getCardState(attachedTo), sa, true);
|
||||||
} else {
|
} else if (c.isAura()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1063,7 +1063,6 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
// do setup
|
// do setup
|
||||||
this.setupFirstTurn(goesFirst, startGameHook);
|
this.setupFirstTurn(goesFirst, startGameHook);
|
||||||
|
|
||||||
|
|
||||||
// MAIN GAME LOOP
|
// MAIN GAME LOOP
|
||||||
while (!game.isGameOver()) {
|
while (!game.isGameOver()) {
|
||||||
this.mainLoopStep();
|
this.mainLoopStep();
|
||||||
|
|||||||
@@ -80,6 +80,11 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
|
|||||||
sVars.put("StoredTransform", String.valueOf(ability.getHostCard().getTransformedTimestamp()));
|
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 = new StackItemView(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -291,11 +291,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
return;
|
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
|
//cancel auto-pass for all opponents of activating player
|
||||||
//when a new non-triggered ability is put on the stack
|
//when a new non-triggered ability is put on the stack
|
||||||
if (!sp.isTrigger()) {
|
if (!sp.isTrigger()) {
|
||||||
@@ -312,6 +307,10 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
sp.changeText();
|
sp.changeText();
|
||||||
sp.setOriginalAbility(original);
|
sp.setOriginalAbility(original);
|
||||||
original.setXManaCostPaid(null);
|
original.setXManaCostPaid(null);
|
||||||
|
if (original.getApi() == ApiType.Charm) {
|
||||||
|
// reset chain
|
||||||
|
original.setSubAbility(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frozen && !sp.hasParam("IgnoreFreeze")) {
|
if (frozen && !sp.hasParam("IgnoreFreeze")) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ ManaCost:R G
|
|||||||
Types:Legendary Creature Gnoll
|
Types:Legendary Creature Gnoll
|
||||||
PT:2/2
|
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.
|
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:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.attacking | NumAtt$ 1
|
||||||
SVar:X:Count$CardPower
|
SVar:X:Count$CardPower
|
||||||
SVar:Y:Count$CardToughness
|
SVar:Y:Count$CardToughness
|
||||||
|
|||||||
Reference in New Issue
Block a user