Fix Henzie + Gorex (#8829)

This commit is contained in:
tool4ever
2025-10-04 13:30:21 +02:00
committed by GitHub
parent a2b324c9ce
commit 66a8e1f04f
5 changed files with 15 additions and 17 deletions

View File

@@ -1602,9 +1602,7 @@ public class GameAction {
} }
// recheck the game over condition at this point to make sure no other win conditions apply now. // recheck the game over condition at this point to make sure no other win conditions apply now.
if (!game.isGameOver()) { checkGameOverCondition();
checkGameOverCondition();
}
if (game.getAge() != GameStage.Play) { if (game.getAge() != GameStage.Play) {
return false; return false;
@@ -1885,6 +1883,10 @@ public class GameAction {
} }
public void checkGameOverCondition() { public void checkGameOverCondition() {
if (game.isGameOver()) {
return;
}
// award loses as SBE // award loses as SBE
GameEndReason reason = null; GameEndReason reason = null;
List<Player> losers = null; List<Player> losers = null;

View File

@@ -1069,7 +1069,7 @@ public abstract class SpellAbilityEffect {
// if ability was granted use that source so they can be kept apart later // if ability was granted use that source so they can be kept apart later
if (cause.isCopiedTrait()) { if (cause.isCopiedTrait()) {
exilingSource = cause.getOriginalHost(); exilingSource = cause.getOriginalHost();
} else if (cause.getKeyword() != null && cause.getKeyword().getStatic() != null) { } else if (!cause.isSpell() && cause.getKeyword() != null && cause.getKeyword().getStatic() != null) {
exilingSource = cause.getKeyword().getStatic().getOriginalHost(); exilingSource = cause.getKeyword().getStatic().getOriginalHost();
} }
movedCard.setExiledWith(exilingSource); movedCard.setExiledWith(exilingSource);

View File

@@ -237,17 +237,17 @@ public class Cost implements Serializable {
CostPartMana parsedMana = null; CostPartMana parsedMana = null;
for (String part : parts) { for (String part : parts) {
if (part.startsWith("XMin")) { if (part.startsWith("XMin")) {
xMin = (part); xMin = part;
} else if ("Mandatory".equals(part)) { } else if ("Mandatory".equals(part)) {
this.isMandatory = true; this.isMandatory = true;
} else { } else {
CostPart cp = parseCostPart(part, tapCost, untapCost); CostPart cp = parseCostPart(part, tapCost, untapCost);
if (null != cp) if (null != cp)
if (cp instanceof CostPartMana) { if (cp instanceof CostPartMana p) {
parsedMana = (CostPartMana) cp; parsedMana = p;
} else { } else {
if (cp instanceof CostPartWithList) { if (cp instanceof CostPartWithList p) {
((CostPartWithList)cp).setIntrinsic(intrinsic); p.setIntrinsic(intrinsic);
} }
this.costParts.add(cp); this.costParts.add(cp);
} }

View File

@@ -1,14 +1,12 @@
Name:Aladdin's Lamp Name:Aladdin's Lamp
ManaCost:10 ManaCost:10
Types:Artifact Types:Artifact
A:AB$ StoreSVar | Cost$ XMin1 X T | SVar$ DigNum | Type$ Count | Expression$ xPaid | SubAbility$ TheMagic | SpellDescription$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0. A:AB$ Effect | Cost$ XMin1 X T | Name$ Aladdin's Wish | ReplacementEffects$ DrawReplace | SetChosenNumber$ X | SpellDescription$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0.
SVar:TheMagic:DB$ Effect | Name$ Aladdin's Wish | ReplacementEffects$ DrawReplace
SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ AladdinDraw | Description$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ AladdinDraw | Description$ The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card.
SVar:AladdinDraw:DB$ Dig | DigNum$ DigNum | ChangeNum$ 1 | RestRandomOrder$ True | DestinationZone$ Library | LibraryPosition$ 0 | SubAbility$ DBDraw SVar:AladdinDraw:DB$ Dig | DigNum$ Count$ChosenNumber | ChangeNum$ 1 | RestRandomOrder$ True | DestinationZone$ Library | LibraryPosition$ 0 | SubAbility$ DBDraw
SVar:DBDraw:DB$ Draw | SubAbility$ ExileEffect SVar:DBDraw:DB$ Draw | SubAbility$ ExileEffect
SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:DigNum:Number$0
AI:RemoveDeck:Random AI:RemoveDeck:Random
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{X}, {T}: The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0. Oracle:{X}, {T}: The next time you would draw a card this turn, instead look at the top X cards of your library, put all but one of them on the bottom of your library in a random order, then draw a card. X can't be 0.

View File

@@ -2,10 +2,8 @@ Name:Droning Bureaucrats
ManaCost:3 W ManaCost:3 W
Types:Creature Human Advisor Types:Creature Human Advisor
PT:1/4 PT:1/4
A:AB$ StoreSVar | Cost$ X T | SVar$ DroningX | Type$ Count | Expression$ xPaid | SubAbility$ CreateDroningEffect | SpellDescription$ Each creature with mana value X can't attack or block this turn. A:AB$ Effect | Cost$ X T | StaticAbilities$ NoCombat | SetChosenNumber$ X | SpellDescription$ Each creature with mana value X can't attack or block this turn.
SVar:CreateDroningEffect:DB$ Effect | StaticAbilities$ NoCombat SVar:NoCombat:Mode$ Continuous | Affected$ Creature.cmcChosen | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Each creature with mana value X can't attack or block this turn.
SVar:NoCombat:Mode$ Continuous | Affected$ Creature.cmcEQDroningX | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Each creature with mana value X can't attack or block this turn.
SVar:X:Count$xPaid SVar:X:Count$xPaid
SVar:DroningX:Number$0
AI:RemoveDeck:All AI:RemoveDeck:All
Oracle:{X}, {T}: Each creature with mana value X can't attack or block this turn. Oracle:{X}, {T}: Each creature with mana value X can't attack or block this turn.