- runWaitingTriggers will now call checkStaticAbilities before triggers are checked (experimental).

This commit is contained in:
Sloth
2013-04-03 22:05:42 +00:00
parent 1970863c1b
commit e5b20fbb8a
3 changed files with 9 additions and 7 deletions

View File

@@ -169,27 +169,29 @@ public class TriggerHandler {
if (game.getStack().isFrozen() || holdTrigger) { if (game.getStack().isFrozen() || holdTrigger) {
waitingTriggers.add(new TriggerWaiting(mode, runParams)); waitingTriggers.add(new TriggerWaiting(mode, runParams));
} else { } else {
runWaitingTrigger(new TriggerWaiting(mode, runParams), true); runWaitingTrigger(new TriggerWaiting(mode, runParams));
} }
// Tell auto stop to stop // Tell auto stop to stop
} }
public final boolean runWaitingTriggers(boolean runStaticEffects) { public final boolean runWaitingTriggers() {
ArrayList<TriggerWaiting> waiting = new ArrayList<TriggerWaiting>(waitingTriggers); ArrayList<TriggerWaiting> waiting = new ArrayList<TriggerWaiting>(waitingTriggers);
waitingTriggers.clear(); waitingTriggers.clear();
if (waiting.isEmpty()) { if (waiting.isEmpty()) {
return false; return false;
} }
Singletons.getModel().getGame().getAction().checkStaticAbilities();
boolean haveWaiting = false; boolean haveWaiting = false;
for (TriggerWaiting wt : waiting) { for (TriggerWaiting wt : waiting) {
haveWaiting |= runWaitingTrigger(wt, runStaticEffects); haveWaiting |= runWaitingTrigger(wt);
} }
return haveWaiting; return haveWaiting;
} }
public final boolean runWaitingTrigger(TriggerWaiting wt, boolean runStaticEffects) { public final boolean runWaitingTrigger(TriggerWaiting wt) {
final TriggerType mode = wt.getMode(); final TriggerType mode = wt.getMode();
final Map<String, Object> runParams = wt.getParams(); final Map<String, Object> runParams = wt.getParams();
final GameState game = Singletons.getModel().getGame(); final GameState game = Singletons.getModel().getGame();

View File

@@ -848,7 +848,7 @@ public class GameAction {
} }
/** */ /** */
private final void checkStaticAbilities() { public final void checkStaticAbilities() {
// remove old effects // remove old effects
game.getStaticEffects().clearStaticEffects(); game.getStaticEffects().clearStaticEffects();
@@ -1051,7 +1051,7 @@ public class GameAction {
} }
} }
if (game.getTriggerHandler().runWaitingTriggers(true)) { if (game.getTriggerHandler().runWaitingTriggers()) {
checkAgain = true; checkAgain = true;
// Place triggers on stack // Place triggers on stack
} }

View File

@@ -201,7 +201,7 @@ public class MagicStack extends MyObservable {
this.add(sa); this.add(sa);
} }
// Add all waiting triggers onto the stack // Add all waiting triggers onto the stack
checkState |= Singletons.getModel().getGame().getTriggerHandler().runWaitingTriggers(false); checkState |= Singletons.getModel().getGame().getTriggerHandler().runWaitingTriggers();
if (checkState) { if (checkState) {
this.chooseOrderOfSimultaneousStackEntryAll(); this.chooseOrderOfSimultaneousStackEntryAll();
game.getAction().checkStateEffects(); game.getAction().checkStateEffects();