diff --git a/src/main/java/noppes/npcs/controllers/data/action/Action.java b/src/main/java/noppes/npcs/controllers/data/action/Action.java index af0e28320..8ce816541 100644 --- a/src/main/java/noppes/npcs/controllers/data/action/Action.java +++ b/src/main/java/noppes/npcs/controllers/data/action/Action.java @@ -149,9 +149,13 @@ public class Action implements IAction { return done; } + @Override public void kill() { if (actionThread != null) actionThread.stop(); + + dataStore.clear(); + done = true; } @Override diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 796cec2fa..56808721a 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -1407,6 +1407,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti roleInterface.delete(); if (advanced.job != EnumJobType.None && jobInterface != null) jobInterface.delete(); + actionManager.clear(); + super.setDead(); } diff --git a/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java b/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java index 9df292a1d..fe00fd064 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java +++ b/src/main/java/noppes/npcs/scripted/ScriptedActionManager.java @@ -214,43 +214,6 @@ public class ScriptedActionManager implements IActionManager { return false; } - @Override - public void clear() { - actionQueue.clear(); - parallelActions.clear(); - conditionalActions.clear(); - } - - @Override - public boolean cancelAction(String name) { - Iterator acts = actionQueue.iterator(); - while (acts.hasNext()) { - IAction act = acts.next(); - if (act.getName().equals(name)) { - acts.remove(); - return true; - } - } - - Iterator pit = parallelActions.iterator(); - while (pit.hasNext()) { - if (pit.next().getName().equals(name)) { - pit.remove(); - return true; - } - } - - Iterator cons = conditionalActions.iterator(); - while (cons.hasNext()) { - IConditionalAction con = cons.next(); - if (con.getName().equals(name)) { - cons.remove(); - return true; - } - } - return false; - } - /////////////////////////////////////////////////// /////////////////////////////////////////////////// // Conditionals @@ -368,6 +331,48 @@ public class ScriptedActionManager implements IActionManager { } } + @Override + public void clear() { + actionQueue.forEach((act) -> act.kill()); + actionQueue.clear(); + + parallelActions.forEach((act) -> act.kill()); + parallelActions.clear(); + + conditionalActions.forEach((act) -> act.kill()); + conditionalActions.clear(); + } + + @Override + public boolean cancelAction(String name) { + Iterator acts = actionQueue.iterator(); + while (acts.hasNext()) { + IAction act = acts.next(); + if (act.getName().equals(name)) { + acts.remove(); + return true; + } + } + + Iterator pit = parallelActions.iterator(); + while (pit.hasNext()) { + if (pit.next().getName().equals(name)) { + pit.remove(); + return true; + } + } + + Iterator cons = conditionalActions.iterator(); + while (cons.hasNext()) { + IConditionalAction con = cons.next(); + if (con.getName().equals(name)) { + cons.remove(); + return true; + } + } + return false; + } + @Override public IActionChain chain() { return new ActionChain(this);