From 962274152ce7838aac2dbb5093cdcf46ebb474d3 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Wed, 27 Nov 2019 21:17:08 +0100 Subject: [PATCH] xpdrop: Fix event --- .../plugins/experiencedrop/XpDropPlugin.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java index df131187fd..5ed9bd71bc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java @@ -46,6 +46,7 @@ import net.runelite.api.WorldType; import net.runelite.api.events.FakeXpDrop; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.WidgetHiddenChanged; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetID; @@ -58,6 +59,7 @@ import net.runelite.client.game.XpDropEvent; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; +import net.runelite.client.util.ColorUtil; @PluginDescriptor( name = "XP Drop", @@ -72,14 +74,19 @@ public class XpDropPlugin extends Plugin private static final double TL_MULTIPLIER_RATIO = 5; private static final int TWISTED_LEAGUE_WAY_OF_THE_WARRIOR = 3; private static final int TWISTED_LEAGUE_XERICS_WISDOM = 3; + @Inject private Client client; + @Inject private XpDropConfig config; + @Inject private NPCManager npcManager; + @Inject private OverlayManager overlayManager; + @Inject private XpDropOverlay overlay; @@ -352,6 +359,45 @@ public class XpDropPlugin extends Plugin } } + @Subscribe + private void onScriptCallbackEvent(ScriptCallbackEvent e) + { + if (this.showdamagedrops == XpDropConfig.DamageMode.NONE) + { + return; + } + + final String eventName = e.getEventName(); + + if (eventName.equals("newXpDrop")) + { + damage = 0; + } + else if (eventName.equals("hpXpGained")) + { + final int[] intStack = client.getIntStack(); + final int intStackSize = client.getIntStackSize(); + + final int exp = intStack[intStackSize - 1]; + calculateDamageDealt(exp); + } + else if (eventName.equals("xpDropAddDamage") + && damageMode == XpDropConfig.DamageMode.IN_XP_DROP + && damage > 0) + { + final String[] stringStack = client.getStringStack(); + final int stringStackSize = client.getStringStackSize(); + + String builder = + stringStack[stringStackSize - 1] + + ColorUtil.colorTag(this.damageColor) + + " (" + + damage + + ")"; + stringStack[stringStackSize - 1] = builder; + } + } + private void calculateDamageDealt(int diff) { double damageDealt = diff / HITPOINT_RATIO;