xpdrop: Fix event

This commit is contained in:
Owain van Brakel
2019-11-27 21:17:08 +01:00
parent b2a609b0b5
commit 962274152c

View File

@@ -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;