diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java index fd66d3c91a..d158b151a7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsCounterPlugin.java @@ -186,36 +186,36 @@ public class DpsCounterPlugin extends Plugin Hitsplat hitsplat = hitsplatApplied.getHitsplat(); + final int npcId = ((NPC) actor).getId(); + final boolean isBoss = BOSSES.contains(npcId); + if (hitsplat.isMine()) { - final int npcId = ((NPC) actor).getId(); - boolean isBoss = BOSSES.contains(npcId); + int hit = hitsplat.getAmount(); + PartyMember localMember = partyService.getLocalMember(); + + // broadcast damage + if (localMember != null) + { + final DpsUpdate dpsUpdate = new DpsUpdate(hit, isBoss); + dpsUpdate.setMemberId(localMember.getMemberId()); + wsClient.send(dpsUpdate); + } + if (dpsConfig.bossDamage() && !isBoss) { return; } - int hit = hitsplat.getAmount(); - // Update local member - PartyMember localMember = partyService.getLocalMember(); // If not in a party, user local player name final String name = localMember == null ? player.getName() : localMember.getName(); DpsMember dpsMember = members.computeIfAbsent(name, DpsMember::new); dpsMember.addDamage(hit); - // broadcast damage - if (localMember != null) - { - final DpsUpdate specialCounterUpdate = new DpsUpdate(hit); - specialCounterUpdate.setMemberId(localMember.getMemberId()); - wsClient.send(specialCounterUpdate); - } // apply to total } else if (hitsplat.isOthers()) { - final int npcId = ((NPC) actor).getId(); - boolean isBoss = BOSSES.contains(npcId); if ((dpsConfig.bossDamage() || actor != player.getInteracting()) && !isBoss) { // only track damage to npcs we are attacking, or is a nearby common boss @@ -246,6 +246,12 @@ public class DpsCounterPlugin extends Plugin return; } + // Received non-boss damage, but we only want boss damage + if (!dpsUpdate.isBoss() && dpsConfig.bossDamage()) + { + return; + } + unpause(); DpsMember dpsMember = members.computeIfAbsent(name, DpsMember::new); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsUpdate.java b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsUpdate.java index 81e5859b38..ee1b652c34 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsUpdate.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/dpscounter/DpsUpdate.java @@ -1,5 +1,6 @@ /* * Copyright (c) 2020 Adam + * Copyright (c) 2021, Jonathan Rousseau * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,4 +34,5 @@ import net.runelite.http.api.ws.messages.party.PartyMemberMessage; public class DpsUpdate extends PartyMemberMessage { private int hit; + private boolean isBoss; }