From 41c185a9d71b4d799580f4fe17bbed61a0c29115 Mon Sep 17 00:00:00 2001 From: dekvall Date: Tue, 6 Oct 2020 04:48:48 +0200 Subject: [PATCH] xp-tracker: support league & dmm modifiers for kills remaining --- .../runelite/client/plugins/xptracker/XpState.java | 4 ++-- .../client/plugins/xptracker/XpTrackerPlugin.java | 3 ++- .../client/plugins/xptracker/XpWorldType.java | 14 ++++++++++---- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpState.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpState.java index 16602b0cb4..fac3c16410 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpState.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpState.java @@ -123,7 +123,7 @@ class XpState * @param npc currently interacted NPC * @param npcHealth health of currently interacted NPC */ - void updateNpcExperience(Skill skill, NPC npc, Integer npcHealth) + void updateNpcExperience(Skill skill, NPC npc, Integer npcHealth, int xpModifier) { if (npc == null || npc.getCombatLevel() <= 0 || npcHealth == null) { @@ -131,7 +131,7 @@ class XpState } final XpStateSingle state = getSkill(skill); - final int actionExp = (int) (npcHealth * getCombatXPModifier(skill)); + final int actionExp = (int) (npcHealth * getCombatXPModifier(skill) * xpModifier); final XpAction action = state.getXpAction(XpActionType.ACTOR_HEALTH); if (action.isActionsHistoryInitialized()) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java index a13fba8575..82c742e47f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java @@ -377,8 +377,9 @@ public class XpTrackerPlugin extends Plugin final Actor interacting = client.getLocalPlayer().getInteracting(); if (interacting instanceof NPC && COMBAT.contains(skill)) { + final int xpModifier = worldSetToType(client.getWorldType()).getXpModifier(); final NPC npc = (NPC) interacting; - xpState.updateNpcExperience(skill, npc, npcManager.getHealth(npc.getId())); + xpState.updateNpcExperience(skill, npc, npcManager.getHealth(npc.getId()), xpModifier); } final XpUpdateResult updateResult = xpState.updateSkill(skill, currentXp, startGoalXp, endGoalXp); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpWorldType.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpWorldType.java index b998a2f8b0..cc62695c92 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpWorldType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpWorldType.java @@ -24,14 +24,20 @@ */ package net.runelite.client.plugins.xptracker; +import lombok.Getter; +import lombok.RequiredArgsConstructor; import net.runelite.api.WorldType; +@Getter +@RequiredArgsConstructor enum XpWorldType { - NORMAL, - TOURNEY, - DMM, - LEAGUE; + NORMAL(1), + TOURNEY(1), + DMM(5), + LEAGUE(5); + + private final int xpModifier; static XpWorldType of(WorldType type) {