X-Git-Url: https://git.pterodactylus.net/?p=rhynodge.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fengine%2FEngine.java;h=23fa69bcc541ba50b0e8fbf861593f7c733d58c9;hp=9e4d883706222a5fd7deeaf771a327e20c9b84b7;hb=9c01d55d3969a1b3df6529df0c64d4feb146fe4d;hpb=9871b8a902d59f6e8eade050d18c77026b6ecc60 diff --git a/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java b/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java index 9e4d883..23fa69b 100644 --- a/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java +++ b/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java @@ -188,14 +188,20 @@ public class Engine extends AbstractExecutionThreadService { state.setFailCount(lastStateFailCount + 1); } net.pterodactylus.rhynodge.State lastSuccessfulState = stateManager.loadLastSuccessfulState(reactionName); - stateManager.saveState(reactionName, state); - /* only run trigger if we have collected two successful states. */ - Trigger trigger = nextReaction.trigger(); + /* merge states. */ boolean triggerHit = false; + Trigger trigger = nextReaction.trigger(); if ((lastSuccessfulState != null) && lastSuccessfulState.success() && state.success()) { - logger.debug("Checking Trigger for changes..."); - triggerHit = trigger.triggers(state, lastSuccessfulState); + net.pterodactylus.rhynodge.State newState = trigger.mergeStates(lastSuccessfulState, state); + + /* save new state. */ + stateManager.saveState(reactionName, newState); + + triggerHit = trigger.triggers(); + } else { + /* save first or error state. */ + stateManager.saveState(reactionName, state); } /* run action if trigger was hit. */