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 d0438b98af..838bb1572e 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; static class WorldMap { @@ -681,6 +682,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 d3e5f45270..7addb9f06d 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), + PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX), LIGHT_BOX(WidgetID.LIGHT_BOX_GROUP_ID, WidgetID.LightBox.LIGHT_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 c28057a6b7..f3f3070f82 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 @@ -45,6 +46,8 @@ import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.NpcDespawned; 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.EventBus; import net.runelite.client.game.ItemManager; @@ -54,6 +57,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", @@ -62,6 +66,7 @@ import org.apache.commons.lang3.ArrayUtils; enabledByDefault = false ) @Singleton +@Slf4j public class SpecialCounterPlugin extends Plugin { private int currentWorld = -1; @@ -223,6 +228,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) @@ -360,4 +420,4 @@ public class SpecialCounterPlugin extends Plugin return (int) Math.round(damageOutput); } } -} \ No newline at end of file +}