specialcounter: add tob boss modifiers

This commit is contained in:
f0rmatme
2019-11-13 02:52:39 -08:00
parent 9802866c90
commit 6a2bd8f1a9
4 changed files with 80 additions and 3 deletions

View File

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

View File

@@ -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),

View File

@@ -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<Integer> ids;
private final double modifier; // Some NPCs have a modifier to the experience a player receives.
@@ -70,4 +79,4 @@ enum Boss
return null;
}
}
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018, Raqes <j.raqes@gmail.com>
* 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);
}
}
}
}