diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index ecec5d6f61..93e23206c1 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -161,6 +161,7 @@ public class WidgetID public static final int LMS_INGAME_GROUP_ID = 328; public static final int JEWELLERY_BOX_GROUP_ID = 590; public static final int OPTIONS_GROUP_ID = 261; + public static final int THEATRE_OF_BLOOD_PARTY_GROUP_ID = 28; public static final int GWD_KC_GROUP_ID = 406; static class WorldMap @@ -687,6 +688,11 @@ public class WidgetID static final int BOSS_HEALTH_BAR = 35; } + static class TheatreOfBloodParty + { + static final int CONTAINER = 10; + } + static class ExperienceDrop { static final int DROP_1 = 15; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 60a238b53a..9b4e46336c 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -429,6 +429,8 @@ public enum WidgetInfo MOTHERLODE_MINE(WidgetID.MOTHERLODE_MINE_GROUP_ID, 0), + THEATRE_OF_BLOOD_PARTY(WidgetID.THEATRE_OF_BLOOD_PARTY_GROUP_ID, WidgetID.TheatreOfBloodParty.CONTAINER), + GWD_KC(WidgetID.GWD_KC_GROUP_ID, WidgetID.GWD.CONTAINER), PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/Boss.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/Boss.java index d609ed9d9b..347e349b18 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/Boss.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/Boss.java @@ -46,7 +46,16 @@ enum Boss KING_BLACK_DRAGON(1.075d, NpcID.KING_BLACK_DRAGON, NpcID.KING_BLACK_DRAGON_2642, NpcID.KING_BLACK_DRAGON_6502), KRIL_TSUROTH(1.375d, NpcID.KRIL_TSUTSAROTH, NpcID.KRIL_TSUTSAROTH_6495), VENETENATIS(1.4d, NpcID.VENENATIS, NpcID.VENENATIS_6610), - VETION(1.225d, NpcID.VETION, NpcID.VETION_REBORN); + VETION(1.225d, NpcID.VETION, NpcID.VETION_REBORN), + SOTETSEG_5_MAN(1.675d, NpcID.SOTETSEG_8388), + SOTETSEG_4_MAN(1.60d, NpcID.SOTETSEG_8388), + SOTETSEG_3_MAN(1.525d, NpcID.SOTETSEG_8388), + NYLOCAS_VASILIAS_5_MAN(1.2250d, NpcID.NYLOCAS_VASILIAS, NpcID.NYLOCAS_VASILIAS_8355, NpcID.NYLOCAS_VASILIAS_8356, NpcID.NYLOCAS_VASILIAS_8357), + NYLOCAS_VASILIAS_4_MAN(1.20d, NpcID.NYLOCAS_VASILIAS, NpcID.NYLOCAS_VASILIAS_8355, NpcID.NYLOCAS_VASILIAS_8356, NpcID.NYLOCAS_VASILIAS_8357), + NYLOCAS_VASILIAS_3_MAN(1.175d, NpcID.NYLOCAS_VASILIAS, NpcID.NYLOCAS_VASILIAS_8355, NpcID.NYLOCAS_VASILIAS_8356, NpcID.NYLOCAS_VASILIAS_8357), + PESTILENT_BLOAT_5_MAN(1.85d, NpcID.PESTILENT_BLOAT), + PESTILENT_BLOAT_4_MAN(1.7750d, NpcID.PESTILENT_BLOAT), + PESTILENT_BLOAT_3_MAN(1.70d, NpcID.PESTILENT_BLOAT); private final Set ids; private final double modifier; // Some NPCs have a modifier to the experience a player receives. @@ -70,4 +79,4 @@ enum Boss return null; } -} \ No newline at end of file +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java index a9a6815f51..747e991b5e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java @@ -1,5 +1,6 @@ /* * Copyright (c) 2018, Raqes + * Copyright (c) 2018, https://openosrs.com * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -47,6 +48,8 @@ import net.runelite.api.events.GameTick; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.StatChanged; import net.runelite.api.events.VarbitChanged; +import net.runelite.api.widgets.WidgetInfo; +import net.runelite.api.widgets.Widget; import net.runelite.client.callback.ClientThread; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.game.ItemManager; @@ -56,6 +59,7 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ws.PartyService; import net.runelite.client.ws.WSClient; import org.apache.commons.lang3.ArrayUtils; +import lombok.extern.slf4j.Slf4j; @PluginDescriptor( name = "Special Attack Counter", @@ -64,6 +68,7 @@ import org.apache.commons.lang3.ArrayUtils; enabledByDefault = false ) @Singleton +@Slf4j public class SpecialCounterPlugin extends Plugin { private int currentWorld = -1; @@ -231,6 +236,61 @@ public class SpecialCounterPlugin extends Plugin modifier = 1d; interactedNpcIds.add(npcId); + if (client.getWidget(WidgetInfo.THEATRE_OF_BLOOD_PARTY) != null) + { + Boss boss = Boss.getBoss(npcId); + if (boss != null) + { + int teamSize = 0; + Widget x = client.getWidget(WidgetInfo.THEATRE_OF_BLOOD_PARTY); + for (Widget y : x.getStaticChildren()) + { + if (!y.isHidden()) + { + teamSize++; + } + } + if (boss == Boss.SOTETSEG_5_MAN) + { + if (teamSize > 0 && teamSize <= 3) + { + boss = Boss.SOTETSEG_3_MAN; + } + else if (teamSize == 4) + { + boss = Boss.SOTETSEG_4_MAN; + } + + } + if (boss == Boss.NYLOCAS_VASILIAS_5_MAN) + { + if (teamSize > 0 && teamSize <= 3) + { + boss = Boss.NYLOCAS_VASILIAS_3_MAN; + } + else if (teamSize == 4) + { + boss = Boss.NYLOCAS_VASILIAS_4_MAN; + } + + } + if (boss == Boss.PESTILENT_BLOAT_5_MAN) + { + if (teamSize > 0 && teamSize <= 3) + { + boss = Boss.PESTILENT_BLOAT_3_MAN; + } + else if (teamSize == 4) + { + boss = Boss.PESTILENT_BLOAT_4_MAN; + } + + } + modifier = boss.getModifier(); + interactedNpcIds.addAll(boss.getIds()); + } + return; + } // Add alternate forms of bosses final Boss boss = Boss.getBoss(npcId); if (boss != null) @@ -370,4 +430,4 @@ public class SpecialCounterPlugin extends Plugin return (int) Math.round(damageOutput); } } -} \ No newline at end of file +}