From ddca02389303b216cdc59731a10368b56b022006 Mon Sep 17 00:00:00 2001 From: Scott Burns Date: Thu, 23 May 2019 02:01:08 +0200 Subject: [PATCH] Add fakeXpDrop support --- .../plugins/experiencedrop/XpDropPlugin.java | 28 +++++++++++++++++++ 1 file changed, 28 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 030595aeaf..b15a0511e3 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 @@ -1,4 +1,6 @@ /* + * Copyright (c) 2019, Owain van Brakel + * Copyright (c) 2019, TheStonedTurtle * Copyright (c) 2018, Cameron , SoyChai * All rights reserved. * @@ -45,6 +47,7 @@ import net.runelite.api.WorldType; import net.runelite.api.events.ExperienceChanged; 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; @@ -342,6 +345,31 @@ public class XpDropPlugin extends Plugin } } + @Subscribe + public void onScriptCallbackEvent(ScriptCallbackEvent e) + { + final String eventName = e.getEventName(); + + // Handles Fake XP drops (Ironman, DMM Cap, 200m xp, etc) + if (eventName.equals("fakeXpDrop")) + { + final int[] intStack = client.getIntStack(); + final int intStackSize = client.getIntStackSize(); + + final int skillId = intStack[intStackSize - 2]; + final Skill skill = Skill.values()[skillId]; + if (skill.equals(Skill.HITPOINTS)) + { + final int exp = intStack[intStackSize - 1]; + final double damageDealt = calculateDamageDealt(exp); + damage = (int) Math.rint(damageDealt); + tickShow = 3; + } + + client.setIntStackSize(intStackSize - 2); + } + } + private double calculateDamageDealt(double diff) { double damageDealt = diff / HITPOINT_RATIO;