mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 20:28:00 +00:00
Saga ETB counters aren't intrinsic (#8549)
This commit is contained in:
@@ -215,6 +215,7 @@ public class GameView extends TrackableObject {
|
||||
}
|
||||
public void setDependencies(Table<StaticAbility, StaticAbility, Set<StaticAbilityLayer>> dependencies) {
|
||||
if (dependencies.isEmpty()) {
|
||||
set(TrackableProperty.Dependencies, "");
|
||||
return;
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -605,18 +605,18 @@ public class CardState extends GameObject implements IHasSVars, ITranslatable {
|
||||
result.add(loyaltyRep);
|
||||
}
|
||||
if (type.isBattle()) {
|
||||
// TODO This is currently breaking for Battle/Defense
|
||||
// Going to script the cards to work but ideally it would happen here
|
||||
if (defenseRep == null) {
|
||||
defenseRep = CardFactoryUtil.makeEtbCounter("etbCounter:DEFENSE:" + this.baseDefense, this, true);
|
||||
}
|
||||
result.add(defenseRep);
|
||||
|
||||
// TODO add Siege "Choose a player to protect it"
|
||||
}
|
||||
|
||||
card.updateReplacementEffects(result, this);
|
||||
|
||||
// below are global rules
|
||||
if (type.hasSubtype("Saga") && !hasKeyword(Keyword.READ_AHEAD)) {
|
||||
if (sagaRep == null) {
|
||||
sagaRep = CardFactoryUtil.makeEtbCounter("etbCounter:LORE:1", this, true);
|
||||
sagaRep = CardFactoryUtil.makeEtbCounter("etbCounter:LORE:1", this, false);
|
||||
}
|
||||
result.add(sagaRep);
|
||||
}
|
||||
@@ -633,7 +633,6 @@ public class CardState extends GameObject implements IHasSVars, ITranslatable {
|
||||
result.add(omenRep);
|
||||
}
|
||||
|
||||
card.updateReplacementEffects(result, this);
|
||||
return result;
|
||||
}
|
||||
public boolean addReplacementEffect(final ReplacementEffect replacementEffect) {
|
||||
|
||||
@@ -847,35 +847,26 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
||||
}
|
||||
|
||||
public boolean addAllTriggeredAbilitiesToStack() {
|
||||
boolean result = false;
|
||||
Player playerTurn = game.getPhaseHandler().getPlayerTurn();
|
||||
|
||||
if (playerTurn == null) {
|
||||
// caused by DevTools before first turn
|
||||
return false;
|
||||
}
|
||||
if (!hasSimultaneousStackEntries()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Player playerTurn = game.getPhaseHandler().getPlayerTurn();
|
||||
if (playerTurn == null) {
|
||||
// caused by DevTools before first turn
|
||||
return false;
|
||||
}
|
||||
if (!playerTurn.isInGame()) {
|
||||
playerTurn = game.getNextPlayerAfter(playerTurn);
|
||||
}
|
||||
|
||||
// Grab players in turn order starting with the active player
|
||||
List<Player> players = game.getPlayersInTurnOrder(playerTurn);
|
||||
|
||||
boolean result = false;
|
||||
// CR 603.3b
|
||||
for (Player p : players) {
|
||||
if (p.hasLost()) {
|
||||
continue;
|
||||
}
|
||||
result |= chooseOrderOfSimultaneousStackEntry(p, false);
|
||||
}
|
||||
|
||||
for (Player p : players) {
|
||||
if (p.hasLost()) {
|
||||
continue;
|
||||
}
|
||||
result |= chooseOrderOfSimultaneousStackEntry(p, true);
|
||||
}
|
||||
|
||||
@@ -883,10 +874,12 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
||||
}
|
||||
|
||||
private boolean chooseOrderOfSimultaneousStackEntry(final Player activePlayer, boolean isAbilityTriggered) {
|
||||
if (simultaneousStackEntryList.isEmpty()) {
|
||||
if (!activePlayer.isInGame()) {
|
||||
return false;
|
||||
}
|
||||
if (!hasSimultaneousStackEntries()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
activePlayerSAs.clear();
|
||||
for (SpellAbility sa : simultaneousStackEntryList) {
|
||||
if (isAbilityTriggered != (sa.isTrigger() && sa.getTrigger().getMode() == TriggerType.AbilityTriggered)) {
|
||||
|
||||
Reference in New Issue
Block a user