From 3e8427b5d85ae04afbb1666c5e5ec034f5f79956 Mon Sep 17 00:00:00 2001 From: ThatGamerBlue Date: Wed, 8 Jul 2020 01:20:35 +0100 Subject: [PATCH] scriptvmmixin: fix consuming WorldMapEvents and potentially others without running them --- .../net/runelite/mixins/ScriptVMMixin.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java index 32552f97bf..4205b6a7e4 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java @@ -1,6 +1,6 @@ /* * Copyright (c) 2018 Abex - * Copyright (c) 2020 ThatGamerBlue + * Copyright (c) 2020, ThatGamerBlue * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -51,6 +51,9 @@ public abstract class ScriptVMMixin implements RSClient @Inject private static RSScript currentScript; + @Inject + private static RSScriptEvent rootScriptEvent; + // This field is set by the ScriptVM raw injector @Inject private static int currentScriptPC; @@ -59,6 +62,17 @@ public abstract class ScriptVMMixin implements RSClient @Inject static void setCurrentScript(RSScript script) { + if (rootScriptEvent != null) + { + if (script != null) + { + ScriptPreFired event = new ScriptPreFired((int) script.getHash(), rootScriptEvent); + client.getCallbacks().post(ScriptPreFired.class, event); + } + + rootScriptEvent = null; + } + currentScript = script; } @@ -145,12 +159,11 @@ public abstract class ScriptVMMixin implements RSClient client.getLogger().error("Error in JavaScriptCallback", e); } } - else if (arguments[0] instanceof Integer) + else { try { - final ScriptPreFired pre = new ScriptPreFired((int) arguments[0], event); - client.getCallbacks().post(ScriptPreFired.class, pre); + rootScriptEvent = event; rs$runScript(event, maxExecutionTime); } finally