From 7efc3c1dcd2f83e19fd211e24ce50fb113fe05fe Mon Sep 17 00:00:00 2001 From: lordzuku <47382776+lordzuku@users.noreply.github.com> Date: Sat, 20 Apr 2019 15:44:19 -0400 Subject: [PATCH] Plugin additions (#19) * Added getProjectile tranform & zeruths player transform cleaned up a bit of the imports / code * fixed equipment inspector & added more features to tob --- .../main/java/net/runelite/api/Varbits.java | 813 +++++++++--------- .../EquipmentInspectorPanel.java | 5 - .../EquipmentInspectorPlugin.java | 350 ++++---- .../plugins/equipmentinspector/ItemPanel.java | 3 +- .../plugins/ztob/BloatTimerOverlay.java | 83 ++ .../client/plugins/ztob/TheatreConfig.java | 171 ++-- .../client/plugins/ztob/TheatreOverlay.java | 304 +++---- .../client/plugins/ztob/TheatrePlugin.java | 743 ++++++++++------ .../plugins/ztob/TheatreXarpusOverlay.java | 68 ++ .../plugins/ztob/VerzikNyloOverlay.java | 81 ++ .../plugins/equipmentinspector/normal.png | Bin 0 -> 624 bytes 11 files changed, 1554 insertions(+), 1067 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/ztob/BloatTimerOverlay.java create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreXarpusOverlay.java create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/ztob/VerzikNyloOverlay.java create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/equipmentinspector/normal.png diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index 8c4c18bf91..038362c66d 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -32,472 +32,471 @@ import lombok.Getter; */ @AllArgsConstructor @Getter -public enum Varbits -{ - /* - * If chatbox is transparent or not - */ - TRANSPARENT_CHATBOX(4608), +public enum Varbits { + /* + * If chatbox is transparent or not + */ + TRANSPARENT_CHATBOX(4608), - /* - * If the player has an active stamina potion effect or not - */ - RUN_SLOWED_DEPLETION_ACTIVE(25), + /* + * If the player has an active stamina potion effect or not + */ + RUN_SLOWED_DEPLETION_ACTIVE(25), - /** - * If scrollbar in resizable mode chat is on the left - */ - CHAT_SCROLLBAR_ON_LEFT(6374), + /** + * If scrollbar in resizable mode chat is on the left + */ + CHAT_SCROLLBAR_ON_LEFT(6374), - /** - * Runepouch - */ - RUNE_POUCH_RUNE1(29), - RUNE_POUCH_RUNE2(1622), - RUNE_POUCH_RUNE3(1623), - RUNE_POUCH_AMOUNT1(1624), - RUNE_POUCH_AMOUNT2(1625), - RUNE_POUCH_AMOUNT3(1626), + /** + * Runepouch + */ + RUNE_POUCH_RUNE1(29), + RUNE_POUCH_RUNE2(1622), + RUNE_POUCH_RUNE3(1623), + RUNE_POUCH_AMOUNT1(1624), + RUNE_POUCH_AMOUNT2(1625), + RUNE_POUCH_AMOUNT3(1626), - /** - * Prayers - */ - QUICK_PRAYER(4103), - PRAYER_THICK_SKIN(4104), - PRAYER_BURST_OF_STRENGTH(4105), - PRAYER_CLARITY_OF_THOUGHT(4106), - PRAYER_SHARP_EYE(4122), - PRAYER_MYSTIC_WILL(4123), - PRAYER_ROCK_SKIN(4107), - PRAYER_SUPERHUMAN_STRENGTH(4108), - PRAYER_IMPROVED_REFLEXES(4109), - PRAYER_RAPID_RESTORE(4110), - PRAYER_RAPID_HEAL(4111), - PRAYER_PROTECT_ITEM(4112), - PRAYER_HAWK_EYE(4124), - PRAYER_MYSTIC_LORE(4125), - PRAYER_STEEL_SKIN(4113), - PRAYER_ULTIMATE_STRENGTH(4114), - PRAYER_INCREDIBLE_REFLEXES(4115), - PRAYER_PROTECT_FROM_MAGIC(4116), - PRAYER_PROTECT_FROM_MISSILES(4117), - PRAYER_PROTECT_FROM_MELEE(4118), - PRAYER_EAGLE_EYE(4126), - PRAYER_MYSTIC_MIGHT(4127), - PRAYER_RETRIBUTION(4119), - PRAYER_REDEMPTION(4120), - PRAYER_SMITE(4121), - PRAYER_CHIVALRY(4128), - PRAYER_PIETY(4129), - PRAYER_PRESERVE(5466), - PRAYER_RIGOUR(5464), - PRAYER_AUGURY(5465), + /** + * Prayers + */ + QUICK_PRAYER(4103), + PRAYER_THICK_SKIN(4104), + PRAYER_BURST_OF_STRENGTH(4105), + PRAYER_CLARITY_OF_THOUGHT(4106), + PRAYER_SHARP_EYE(4122), + PRAYER_MYSTIC_WILL(4123), + PRAYER_ROCK_SKIN(4107), + PRAYER_SUPERHUMAN_STRENGTH(4108), + PRAYER_IMPROVED_REFLEXES(4109), + PRAYER_RAPID_RESTORE(4110), + PRAYER_RAPID_HEAL(4111), + PRAYER_PROTECT_ITEM(4112), + PRAYER_HAWK_EYE(4124), + PRAYER_MYSTIC_LORE(4125), + PRAYER_STEEL_SKIN(4113), + PRAYER_ULTIMATE_STRENGTH(4114), + PRAYER_INCREDIBLE_REFLEXES(4115), + PRAYER_PROTECT_FROM_MAGIC(4116), + PRAYER_PROTECT_FROM_MISSILES(4117), + PRAYER_PROTECT_FROM_MELEE(4118), + PRAYER_EAGLE_EYE(4126), + PRAYER_MYSTIC_MIGHT(4127), + PRAYER_RETRIBUTION(4119), + PRAYER_REDEMPTION(4120), + PRAYER_SMITE(4121), + PRAYER_CHIVALRY(4128), + PRAYER_PIETY(4129), + PRAYER_PRESERVE(5466), + PRAYER_RIGOUR(5464), + PRAYER_AUGURY(5465), - /** - * Diary Entries - */ - DIARY_ARDOUGNE_EASY(4458), - DIARY_ARDOUGNE_MEDIUM(4459), - DIARY_ARDOUGNE_HARD(4460), - DIARY_ARDOUGNE_ELITE(4461), + /** + * Diary Entries + */ + DIARY_ARDOUGNE_EASY(4458), + DIARY_ARDOUGNE_MEDIUM(4459), + DIARY_ARDOUGNE_HARD(4460), + DIARY_ARDOUGNE_ELITE(4461), - DIARY_DESERT_EASY(4483), - DIARY_DESERT_MEDIUM(4484), - DIARY_DESERT_HARD(4485), - DIARY_DESERT_ELITE(4486), + DIARY_DESERT_EASY(4483), + DIARY_DESERT_MEDIUM(4484), + DIARY_DESERT_HARD(4485), + DIARY_DESERT_ELITE(4486), - DIARY_FALADOR_EASY(4462), - DIARY_FALADOR_MEDIUM(4463), - DIARY_FALADOR_HARD(4464), - DIARY_FALADOR_ELITE(4465), + DIARY_FALADOR_EASY(4462), + DIARY_FALADOR_MEDIUM(4463), + DIARY_FALADOR_HARD(4464), + DIARY_FALADOR_ELITE(4465), - DIARY_FREMENNIK_EASY(4491), - DIARY_FREMENNIK_MEDIUM(4492), - DIARY_FREMENNIK_HARD(4493), - DIARY_FREMENNIK_ELITE(4494), + DIARY_FREMENNIK_EASY(4491), + DIARY_FREMENNIK_MEDIUM(4492), + DIARY_FREMENNIK_HARD(4493), + DIARY_FREMENNIK_ELITE(4494), - DIARY_KANDARIN_EASY(4475), - DIARY_KANDARIN_MEDIUM(4476), - DIARY_KANDARIN_HARD(4477), - DIARY_KANDARIN_ELITE(4478), + DIARY_KANDARIN_EASY(4475), + DIARY_KANDARIN_MEDIUM(4476), + DIARY_KANDARIN_HARD(4477), + DIARY_KANDARIN_ELITE(4478), - DIARY_KARAMJA_EASY(3578), - DIARY_KARAMJA_MEDIUM(3599), - DIARY_KARAMJA_HARD(3611), - DIARY_KARAMJA_ELITE(4566), + DIARY_KARAMJA_EASY(3578), + DIARY_KARAMJA_MEDIUM(3599), + DIARY_KARAMJA_HARD(3611), + DIARY_KARAMJA_ELITE(4566), - DIARY_LUMBRIDGE_EASY(4495), - DIARY_LUMBRIDGE_MEDIUM(4496), - DIARY_LUMBRIDGE_HARD(4497), - DIARY_LUMBRIDGE_ELITE(4498), + DIARY_LUMBRIDGE_EASY(4495), + DIARY_LUMBRIDGE_MEDIUM(4496), + DIARY_LUMBRIDGE_HARD(4497), + DIARY_LUMBRIDGE_ELITE(4498), - DIARY_MORYTANIA_EASY(4487), - DIARY_MORYTANIA_MEDIUM(4488), - DIARY_MORYTANIA_HARD(4489), - DIARY_MORYTANIA_ELITE(4490), + DIARY_MORYTANIA_EASY(4487), + DIARY_MORYTANIA_MEDIUM(4488), + DIARY_MORYTANIA_HARD(4489), + DIARY_MORYTANIA_ELITE(4490), - DIARY_VARROCK_EASY(4479), - DIARY_VARROCK_MEDIUM(4480), - DIARY_VARROCK_HARD(4481), - DIARY_VARROCK_ELITE(4482), + DIARY_VARROCK_EASY(4479), + DIARY_VARROCK_MEDIUM(4480), + DIARY_VARROCK_HARD(4481), + DIARY_VARROCK_ELITE(4482), - DIARY_WESTERN_EASY(4471), - DIARY_WESTERN_MEDIUM(4472), - DIARY_WESTERN_HARD(4473), - DIARY_WESTERN_ELITE(4474), + DIARY_WESTERN_EASY(4471), + DIARY_WESTERN_MEDIUM(4472), + DIARY_WESTERN_HARD(4473), + DIARY_WESTERN_ELITE(4474), - DIARY_WILDERNESS_EASY(4466), - DIARY_WILDERNESS_MEDIUM(4467), - DIARY_WILDERNESS_HARD(4468), - DIARY_WILDERNESS_ELITE(4469), + DIARY_WILDERNESS_EASY(4466), + DIARY_WILDERNESS_MEDIUM(4467), + DIARY_WILDERNESS_HARD(4468), + DIARY_WILDERNESS_ELITE(4469), - /** - * Kourend house favours - */ - KOUREND_FAVOR_ARCEUUS(4896), - KOUREND_FAVOR_HOSIDIUS(4895), - KOUREND_FAVOR_LOVAKENGJ(4898), - KOUREND_FAVOR_PISCARILIUS(4899), - KOUREND_FAVOR_SHAYZIEN(4894), + /** + * Kourend house favours + */ + KOUREND_FAVOR_ARCEUUS(4896), + KOUREND_FAVOR_HOSIDIUS(4895), + KOUREND_FAVOR_LOVAKENGJ(4898), + KOUREND_FAVOR_PISCARILIUS(4899), + KOUREND_FAVOR_SHAYZIEN(4894), - /** - * Equipped weapon type - */ - EQUIPPED_WEAPON_TYPE(357), + /** + * Equipped weapon type + */ + EQUIPPED_WEAPON_TYPE(357), - /** - * Defensive casting mode - */ - DEFENSIVE_CASTING_MODE(2668), + /** + * Defensive casting mode + */ + DEFENSIVE_CASTING_MODE(2668), - /** - * Options - */ - SIDE_PANELS(4607), + /** + * Options + */ + SIDE_PANELS(4607), - /** - * Herbiboar Trails - */ - HB_TRAIL_31303(5737), - HB_TRAIL_31306(5738), - HB_TRAIL_31309(5739), - HB_TRAIL_31312(5740), - HB_TRAIL_31315(5741), - HB_TRAIL_31318(5742), - HB_TRAIL_31321(5743), - HB_TRAIL_31324(5744), - HB_TRAIL_31327(5745), - HB_TRAIL_31330(5746), + /** + * Herbiboar Trails + */ + HB_TRAIL_31303(5737), + HB_TRAIL_31306(5738), + HB_TRAIL_31309(5739), + HB_TRAIL_31312(5740), + HB_TRAIL_31315(5741), + HB_TRAIL_31318(5742), + HB_TRAIL_31321(5743), + HB_TRAIL_31324(5744), + HB_TRAIL_31327(5745), + HB_TRAIL_31330(5746), - HB_TRAIL_31333(5768), - HB_TRAIL_31336(5769), - HB_TRAIL_31339(5770), - HB_TRAIL_31342(5771), - HB_TRAIL_31345(5772), - HB_TRAIL_31348(5773), - HB_TRAIL_31351(5774), - HB_TRAIL_31354(5775), - HB_TRAIL_31357(5776), - HB_TRAIL_31360(5777), + HB_TRAIL_31333(5768), + HB_TRAIL_31336(5769), + HB_TRAIL_31339(5770), + HB_TRAIL_31342(5771), + HB_TRAIL_31345(5772), + HB_TRAIL_31348(5773), + HB_TRAIL_31351(5774), + HB_TRAIL_31354(5775), + HB_TRAIL_31357(5776), + HB_TRAIL_31360(5777), - HB_TRAIL_31363(5747), - HB_TRAIL_31366(5748), - HB_TRAIL_31369(5749), - HB_TRAIL_31372(5750), + HB_TRAIL_31363(5747), + HB_TRAIL_31366(5748), + HB_TRAIL_31369(5749), + HB_TRAIL_31372(5750), - HB_FINISH(5766), - HB_STARTED(5767), //not working + HB_FINISH(5766), + HB_STARTED(5767), //not working - /** - * Barbarian Assault - */ - IN_GAME_BA(3923), + /** + * Barbarian Assault + */ + IN_GAME_BA(3923), - /** - * 0 = Outside wilderness - * 1 = In wilderness - */ - IN_WILDERNESS(5963), + /** + * 0 = Outside wilderness + * 1 = In wilderness + */ + IN_WILDERNESS(5963), - /** - * Fishing Trawler - * FISHING_TRAWLER_ACTIVITY Expected values: 0-255 - */ - FISHING_TRAWLER_ACTIVITY(3377), + /** + * Fishing Trawler + * FISHING_TRAWLER_ACTIVITY Expected values: 0-255 + */ + FISHING_TRAWLER_ACTIVITY(3377), - /** - * Blast Furnace Bar Dispenser - * - * These are the expected values: - * 0 = No bars being processed - * 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked - * 2 = Bars are cooling down - * 3 = Bars can be collected - */ - BAR_DISPENSER(936), + /** + * Blast Furnace Bar Dispenser + *

+ * These are the expected values: + * 0 = No bars being processed + * 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked + * 2 = Bars are cooling down + * 3 = Bars can be collected + */ + BAR_DISPENSER(936), - /** - * Motherlode mine sack - */ - SACK_NUMBER(5558), - SACK_UPGRADED(5556), + /** + * Motherlode mine sack + */ + SACK_NUMBER(5558), + SACK_UPGRADED(5556), - /** - * Experience tracker - * - * EXPERIENCE_TRACKER_POSITION expected values: - * 0 = Right - * 1 = Middle - * 2 = Left - */ - EXPERIENCE_TRACKER_POSITION(4692), - EXPERIENCE_TRACKER_COUNTER(4697), - EXPERIENCE_TRACKER_PROGRESS_BAR(4698), + /** + * Experience tracker + *

+ * EXPERIENCE_TRACKER_POSITION expected values: + * 0 = Right + * 1 = Middle + * 2 = Left + */ + EXPERIENCE_TRACKER_POSITION(4692), + EXPERIENCE_TRACKER_COUNTER(4697), + EXPERIENCE_TRACKER_PROGRESS_BAR(4698), - /** - * Experience drop color - */ - EXPERIENCE_DROP_COLOR(4695), + /** + * Experience drop color + */ + EXPERIENCE_DROP_COLOR(4695), - /** - * Tithe Farm - */ - TITHE_FARM_SACK_AMOUNT(4900), - TITHE_FARM_SACK_ICON(5370), - TITHE_FARM_POINTS(4893), - - /** - * Blast Mine - */ - BLAST_MINE_COAL(4924), - BLAST_MINE_GOLD(4925), - BLAST_MINE_MITHRIL(4926), - BLAST_MINE_ADAMANTITE(4921), - BLAST_MINE_RUNITE(4922), + /** + * Tithe Farm + */ + TITHE_FARM_SACK_AMOUNT(4900), + TITHE_FARM_SACK_ICON(5370), + TITHE_FARM_POINTS(4893), - /** - * Raids - */ - IN_RAID(5432), - TOTAL_POINTS(5431), - PERSONAL_POINTS(5422), - RAID_PARTY_SIZE(5424), + /** + * Blast Mine + */ + BLAST_MINE_COAL(4924), + BLAST_MINE_GOLD(4925), + BLAST_MINE_MITHRIL(4926), + BLAST_MINE_ADAMANTITE(4921), + BLAST_MINE_RUNITE(4922), - /** - * Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating - */ - THEATRE_OF_BLOOD(6440), + /** + * Raids + */ + IN_RAID(5432), + TOTAL_POINTS(5431), + PERSONAL_POINTS(5422), + RAID_PARTY_SIZE(5424), - /** - * Nightmare Zone - */ - NMZ_ABSORPTION(3956), - NMZ_POINTS(3949), + /** + * Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating + */ + THEATRE_OF_BLOOD(6440), - /** - * Blast Furnace - */ - BLAST_FURNACE_COPPER_ORE(959), - BLAST_FURNACE_TIN_ORE(950), - BLAST_FURNACE_IRON_ORE(951), - BLAST_FURNACE_COAL(949), - BLAST_FURNACE_MITHRIL_ORE(952), - BLAST_FURNACE_ADAMANTITE_ORE(953), - BLAST_FURNACE_RUNITE_ORE(954), - BLAST_FURNACE_SILVER_ORE(956), - BLAST_FURNACE_GOLD_ORE(955), + /** + * Nightmare Zone + */ + NMZ_ABSORPTION(3956), + NMZ_POINTS(3949), - BLAST_FURNACE_BRONZE_BAR(941), - BLAST_FURNACE_IRON_BAR(942), - BLAST_FURNACE_STEEL_BAR(943), - BLAST_FURNACE_MITHRIL_BAR(944), - BLAST_FURNACE_ADAMANTITE_BAR(945), - BLAST_FURNACE_RUNITE_BAR(946), - BLAST_FURNACE_SILVER_BAR(948), - BLAST_FURNACE_GOLD_BAR(947), + /** + * Blast Furnace + */ + BLAST_FURNACE_COPPER_ORE(959), + BLAST_FURNACE_TIN_ORE(950), + BLAST_FURNACE_IRON_ORE(951), + BLAST_FURNACE_COAL(949), + BLAST_FURNACE_MITHRIL_ORE(952), + BLAST_FURNACE_ADAMANTITE_ORE(953), + BLAST_FURNACE_RUNITE_ORE(954), + BLAST_FURNACE_SILVER_ORE(956), + BLAST_FURNACE_GOLD_ORE(955), - BLAST_FURNACE_COFFER(5357), + BLAST_FURNACE_BRONZE_BAR(941), + BLAST_FURNACE_IRON_BAR(942), + BLAST_FURNACE_STEEL_BAR(943), + BLAST_FURNACE_MITHRIL_BAR(944), + BLAST_FURNACE_ADAMANTITE_BAR(945), + BLAST_FURNACE_RUNITE_BAR(946), + BLAST_FURNACE_SILVER_BAR(948), + BLAST_FURNACE_GOLD_BAR(947), - /** - * Pyramid plunder - */ - PYRAMID_PLUNDER_TIMER(2375), - PYRAMID_PLUNDER_ROOM(2377), + BLAST_FURNACE_COFFER(5357), - /** - * Barrows - */ - BARROWS_KILLED_AHRIM(457), - BARROWS_KILLED_DHAROK(458), - BARROWS_KILLED_GUTHAN(459), - BARROWS_KILLED_KARIL(460), - BARROWS_KILLED_TORAG(461), - BARROWS_KILLED_VERAC(462), - BARROWS_REWARD_POTENTIAL(463), - BARROWS_NPCS_SLAIN(464), + /** + * Pyramid plunder + */ + PYRAMID_PLUNDER_TIMER(2375), + PYRAMID_PLUNDER_ROOM(2377), - /** - * Spicy stew ingredients - */ - SPICY_STEW_RED_SPICES(1879), - SPICY_STEW_YELLOW_SPICES(1880), - SPICY_STEW_BROWN_SPICES(1881), - SPICY_STEW_ORANGE_SPICES(1882), + /** + * Barrows + */ + BARROWS_KILLED_AHRIM(457), + BARROWS_KILLED_DHAROK(458), + BARROWS_KILLED_GUTHAN(459), + BARROWS_KILLED_KARIL(460), + BARROWS_KILLED_TORAG(461), + BARROWS_KILLED_VERAC(462), + BARROWS_REWARD_POTENTIAL(463), + BARROWS_NPCS_SLAIN(464), - /** - * Multicombat area - */ - MULTICOMBAT_AREA(4605), + /** + * Spicy stew ingredients + */ + SPICY_STEW_RED_SPICES(1879), + SPICY_STEW_YELLOW_SPICES(1880), + SPICY_STEW_BROWN_SPICES(1881), + SPICY_STEW_ORANGE_SPICES(1882), - /** - * In the Wilderness - */ - IN_THE_WILDERNESS(5963), + /** + * Multicombat area + */ + MULTICOMBAT_AREA(4605), - /** - * Kingdom Management - */ - KINGDOM_FAVOR(72), - KINGDOM_COFFER(74), + /** + * In the Wilderness + */ + IN_THE_WILDERNESS(5963), - /** - * The Hand in the Sand quest status - */ - QUEST_THE_HAND_IN_THE_SAND(1527), + /** + * Kingdom Management + */ + KINGDOM_FAVOR(72), + KINGDOM_COFFER(74), - /** - * Daily Tasks (Collection availability) - */ - DAILY_HERB_BOXES_COLLECTED(3961), - DAILY_STAVES_COLLECTED(4539), - DAILY_ESSENCE_COLLECTED(4547), - DAILY_RUNES_COLLECTED(4540), - DAILY_SAND_COLLECTED(4549), - DAILY_FLAX_STATE(4559), - /** - * This varbit tracks how much bonemeal has been redeemed from Robin - * The player gets 13 for each diary completed above and including Medium, for a maxiumum of 39 - */ - DAILY_BONEMEAL_STATE(4543), + /** + * The Hand in the Sand quest status + */ + QUEST_THE_HAND_IN_THE_SAND(1527), - /** - * Fairy Ring - */ - FAIR_RING_LAST_DESTINATION(5374), - FAIRY_RING_DIAL_ADCB(3985), //Left dial - FAIRY_RIGH_DIAL_ILJK(3986), //Middle dial - FAIRY_RING_DIAL_PSRQ(3987), //Right dial + /** + * Daily Tasks (Collection availability) + */ + DAILY_HERB_BOXES_COLLECTED(3961), + DAILY_STAVES_COLLECTED(4539), + DAILY_ESSENCE_COLLECTED(4547), + DAILY_RUNES_COLLECTED(4540), + DAILY_SAND_COLLECTED(4549), + DAILY_FLAX_STATE(4559), + /** + * This varbit tracks how much bonemeal has been redeemed from Robin + * The player gets 13 for each diary completed above and including Medium, for a maxiumum of 39 + */ + DAILY_BONEMEAL_STATE(4543), - /** - * Transmog controllers for farming - */ - FARMING_4771(4771), - FARMING_4772(4772), - FARMING_4773(4773), - FARMING_4774(4774), - FARMING_4775(4775), - FARMING_7904(7904), - FARMING_7905(7905), - FARMING_7906(7906), - FARMING_7907(7907), - FARMING_7908(7908), - FARMING_7909(7909), - FARMING_7910(7910), - FARMING_7911(7911), + /** + * Fairy Ring + */ + FAIR_RING_LAST_DESTINATION(5374), + FAIRY_RING_DIAL_ADCB(3985), //Left dial + FAIRY_RIGH_DIAL_ILJK(3986), //Middle dial + FAIRY_RING_DIAL_PSRQ(3987), //Right dial - /** - * Transmog controllers for grapes - */ - GRAPES_4953(4953), - GRAPES_4954(4954), - GRAPES_4955(4955), - GRAPES_4956(4956), - GRAPES_4957(4957), - GRAPES_4958(4958), - GRAPES_4959(4959), - GRAPES_4960(4960), - GRAPES_4961(4961), - GRAPES_4962(4962), - GRAPES_4963(4963), - GRAPES_4964(4964), + /** + * Transmog controllers for farming + */ + FARMING_4771(4771), + FARMING_4772(4772), + FARMING_4773(4773), + FARMING_4774(4774), + FARMING_4775(4775), + FARMING_7904(7904), + FARMING_7905(7905), + FARMING_7906(7906), + FARMING_7907(7907), + FARMING_7908(7908), + FARMING_7909(7909), + FARMING_7910(7910), + FARMING_7911(7911), - /** - * Automatically weed farming patches - */ - AUTOWEED(5557), + /** + * Transmog controllers for grapes + */ + GRAPES_4953(4953), + GRAPES_4954(4954), + GRAPES_4955(4955), + GRAPES_4956(4956), + GRAPES_4957(4957), + GRAPES_4958(4958), + GRAPES_4959(4959), + GRAPES_4960(4960), + GRAPES_4961(4961), + GRAPES_4962(4962), + GRAPES_4963(4963), + GRAPES_4964(4964), - /** - * The varbit that stores the players {@code AccountType}. - */ - ACCOUNT_TYPE(1777), + /** + * Automatically weed farming patches + */ + AUTOWEED(5557), - /** - * The varbit that stores the oxygen percentage for player - */ - OXYGEN_LEVEL(5811), - - /** - * Corp beast damage - */ - CORP_DAMAGE(999), + /** + * The varbit that stores the players {@code AccountType}. + */ + ACCOUNT_TYPE(1777), - /** - * Toggleable slayer unlocks - */ - SUPERIOR_ENABLED(5362), - FOSSIL_ISLAND_WYVERN_DISABLE(6251), + /** + * The varbit that stores the oxygen percentage for player + */ + OXYGEN_LEVEL(5811), - CURRENT_BANK_TAB(4150), + /** + * Corp beast damage + */ + CORP_DAMAGE(999), - WORLDHOPPER_FAVROITE_1(4597), - WORLDHOPPER_FAVROITE_2(4598), + /** + * Toggleable slayer unlocks + */ + SUPERIOR_ENABLED(5362), + FOSSIL_ISLAND_WYVERN_DISABLE(6251), - /** - * Vengeance is active - */ - VENGEANCE_ACTIVE(2450), + CURRENT_BANK_TAB(4150), - /** - * Spell cooldowns - */ - VENGEANCE_COOLDOWN(2451), + WORLDHOPPER_FAVROITE_1(4597), + WORLDHOPPER_FAVROITE_2(4598), - /** - * Amount of items in each bank tab - */ - BANK_TAB_ONE_COUNT(4171), - BANK_TAB_TWO_COUNT(4172), - BANK_TAB_THREE_COUNT(4173), - BANK_TAB_FOUR_COUNT(4174), - BANK_TAB_FIVE_COUNT(4175), - BANK_TAB_SIX_COUNT(4176), - BANK_TAB_SEVEN_COUNT(4177), - BANK_TAB_EIGHT_COUNT(4178), - BANK_TAB_NINE_COUNT(4179), + /** + * Vengeance is active + */ + VENGEANCE_ACTIVE(2450), - /** - * Type of GE offer currently being created - * 0 = buy - * 1 = sell - */ - GE_OFFER_CREATION_TYPE(4397), + /** + * Spell cooldowns + */ + VENGEANCE_COOLDOWN(2451), - /** - * The active tab within the quest interface - */ - QUEST_TAB(8168), - - /** - * Temple Trekking - */ - TREK_POINTS(1955), - TREK_STARTED(1956), - TREK_EVENT(1958), - TREK_STATUS(6719); + /** + * Amount of items in each bank tab + */ + BANK_TAB_ONE_COUNT(4171), + BANK_TAB_TWO_COUNT(4172), + BANK_TAB_THREE_COUNT(4173), + BANK_TAB_FOUR_COUNT(4174), + BANK_TAB_FIVE_COUNT(4175), + BANK_TAB_SIX_COUNT(4176), + BANK_TAB_SEVEN_COUNT(4177), + BANK_TAB_EIGHT_COUNT(4178), + BANK_TAB_NINE_COUNT(4179), + /** + * Type of GE offer currently being created + * 0 = buy + * 1 = sell + */ + GE_OFFER_CREATION_TYPE(4397), - /** - * The raw varbit ID. - */ - private final int id; + /** + * The active tab within the quest interface + */ + QUEST_TAB(8168), + + /** + * Temple Trekking + */ + TREK_POINTS(1955), + TREK_STARTED(1956), + TREK_EVENT(1958), + TREK_STATUS(6719), + BLOAT_ENTERED_ROOM(6447); + + /** + * The raw varbit ID. + */ + private final int id; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPanel.java index e630c28b4f..1d54442c6d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPanel.java @@ -44,7 +44,6 @@ public class EquipmentInspectorPanel extends PluginPanel c.weightx = 1; c.gridx = 0; c.gridy = 0; - header = new JPanel(); header.setLayout(new BorderLayout()); header.setBorder(new CompoundBorder( @@ -53,9 +52,7 @@ public class EquipmentInspectorPanel extends PluginPanel nameLabel = new JLabel(NO_PLAYER_SELECTED); nameLabel.setForeground(Color.WHITE); - header.add(nameLabel, BorderLayout.CENTER); - layout.setHorizontalGroup(layout.createParallelGroup() .addComponent(equipmentPanels) .addComponent(header) @@ -65,7 +62,6 @@ public class EquipmentInspectorPanel extends PluginPanel .addGap(10) .addComponent(equipmentPanels) ); - update(new HashMap<>(), ""); } @@ -79,7 +75,6 @@ public class EquipmentInspectorPanel extends PluginPanel { nameLabel.setText("Player: " + playerName); } - SwingUtilities.invokeLater(() -> { equipmentPanels.removeAll(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java index 5ea9ea76b6..29904c2fb8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java @@ -3,7 +3,10 @@ package net.runelite.client.plugins.equipmentinspector; import com.google.inject.Provides; import lombok.extern.slf4j.Slf4j; -import net.runelite.api.*; +import net.runelite.api.ChatMessageType; +import net.runelite.api.Client; +import net.runelite.api.ItemComposition; +import net.runelite.api.Player; import net.runelite.api.events.PlayerMenuOptionClicked; import net.runelite.api.kit.KitType; import net.runelite.client.chat.ChatColorType; @@ -18,11 +21,10 @@ import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.NavigationButton; +import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; -import net.runelite.http.api.item.ItemPrice; import javax.annotation.Nullable; -import javax.imageio.ImageIO; import javax.inject.Inject; import javax.swing.*; import java.awt.image.BufferedImage; @@ -32,211 +34,195 @@ import java.util.*; import java.util.concurrent.ScheduledExecutorService; @PluginDescriptor( - name = "Equipment Inspector", - description = "Inspects enemy equipment", - enabledByDefault = false, - type = "utility" + name = "Equipment Inspector", + enabledByDefault = false, + type = "utility" ) @Slf4j public class EquipmentInspectorPlugin extends Plugin { - private static final String INSPECT_EQUIPMENT = "Gear"; - private static final String KICK_OPTION = "Kick"; + private static final String INSPECT_EQUIPMENT = "Gear"; + private static final String KICK_OPTION = "Kick"; - @Inject - @Nullable - private Client client; + @Inject + @Nullable + private Client client; - @Inject - private ItemManager itemManager; + @Inject + private ItemManager itemManager; - @Inject - private EquipmentInspectorConfig config; + @Inject + private EquipmentInspectorConfig config; - @Inject - private ChatMessageManager chatMessageManager; - @Inject - private MenuManager menuManager; + @Inject + private ChatMessageManager chatMessageManager; + @Inject + private MenuManager menuManager; - @Inject - private ScheduledExecutorService executor; + @Inject + private ScheduledExecutorService executor; - @Inject - private ClientToolbar pluginToolbar; + @Inject + private ClientToolbar pluginToolbar; + private NavigationButton navButton; + private EquipmentInspectorPanel equipmentInspectorPanel; + private int TotalPrice = 0; + private int Prot1 = 0; + private int Prot2 = 0; + private int Prot3 = 0; + private int Prot4 = 0; - @Provides - EquipmentInspectorConfig provideConfig(ConfigManager configManager) - { - return configManager.getConfig(EquipmentInspectorConfig.class); - } + @Provides + EquipmentInspectorConfig provideConfig(ConfigManager configManager) { + return configManager.getConfig(EquipmentInspectorConfig.class); + } - private NavigationButton navButton; - private EquipmentInspectorPanel equipmentInspectorPanel; - private int TotalPrice = 0; - private int Prot1 = 0; - private int Prot2 = 0; - private int Prot3 = 0; - private int Prot4 = 0; + @Override + protected void startUp() throws Exception { + + equipmentInspectorPanel = injector.getInstance(EquipmentInspectorPanel.class); + if (client != null) { + menuManager.addPlayerMenuItem(INSPECT_EQUIPMENT); + } + + //synchronized (ImageIO.class) + //{ + final BufferedImage icon = ImageUtil.getResourceStreamFromClass(this.getClass(), "normal.png"); + //} + + navButton = NavigationButton.builder() + .tooltip("Equipment Inspector") + .icon(icon) + .priority(5) + .panel(equipmentInspectorPanel) + .build(); - @Override - protected void startUp() throws Exception - { + pluginToolbar.addNavigation(navButton); - equipmentInspectorPanel = injector.getInstance(EquipmentInspectorPanel.class); - if(client != null) { - menuManager.addPlayerMenuItem(INSPECT_EQUIPMENT); - } + } - BufferedImage icon; - synchronized (ImageIO.class) - { - icon = ImageIO.read(getClass().getResourceAsStream("normal.png")); - } + @Override + protected void shutDown() throws Exception { - navButton = NavigationButton.builder() - .tooltip("Equipment Inspector") - .icon(icon) - .priority(5) - .panel(equipmentInspectorPanel) - .build(); + menuManager.removePlayerMenuItem(INSPECT_EQUIPMENT); + } + + @Subscribe + public void onPlayerMenuOptionClicked(PlayerMenuOptionClicked event) { + if (event.getMenuOption().equals(INSPECT_EQUIPMENT)) { - pluginToolbar.addNavigation(navButton); + executor.execute(() -> + { + try { + SwingUtilities.invokeAndWait(() -> + { + if (!navButton.isSelected()) { + navButton.getOnSelect().run(); + } + }); + } catch (InterruptedException | InvocationTargetException e) { - } + throw new RuntimeException(e); - @Override - protected void shutDown() throws Exception - { + } + String playerName = Text.removeTags(event.getMenuTarget()); + // The player menu uses a non-breaking space in the player name, we need to replace this to compare + // against the playerName in the player cache. + String finalPlayerName = playerName.replace('\u00A0', ' '); + System.out.println(finalPlayerName); + List players = client.getPlayers(); + Optional targetPlayer = players.stream() + .filter(Objects::nonNull) + .filter(p -> p.getName().equals(finalPlayerName)).findFirst(); - menuManager.removePlayerMenuItem(INSPECT_EQUIPMENT); - } + if (targetPlayer.isPresent()) { + TotalPrice = 0; + Prot1 = 0; + Prot2 = 0; + Prot3 = 0; + Prot4 = 0; + Player p = targetPlayer.get(); + Map playerEquipment = new HashMap<>(); - @Subscribe - public void onPlayerMenuOptionClicked(PlayerMenuOptionClicked event) - { - if (event.getMenuOption().equals(INSPECT_EQUIPMENT)) - { + for (KitType kitType : KitType.values()) { + int itemId = p.getPlayerComposition().getEquipmentId(kitType); + if (itemId != -1) { + ItemComposition itemComposition = client.getItemDefinition(itemId); + playerEquipment.put(kitType, itemComposition); + int ItemPrice = itemManager.getItemPrice(itemId); + TotalPrice += ItemPrice; + if (ItemPrice > Prot1) { + Prot4 = Prot3; + Prot3 = Prot2; + Prot2 = Prot1; + Prot1 = ItemPrice; + } else if (ItemPrice > Prot2) { + Prot4 = Prot3; + Prot3 = Prot2; + Prot2 = ItemPrice; + } else if (ItemPrice > Prot3) { + Prot4 = Prot3; + Prot3 = ItemPrice; + } else if (ItemPrice > Prot4) { + Prot4 = ItemPrice; + } + } + } + int IgnoredItems = config.protecteditems(); + if (IgnoredItems != 0 && IgnoredItems != 1 && IgnoredItems != 2 && IgnoredItems != 3) { + IgnoredItems = 4; - executor.execute(() -> - { - try - { - SwingUtilities.invokeAndWait(() -> - { - if (!navButton.isSelected()) - { - navButton.getOnSelect().run(); - } - }); - } - catch (InterruptedException | InvocationTargetException e) - { + } + if (config.ShowValue()) { + switch (IgnoredItems) { + case 1: + TotalPrice = TotalPrice - Prot1; + break; + case 2: + TotalPrice = TotalPrice - Prot1; + TotalPrice = TotalPrice - Prot2; - throw new RuntimeException(e); + break; + case 3: + TotalPrice = TotalPrice - Prot1; + TotalPrice = TotalPrice - Prot2; + TotalPrice = TotalPrice - Prot3; + break; + case 4: + TotalPrice = TotalPrice - Prot1; + TotalPrice = TotalPrice - Prot2; + TotalPrice = TotalPrice - Prot3; + TotalPrice = TotalPrice - Prot4; + break; + } + String StringPrice = ""; + if (!config.ExactValue()) { + TotalPrice = TotalPrice / 1000; + StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice); + StringPrice = StringPrice + 'K'; + } + if (config.ExactValue()) { + StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice); + } + chatMessageManager.queue(QueuedMessage.builder() + .type(ChatMessageType.FRIENDSCHATNOTIFICATION) + .runeLiteFormattedMessage(new ChatMessageBuilder() + .append(ChatColorType.HIGHLIGHT) + .append("Risked Value: ") + .append(ChatColorType.NORMAL) + .append(StringPrice) + .build()) + .build()); + } + equipmentInspectorPanel.update(playerEquipment, playerName); - } - String playerName = Text.removeTags(event.getMenuTarget()); - // The player menu uses a non-breaking space in the player name, we need to replace this to compare - // against the playerName in the player cache. - String finalPlayerName = playerName.replace('\u00A0', ' '); - System.out.println(finalPlayerName); - List players = client.getPlayers(); - Optional targetPlayer = players.stream() - .filter(Objects::nonNull) - .filter(p -> p.getName().equals(finalPlayerName)).findFirst(); - - if (targetPlayer.isPresent()) - { - TotalPrice = 0; - Prot1 = 0; - Prot2 = 0; - Prot3 = 0; - Prot4 = 0; - Player p = targetPlayer.get(); - Map playerEquipment = new HashMap<>(); - - for (KitType kitType : KitType.values()) - { - int itemId = p.getPlayerComposition().getEquipmentId(kitType); - if (itemId != -1) - { - ItemComposition itemComposition = client.getItemDefinition(itemId); - playerEquipment.put(kitType, itemComposition); - int ItemPrice = itemManager.getItemPrice(itemId); - TotalPrice += ItemPrice; - if (ItemPrice > Prot1 ) { - Prot4 = Prot3; - Prot3 = Prot2; - Prot2 = Prot1; - - Prot1 = ItemPrice; - } else if (ItemPrice > Prot2){ - Prot4 = Prot3; - Prot3 = Prot2; - Prot2 = ItemPrice; - } else if (ItemPrice > Prot3){ - Prot4 = Prot3; - Prot3 = ItemPrice; - } else if (ItemPrice > Prot4){ - Prot4 = ItemPrice; - } - } - } - int IgnoredItems = config.protecteditems(); - if (IgnoredItems != 0 && IgnoredItems != 1 && IgnoredItems != 2 && IgnoredItems != 3) { - IgnoredItems = 4; - - } - if (config.ShowValue()) { - switch (IgnoredItems) { - case 1: - TotalPrice = TotalPrice - Prot1; - break; - case 2: - TotalPrice = TotalPrice - Prot1; - TotalPrice = TotalPrice - Prot2; - - break; - case 3: - TotalPrice = TotalPrice - Prot1; - TotalPrice = TotalPrice - Prot2; - TotalPrice = TotalPrice - Prot3; - break; - case 4: - TotalPrice = TotalPrice - Prot1; - TotalPrice = TotalPrice - Prot2; - TotalPrice = TotalPrice - Prot3; - TotalPrice = TotalPrice - Prot4; - break; - } - String StringPrice = ""; - if (!config.ExactValue()) { - TotalPrice = TotalPrice / 1000; - StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice); - StringPrice = StringPrice + 'K'; - } - if (config.ExactValue()) { - StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice); - } - chatMessageManager.queue(QueuedMessage.builder() - .type(ChatMessageType.FRIENDSCHATNOTIFICATION) - .runeLiteFormattedMessage(new ChatMessageBuilder() - .append(ChatColorType.HIGHLIGHT) - .append("Risked Value: ") - .append(ChatColorType.NORMAL) - .append(StringPrice) - .build()) - .build()); - } - equipmentInspectorPanel.update(playerEquipment, playerName); - - } - }); - } - } -} + } + }); + } + } +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/ItemPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/ItemPanel.java index 873bf058b6..fadc684588 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/ItemPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/ItemPanel.java @@ -15,7 +15,8 @@ class ItemPanel extends JPanel ItemPanel(ItemComposition item, KitType kitType, AsyncBufferedImage icon) { - setBorder(new EmptyBorder(3, 3, 3, 3)); + + setBorder(new EmptyBorder(3, 3, 3, 3)); setBackground(ColorScheme.DARK_GRAY_COLOR); GroupLayout layout = new GroupLayout(this); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/BloatTimerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/BloatTimerOverlay.java new file mode 100644 index 0000000000..fec801ab51 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/BloatTimerOverlay.java @@ -0,0 +1,83 @@ +package net.runelite.client.plugins.ztob; + +import net.runelite.api.Client; +import net.runelite.api.Perspective; +import net.runelite.api.Point; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; +import net.runelite.client.ui.overlay.*; + +import javax.inject.Inject; +import java.awt.*; + +public class BloatTimerOverlay extends Overlay { + + private final Client client; + private final TheatrePlugin plugin; + private final TheatreConfig config; + + @Inject + private BloatTimerOverlay(Client client, TheatrePlugin plugin, TheatreConfig config) { + this.client = client; + this.plugin = plugin; + this.config = config; + setPosition(OverlayPosition.DYNAMIC); + setPriority(OverlayPriority.HIGH); + setLayer(OverlayLayer.ABOVE_SCENE); + } + + public Dimension render(Graphics2D graphics) { + + if (config.bloatTimer()) { + final String tickCounter = String.valueOf(plugin.bloatTimer); + int secondConversion = (int) (plugin.bloatTimer * .6); + if (plugin.getBloat_NPC() != null) { + Point canvasPoint = plugin.getBloat_NPC().getCanvasTextLocation(graphics, tickCounter, 60); + if (plugin.bloatTimer <= 37) { + renderTextLocation(graphics, tickCounter + "( " + secondConversion + " )", 15, Font.BOLD, Color.WHITE, canvasPoint); + } else { + renderTextLocation(graphics, tickCounter + "( " + secondConversion + " )", 15, Font.BOLD, Color.RED, canvasPoint); + } + } + } + + + return null; + } + + private void drawTile(Graphics2D graphics, WorldPoint point, Color color, int strokeWidth, int outlineAlpha, int fillAlpha) { + WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation(); + if (point.distanceTo(playerLocation) >= 32) { + return; + } + LocalPoint lp = LocalPoint.fromWorld(client, point); + if (lp == null) { + return; + } + + Polygon poly = Perspective.getCanvasTilePoly(client, lp); + if (poly == null) { + return; + } + //OverlayUtil.renderPolygon(graphics, poly, color); + graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha)); + graphics.setStroke(new BasicStroke(strokeWidth)); + graphics.draw(poly); + graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), fillAlpha)); + graphics.fill(poly); + } + + private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, net.runelite.api.Point canvasPoint) { + graphics.setFont(new Font("Arial", fontStyle, fontSize)); + if (canvasPoint != null) { + final net.runelite.api.Point canvasCenterPoint = new net.runelite.api.Point( + canvasPoint.getX(), + canvasPoint.getY()); + final net.runelite.api.Point canvasCenterPoint_shadow = new Point( + canvasPoint.getX() + 1, + canvasPoint.getY() + 1); + OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK); + OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor); + } + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java index 6f63951785..0a0a33d982 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreConfig.java @@ -14,15 +14,16 @@ import net.runelite.client.config.ConfigItem; @ConfigGroup("Theatre") -public interface TheatreConfig extends Config -{ +public interface TheatreConfig extends Config { @ConfigItem( position = 0, keyName = "MaidenBlood", name = "Maiden blood attack", description = "" ) - default boolean MaidenBlood(){ return false; } + default boolean MaidenBlood() { + return true; + } @ConfigItem( position = 1, @@ -30,109 +31,181 @@ public interface TheatreConfig extends Config name = "Maiden blood spawns", description = "" ) - default boolean MaidenSpawns(){ return false; } + default boolean MaidenSpawns() { + return true; + } @ConfigItem( position = 2, keyName = "BloatIndicator", - name = "Bloat indicator", + name = "Bloat Indicator", description = "" ) - default boolean BloatIndicator(){ return false; } + default boolean BloatIndicator() { + return true; + } @ConfigItem( position = 3, - keyName = "BloatHands", - name = "Bloat Falling Hands", + keyName = "bloat Timer", + name = "Bloat Timer", description = "" ) - default boolean BloatHands(){ return false; } + default boolean bloatTimer() { + return true; + } @ConfigItem( position = 4, + keyName = "bloatFeet", + name = "Bloat Feet", + description = "" + ) + default boolean bloatFeetIndicator() { + return true; + } + + @ConfigItem( + position = 5, keyName = "NyloPillars", name = "Nylocas pillar health", description = "" ) - default boolean NyloPillars(){ return false; } + default boolean NyloPillars() { + return true; + } + @ConfigItem( - position = 5, + position = 6, keyName = "NyloBlasts", name = "Nylocas explosions", description = "" ) - default boolean NyloBlasts(){ return false; } + default boolean NyloBlasts() { + return true; + } @ConfigItem( - position = 6, + position = 7, + keyName = "NyloMenu", + name = "Hide Attack options for Nylocas", + description = "" + ) + + default boolean NyloMenu() { + return true; + } + + @ConfigItem( + position = 8, keyName = "SotetsegMaze1", name = "Sotetseg maze", description = "" ) - default boolean SotetsegMaze1(){ return false; } + default boolean SotetsegMaze1() { + return true; + } @ConfigItem( - position = 7, + position = 9, keyName = "SotetsegMaze2", name = "Sotetseg maze (solo mode)", description = "" ) - default boolean SotetsegMaze2(){ return false; } - - @ConfigItem( - position = 8, - keyName = "SotetsegTick", - name = "Sotetseg tick eat", - description = "" - ) - default boolean SotetsegTick(){ return false; } - - @ConfigItem( - position = 9, - keyName = "XarpusExhumed", - name = "Xarpus exhumed", - description = "" - ) - default boolean XarpusExhumed(){ return false; } + default boolean SotetsegMaze2() { + return true; + } @ConfigItem( position = 10, - keyName = "XarpusTick", - name = "Xarpus tick", + keyName = "XarpusExhumed", + name = "Xarpus Exhumed", description = "" ) - default boolean XarpusTick(){ return false; } + default boolean XarpusExhumed() { + return true; + } @ConfigItem( position = 11, - keyName = "VerzikCupcakes", - name = "Verzik cupcakes", - description = " " + keyName = "XarpusTick", + name = "Xarpus Tick", + description = "" ) - default boolean VerzikCupcakes(){ return false; } + default boolean XarpusTick() { + return false; + } @ConfigItem( position = 12, - keyName = "VerzikTick", - name = "Verzik p3 tick", + keyName = "xarpusExhumes", + name = "Xarpus Exhume Counter", description = "" ) - default boolean VerzikTick(){ return false; } + default boolean XarpusExhumeOverlay() { + return false; + } @ConfigItem( position = 13, - keyName = "VerzikMelee", - name = "Verzik p3 melee range", + keyName = "VerzikCupcakes", + name = "Verzik Projectile Markers", description = "" ) - default boolean VerzikMelee(){ return false; } + default boolean VerzikCupcakes() { + return false; + } @ConfigItem( position = 14, - keyName = "VerzikYellow", - name = "Verzik yellow timing", + keyName = "VerzikTick", + name = "Verzik P3 Tick", description = "" ) - default boolean VerzikYellow(){ return false; } -} + default boolean VerzikTick() { + return false; + } + + @ConfigItem( + position = 15, + keyName = "VerzikMelee", + name = "Verzik P3 Melee Range", + description = "" + ) + default boolean VerzikMelee() { + return false; + } + + @ConfigItem( + position = 16, + keyName = "VerzikYellow", + name = "Verzik Yellow Timing", + description = "" + ) + default boolean VerzikYellow() { + return false; + } + + @ConfigItem( + position = 17, + keyName = "Verzik Nylo", + name = "Verzik Nylo Overlay", + description = "" + ) + default boolean NyloTargetOverlay() { + return false; + } + + @ConfigItem( + position = 18, + keyName = "VerzikTankTile", + name = "Verzik P3 Tile Overlay", + description = "" + ) + default boolean verzikTankTile() { + return true; + } + + +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java index 07f8e2f7b4..8e650295a7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreOverlay.java @@ -8,27 +8,21 @@ package net.runelite.client.plugins.ztob; +import net.runelite.api.Point; +import net.runelite.api.*; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldArea; +import net.runelite.api.coords.WorldPoint; +import net.runelite.client.ui.overlay.*; + +import javax.inject.Inject; import java.awt.*; import java.util.Iterator; import java.util.List; import java.util.Map; -import javax.inject.Inject; - -import net.runelite.api.*; -import net.runelite.api.Point; -import net.runelite.api.coords.LocalPoint; -import net.runelite.api.coords.WorldArea; -import net.runelite.api.coords.WorldPoint; -import net.runelite.client.ui.overlay.Overlay; -import net.runelite.client.ui.overlay.OverlayLayer; -import net.runelite.client.ui.overlay.OverlayPosition; -import net.runelite.client.ui.overlay.OverlayPriority; -import net.runelite.client.ui.overlay.OverlayUtil; public class TheatreOverlay extends Overlay { private final Client client; - - private final TheatrePlugin plugin; private final TheatreConfig config; @@ -43,69 +37,71 @@ public class TheatreOverlay extends Overlay { } @Override - public Dimension render(Graphics2D graphics) - { - if (plugin.isRunMaiden()) - { - if (config.MaidenBlood()) - { - for (WorldPoint point : plugin.getMaiden_BloodSpatters()) - { - drawTile(graphics, point, new Color(0,150,200), 2, 150, 10); + public Dimension render(Graphics2D graphics) { + if (plugin.isRunMaiden()) { + if (config.MaidenBlood()) { + for (WorldPoint point : plugin.getMaiden_BloodSpatters()) { + drawTile(graphics, point, new Color(36, 248, 229), 2, 150, 10); } } - if (config.MaidenSpawns()) - { - for (WorldPoint point : plugin.getMaiden_SpawnLocations()) - { - drawTile(graphics, point, new Color(0,150,200), 2, 180, 20); + if (config.MaidenSpawns()) { + for (WorldPoint point : plugin.getMaiden_SpawnLocations()) { + drawTile(graphics, point, new Color(36, 248, 229), 2, 180, 20); } - for (WorldPoint point : plugin.getMaiden_SpawnLocations2()) - { - drawTile(graphics, point, new Color(0,150,200), 1,120, 10); + for (WorldPoint point : plugin.getMaiden_SpawnLocations2()) { + drawTile(graphics, point, new Color(36, 248, 229), 1, 120, 10); } } } - if (plugin.isRunBloat()) - { + if (plugin.isRunBloat() && config.BloatIndicator()) { + if (config.bloatFeetIndicator()) { + if (plugin.getTemp().size() > 0) { + if (plugin.isTempFlag()) { + for (WorldPoint point : plugin.getTemp()) { - if (config.BloatHands()) - { - for (WorldPoint p : plugin.getBloat_Hands()) - { - drawTile(graphics, p, Color.BLACK,3,255,0); + drawTile(graphics, point, Color.black, 4, 255, 0); + + } + + } + } else if (plugin.getTemp2().size() > 0) { + if (plugin.isTemp2Flag()) { + for (WorldPoint point : plugin.getTemp2()) { + + drawTile(graphics, point, Color.black, 4, 255, 0); + + + } + + } } } - if(config.BloatIndicator()) { - NPC bloat = plugin.getBloat_NPC(); - int state = plugin.getBloat_State(); - if (bloat == null) { - return null; - } - switch (state) { - case 2: - renderNpcOverlay(graphics, bloat, Color.GREEN, 3, 150, 0); - break; - case 3: - renderNpcOverlay(graphics, bloat, Color.YELLOW, 3, 150, 0); - break; - default: - renderNpcOverlay(graphics, bloat, new Color(223, 109, 255), 3, 150, 0); - break; - } + NPC bloat = plugin.getBloat_NPC(); + int state = plugin.getBloat_State(); + if (bloat == null) { + return null; + } + switch (state) { + case 2: + renderNpcOverlay(graphics, bloat, Color.GREEN, 3, 150, 0); + break; + case 3: + renderNpcOverlay(graphics, bloat, Color.YELLOW, 3, 150, 0); + break; + default: + renderNpcOverlay(graphics, bloat, new Color(223, 109, 255), 3, 150, 0); + break; } } - if (plugin.isRunNylocas()) - { - if (config.NyloPillars()) - { + if (plugin.isRunNylocas()) { + if (config.NyloPillars()) { Map pillars = plugin.getNylocas_Pillars(); for (NPC npc : pillars.keySet()) { final int health = pillars.get(npc); - final String healthStr = String.valueOf(health) + "%"; + final String healthStr = health + "%"; WorldPoint p = npc.getWorldLocation(); LocalPoint lp = LocalPoint.fromWorld(client, p.getX() + 1, p.getY() + 1); final double rMod = 130.0 * health / 100.0; @@ -118,41 +114,34 @@ public class TheatreOverlay extends Overlay { } } - if (config.NyloBlasts()) - { + if (config.NyloBlasts()) { final Map npcMap = plugin.getNylocas_Map(); - for (NPC npc : npcMap.keySet()) - { + for (NPC npc : npcMap.keySet()) { int ticksLeft = npcMap.get(npc); if (ticksLeft > -1) { if (ticksLeft <= 6) { - Color color = new Color(255, 255,0 ,180); + Color color = new Color(255, 255, 0, 180); int outlineWidth = 2; int outlineAlpha = 150; - renderNpcOverlay(graphics, npc, color, outlineWidth, outlineAlpha, 0); + renderNpcOverlay(graphics, npc, color, outlineWidth, outlineAlpha, 15); } } } } } - if (plugin.isRunSotetseg()) - { - if (config.SotetsegMaze1()) - { + if (plugin.isRunSotetseg()) { + if (config.SotetsegMaze1()) { int i = 1; - for (GroundObject z : plugin.getRedTiles().keySet()) - { - Polygon poly = z.getCanvasTilePoly(); - if (poly != null) - { + for (GroundObject o : plugin.getRedTiles().keySet()) { + Polygon poly = o.getCanvasTilePoly(); + if (poly != null) { graphics.setColor(Color.WHITE); graphics.setStroke(new BasicStroke(2)); graphics.draw(poly); } - Point textLocation = z.getCanvasTextLocation(graphics, String.valueOf(i), 0); - if (textLocation != null) - { + Point textLocation = o.getCanvasTextLocation(graphics, String.valueOf(i), 0); + if (textLocation != null) { OverlayUtil.renderTextLocation(graphics, textLocation, String.valueOf(i), Color.WHITE); } @@ -160,111 +149,111 @@ public class TheatreOverlay extends Overlay { } } - if (config.SotetsegMaze2()) - { - for (WorldPoint p : plugin.getRedTilesOverworld()) - { + if (config.SotetsegMaze2()) { + for (WorldPoint p : plugin.getRedTilesOverworld()) { drawTile(graphics, p, Color.WHITE, 2, 255, 10); } } - if (config.SotetsegTick()) { - NPC boss = plugin.getSotetseg_NPC(); - int eattick = plugin.getTickTillEat(); - if (eattick > -1) - { - final String eatTicksStr = String.valueOf(eattick); - Point canvasPoint = boss.getCanvasTextLocation(graphics, eatTicksStr, 130); - renderTextLocation(graphics, eatTicksStr, 12, Font.BOLD, Color.WHITE, canvasPoint); - - } - } } - - if (plugin.isRunXarpus()) - { + if (plugin.isRunXarpus()) { NPC boss = plugin.getXarpus_NPC(); - if (boss.getId() == NpcID.XARPUS_8340 && !plugin.isXarpus_Stare() && config.XarpusTick()) - { + if (boss.getId() == NpcID.XARPUS_8340 && !plugin.isXarpus_Stare() && config.XarpusTick()) { int tick = plugin.getXarpus_TicksUntilShoot(); - if (tick < 1) - { + if (tick < 1) { tick = tick % 4 + 4; } final String ticksLeftStr = String.valueOf(tick); Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 130); renderTextLocation(graphics, ticksLeftStr, 12, Font.BOLD, Color.WHITE, canvasPoint); } - if (boss.getId() == NpcID.XARPUS_8339 && config.XarpusExhumed()) - { - for (GroundObject o : plugin.getXarpus_Exhumeds().keySet()) - { + if (boss.getId() == NpcID.XARPUS_8339 && config.XarpusExhumed()) { + for (GroundObject o : plugin.getXarpus_Exhumeds().keySet()) { + + Polygon poly = o.getCanvasTilePoly(); - if (poly != null) - { + if (poly != null) { graphics.setColor(new Color(0, 255, 0, 130)); graphics.setStroke(new BasicStroke(1)); graphics.draw(poly); } } + for (Map.Entry exhumes : plugin.getXarpusExhumedsTimer().entrySet()) { + final String ticksremaining = String.valueOf(exhumes.getValue()); + if (Integer.valueOf(ticksremaining) > 0) { + GroundObject ex = exhumes.getKey(); + Point point = ex.getCanvasTextLocation(graphics, ticksremaining, 0); + renderTextLocation(graphics, ticksremaining, 12, Font.BOLD, Color.white, point); + } + + } + + } + } - if (plugin.isRunVerzik()) - { - if (config.VerzikCupcakes()) - { - for (WorldPoint p : plugin.getVerzik_RangeProjectiles().values()) - { + + if (plugin.isRunVerzik()) { + + + if (config.VerzikCupcakes()) { + for (WorldPoint p : plugin.getVerzik_RangeProjectiles().values()) { drawTile(graphics, p, Color.RED, 2, 180, 50); } } - if (config.VerzikYellow()) - { - for (WorldPoint p : plugin.getVerzik_YellowTiles()) - { - drawTile(graphics, p, Color.YELLOW,3,255,0); - + if (config.VerzikYellow()) { + for (WorldPoint p : plugin.getVerzik_YellowTiles()) { + drawTile(graphics, p, Color.YELLOW, 3, 255, 0); Projectile yellowBall = plugin.getVerzik_YellowBall(); - if (yellowBall != null) - { - final int ticksToImpact = yellowBall.getRemainingCycles()/30; + if (yellowBall != null) { + final int ticksToImpact = yellowBall.getRemainingCycles() / 30; final String countdownStr = String.valueOf(ticksToImpact); Point canvasPoint = Perspective.getCanvasTextLocation(client, graphics, LocalPoint.fromWorld(client, p), countdownStr, 0); renderTextLocation(graphics, countdownStr, 12, Font.BOLD, Color.WHITE, canvasPoint); + } } } - if (plugin.getVerzik_NPC_P3() != null) { - final NPC boss = plugin.getVerzik_NPC_P3(); - if (boss.getId() == NpcID.VERZIK_VITUR_8374) - { - if (config.VerzikTick()) - { - final int ticksLeft = plugin.getP3_TicksUntilAttack(); - if (ticksLeft > 0 && ticksLeft < 8) - { - final String ticksLeftStr = String.valueOf(ticksLeft); - Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60); - renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint); - } + + final NPC boss = plugin.getVerzik_NPC(); + if (boss.getId() == NpcID.VERZIK_VITUR_8374) { + if (config.verzikTankTile()) { + renderNpcOverlay(graphics, boss, new Color(75, 0, 130), 1, 255, 0); + } + + if (config.VerzikTick()) { + final int ticksLeft = plugin.getP3_TicksUntilAttack(); + if (ticksLeft > 0 && ticksLeft < 8) { + final String ticksLeftStr = String.valueOf(ticksLeft); + Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60); + renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint); } + } - if (config.VerzikMelee() && boss.getAnimation() != 8127) - { - List meleeRange = getHitSquares(boss.getWorldLocation(), 7, 1, false); + if (config.VerzikMelee()) { + List meleeRange = getHitSquares(boss.getWorldLocation(), 7, 1, false); - for (WorldPoint p : meleeRange) - { - drawTile(graphics, p, Color.WHITE, 1,155, 10); - } + for (WorldPoint p : meleeRange) { + drawTile(graphics, p, Color.WHITE, 1, 155, 10); } } } + + if (boss.getAnimation() == 8117) { + final int ticksLeft = plugin.getRedCrabsTimer(); + if (ticksLeft > 0) { + final String ticksLeftStr = String.valueOf(ticksLeft); + Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60); + renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint); + } + } + } + return null; } @@ -290,19 +279,16 @@ public class TheatreOverlay extends Overlay { graphics.fill(poly); } - private void renderNpcOverlay(Graphics2D graphics, NPC actor, Color color, int outlineWidth, int outlineAlpha, int fillAlpha) - { + private void renderNpcOverlay(Graphics2D graphics, NPC actor, Color color, int outlineWidth, int outlineAlpha, int fillAlpha) { int size = 1; NPCComposition composition = actor.getTransformedComposition(); - if (composition != null) - { + if (composition != null) { size = composition.getSize(); } LocalPoint lp = actor.getLocalLocation(); Polygon tilePoly = Perspective.getCanvasTileAreaPoly(client, lp, size); - if (tilePoly != null) - { + if (tilePoly != null) { graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha)); graphics.setStroke(new BasicStroke(outlineWidth)); graphics.draw(tilePoly); @@ -311,37 +297,31 @@ public class TheatreOverlay extends Overlay { } } - private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) - { + private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) { graphics.setFont(new Font("Arial", fontStyle, fontSize)); - if (canvasPoint != null) - { + if (canvasPoint != null) { final Point canvasCenterPoint = new Point( canvasPoint.getX(), canvasPoint.getY()); final Point canvasCenterPoint_shadow = new Point( canvasPoint.getX() + 1, - canvasPoint.getY() + 1) ; + canvasPoint.getY() + 1); OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK); OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor); } } - private List getHitSquares(WorldPoint npcLoc, int npcSize, int thickness, boolean includeUnder) - { + private List getHitSquares(WorldPoint npcLoc, int npcSize, int thickness, boolean includeUnder) { List little = new WorldArea(npcLoc, npcSize, npcSize).toWorldPointList(); - List big = new WorldArea(npcLoc.getX()-thickness, npcLoc.getY()-thickness, npcSize + (thickness * 2), npcSize + (thickness * 2), npcLoc.getPlane()).toWorldPointList(); - if (!includeUnder) - { - for (Iterator it = big.iterator(); it.hasNext();) - { + List big = new WorldArea(npcLoc.getX() - thickness, npcLoc.getY() - thickness, npcSize + (thickness * 2), npcSize + (thickness * 2), npcLoc.getPlane()).toWorldPointList(); + if (!includeUnder) { + for (Iterator it = big.iterator(); it.hasNext(); ) { WorldPoint p = it.next(); - if (little.contains(p)) - { + if (little.contains(p)) { it.remove(); } } } return big; } -} +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java index ee7cee5f4a..3eb223c0c6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatrePlugin.java @@ -8,29 +8,30 @@ package net.runelite.client.plugins.ztob; -import java.util.*; -import java.util.Iterator; -import javax.inject.Inject; - -import net.runelite.client.chat.ChatMessageManager; -import net.runelite.client.eventbus.Subscribe; import com.google.inject.Provides; import lombok.AccessLevel; import lombok.Getter; import net.runelite.api.*; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.*; +import net.runelite.api.kit.KitType; +import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.config.ConfigManager; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.ui.overlay.OverlayManager; +import net.runelite.client.util.Text; + +import javax.inject.Inject; +import java.util.*; @PluginDescriptor( - name = "Theatre of Blood", + name = "Theater of Blood", description = "All-in-one plugin for Theatre of Blood", tags = {"ToB"}, - type = "PVM", - enabledByDefault = false + enabledByDefault = false, + type = "PVM" ) public class TheatrePlugin extends Plugin { @@ -41,11 +42,6 @@ public class TheatrePlugin extends Plugin { private static final int GROUNDOBJECT_ID_EXHUMED = 32743; private static final int ANIMATION_ID_XARPUS = 8059; private static final int GRAPHICSOBJECT_ID_YELLOW = 1595; - private static final int GRAPHICSOBJECT_ID_BLOAT_HAND1 = 1570; - private static final int GRAPHICSOBJECT_ID_BLOAT_HAND2 = 1571; - private static final int GRAPHICSOBJECT_ID_BLOAT_HAND3 = 1572; - private static final int GRAPHICSOBJECT_ID_BLOAT_HAND4 = 1573; - private static final int GRAPHICSOBJECT_ID_BLOAT_HAND5 = 1576; private static final int PROJECTILE_ID_P2RANGE = 1583; private static final int PROJECTILE_ID_YELLOW = 1596; private static final int ANIMATION_ID_P3_WEB = 8127; @@ -56,11 +52,30 @@ public class TheatrePlugin extends Plugin { private static final int VERZIK_ID_P3 = NpcID.VERZIK_VITUR_8374; private static final int NPC_ID_TORNADO = 8386; private static final int PROJECTILE_ID_P3_GREEN = 1598; - private static final String sotmsg = "A large ball of energy is shot your way..."; - private static final String sotmsg1 = "A large ball of energy is shot your way..."; - @Inject - private ChatMessageManager chatMessageManager; + + @Getter(AccessLevel.PACKAGE) + private final Map xarpusExhumedsTimer = new HashMap<>(); + @Getter + int exhumecount; + @Getter + int bloatTimer = 0; + + int bloatFeetTimer = 0; + NPC BossNylo = null; + private boolean bloatFlag = false; + @Getter + private Set bloatTiles = new HashSet<>(); + @Getter + private Set temp = new HashSet<>(); + @Getter + private Set temp2 = new HashSet<>(); + @Getter + private Set localTemp = new HashSet<>(); + + //@Getter + //private List bloatTiles = new ArrayList<>(); + @Getter(AccessLevel.PACKAGE) private boolean runMaiden; @@ -80,9 +95,6 @@ public class TheatrePlugin extends Plugin { @Getter(AccessLevel.PACKAGE) private boolean runBloat; - @Getter(AccessLevel.PACKAGE) - private int TickTillEat = 20; - @Getter(AccessLevel.PACKAGE) private NPC Bloat_NPC; @@ -112,12 +124,13 @@ public class TheatrePlugin extends Plugin { private List RedTilesOverworld = new ArrayList<>(); private List BlackTilesOverworld = new ArrayList<>(); - - private List BlackTilesUnderworld= new ArrayList<>(); - - private List RedTilesUnderworld= new ArrayList<>(); + @Getter + private boolean tempFlag = false; + @Getter + private boolean temp2Flag = false; private List GridPath = new ArrayList<>(); + private List BlackTilesUnderworld = new ArrayList<>(); @Getter(AccessLevel.PACKAGE) private boolean runXarpus; @@ -129,6 +142,7 @@ public class TheatrePlugin extends Plugin { @Getter(AccessLevel.PACKAGE) private final Map Xarpus_Exhumeds = new HashMap<>(); + private List RedTilesUnderworld = new ArrayList<>(); @Getter(AccessLevel.PACKAGE) private int Xarpus_TicksUntilShoot = 9; @@ -136,9 +150,6 @@ public class TheatrePlugin extends Plugin { @Getter(AccessLevel.PACKAGE) private NPC Xarpus_NPC; - @Getter(AccessLevel.PACKAGE) - private NPC Sotetseg_NPC; - @Getter(AccessLevel.PACKAGE) private boolean runVerzik; @@ -154,17 +165,16 @@ public class TheatrePlugin extends Plugin { @Getter(AccessLevel.PACKAGE) private List Verzik_YellowTiles = new ArrayList<>(); - @Getter(AccessLevel.PACKAGE) - private List Bloat_Hands = new ArrayList<>(); - @Getter(AccessLevel.PACKAGE) private NPC Verzik_NPC; + @Getter(AccessLevel.PACKAGE) + private List tornadoList; @Getter(AccessLevel.PACKAGE) - private NPC Verzik_NPC_P3; + private List crabList; - @Getter(AccessLevel.PACKAGE) - private NPC Verzik_NPC_P2; + @Getter + private int redCrabsTimer; private int P3_attacksLeft; @@ -180,6 +190,18 @@ public class TheatrePlugin extends Plugin { @Inject private TheatreConfig config; + @Inject + private TheatreXarpusOverlay xarpusOverlay; + + @Inject + private ChatMessageManager chatMessageManager; + + @Inject + private VerzikNyloOverlay verzikNyloOverlay; + + @Inject + private BloatTimerOverlay bloatTimerOverlay; + @Provides TheatreConfig getConfig(ConfigManager configManager) { return configManager.getConfig(TheatreConfig.class); @@ -188,19 +210,116 @@ public class TheatrePlugin extends Plugin { @Override protected void startUp() { overlayManager.add(overlay); + overlayManager.add(xarpusOverlay); + overlayManager.add(verzikNyloOverlay); + overlayManager.add(bloatTimerOverlay); } @Override protected void shutDown() { overlayManager.remove(overlay); + overlayManager.remove(xarpusOverlay); + overlayManager.remove(xarpusOverlay); + overlayManager.remove(bloatTimerOverlay); + } + + + @Subscribe + public void onMenuEntryAdded(MenuEntryAdded event) { + if (client.getGameState() != GameState.LOGGED_IN || !config.NyloMenu() || !runNylocas) { + return; + } + + final String pOptionToReplace = Text.removeTags(event.getOption()).toUpperCase(); + Map playerEquipment = new HashMap<>(); + + int attackType = 0; //0=idk 1= melee 2= range 3= mage + + for (KitType kitType : KitType.values()) { + + int itemId = client.getLocalPlayer().getPlayerComposition().getEquipmentId(kitType); + switch (itemId) { + case ItemID.DRAGON_CLAWS: + case ItemID.SCYTHE_OF_VITUR: + case ItemID.SCYTHE_OF_VITUR_UNCHARGED: + case ItemID.SCYTHE_10735: + case ItemID.SCYTHE_OF_VITUR_22664: + case ItemID.HAM_JOINT: + case ItemID.EVENT_RPG: + case ItemID.ABYSSAL_WHIP: + case ItemID.ABYSSAL_TENTACLE: + case ItemID.FROZEN_ABYSSAL_WHIP: + case ItemID.VOLCANIC_ABYSSAL_WHIP: + case ItemID.GHRAZI_RAPIER: + case ItemID.DRAGON_WARHAMMER: + case ItemID.DRAGON_WARHAMMER_20785: + case ItemID.BANDOS_GODSWORD: + case ItemID.BANDOS_GODSWORD_OR: + case ItemID.BANDOS_GODSWORD_20782: + case ItemID.BANDOS_GODSWORD_21060: + case ItemID.CRYSTAL_HALBERD_510: + case ItemID.CRYSTAL_HALBERD_510_I: + case ItemID.CRYSTAL_HALBERD_610: + case ItemID.CRYSTAL_HALBERD_610_I: + case ItemID.CRYSTAL_HALBERD_710_I: + case ItemID.CRYSTAL_HALBERD_710: + case ItemID.CRYSTAL_HALBERD_110: + case ItemID.CRYSTAL_HALBERD_110_I: + case ItemID.CRYSTAL_HALBERD_210: + case ItemID.CRYSTAL_HALBERD_310: + case ItemID.CRYSTAL_HALBERD_310_I: + case ItemID.CRYSTAL_HALBERD_410: + case ItemID.CRYSTAL_HALBERD_410_I: + case ItemID.CRYSTAL_HALBERD_810: + case ItemID.CRYSTAL_HALBERD_810_I: + case ItemID.CRYSTAL_HALBERD_910: + case ItemID.CRYSTAL_HALBERD_910_I: + attackType = 1; + break; + case ItemID.TOXIC_BLOWPIPE: + case ItemID.TOXIC_BLOWPIPE_EMPTY: + case ItemID.RED_CHINCHOMPA_10034: + case ItemID.BLACK_CHINCHOMPA: + case ItemID.CHINCHOMPA_10033: + case ItemID.TWISTED_BOW: + attackType = 2; + break; + case ItemID.SANGUINESTI_STAFF: + case ItemID.TOXIC_STAFF_OF_THE_DEAD: + case ItemID.TRIDENT_OF_THE_SWAMP: + case ItemID.TRIDENT_OF_THE_SEAS_E: + case ItemID.TRIDENT_OF_THE_SEAS: + case ItemID.TRIDENT_OF_THE_SWAMP_E: + case ItemID.KODAI_WAND: + case ItemID.MASTER_WAND: + case ItemID.MASTER_WAND_20560: + attackType = 3; + break; + } + if (attackType != 0) { + break; + } + + } + if (pOptionToReplace.equals("CANCEL") || pOptionToReplace.equals("WALK HERE") || pOptionToReplace.equals("PASS")) { + return; + } + int Id = 0; + if (BossNylo != null) { + Id = BossNylo.getId(); + } + String target = Text.removeTags(event.getTarget()).toLowerCase(); + if (attackType != 0) { + stripEntries(attackType, target, Id); + } + } @Subscribe - public void onNpcSpawned(NpcSpawned npcSpawned) - { + public void onNpcSpawned(NpcSpawned npcSpawned) { + NPC npc = npcSpawned.getNpc(); - switch (npc.getId()) - { + switch (npc.getId()) { case NpcID.THE_MAIDEN_OF_SUGADINTI: case NpcID.THE_MAIDEN_OF_SUGADINTI_8361: case NpcID.THE_MAIDEN_OF_SUGADINTI_8362: @@ -215,25 +334,40 @@ public class TheatrePlugin extends Plugin { case NpcID.PESTILENT_BLOAT: runBloat = true; Bloat_NPC = npc; + bloatTimer = 0; + bloatFlag = false; + break; + case NpcID.NYLOCAS_VASILIAS: + case NpcID.NYLOCAS_VASILIAS_8355: + case NpcID.NYLOCAS_VASILIAS_8356: + case NpcID.NYLOCAS_VASILIAS_8357: + BossNylo = npc; break; case NPCID_NYLOCAS_PILLAR: runNylocas = true; - if (!Nylocas_Pillars.keySet().contains(npc)) - { + if (!Nylocas_Pillars.keySet().contains(npc)) { Nylocas_Pillars.put(npc, 100); } break; - case 8342: case 8343: case 8344: case 8345: case 8346: case 8347: - case 8348: case 8349: case 8350: case 8351: case 8352: case 8353: - if (runNylocas) - { + case 8342: + case 8343: + case 8344: + case 8345: + case 8346: + case 8347: + case 8348: + case 8349: + case 8350: + case 8351: + case 8352: + case 8353: + if (runNylocas) { Nylocas_Map.put(npc, 52); } break; case NpcID.SOTETSEG: case NpcID.SOTETSEG_8388: runSotetseg = true; - Sotetseg_NPC = npc; RedTiles.clear(); break; case NpcID.XARPUS: @@ -241,6 +375,7 @@ public class TheatrePlugin extends Plugin { case NpcID.XARPUS_8340: case NpcID.XARPUS_8341: runXarpus = true; + exhumecount = 25; Xarpus_NPC = npc; Xarpus_Stare = false; Xarpus_TicksUntilShoot = 9; @@ -249,22 +384,17 @@ public class TheatrePlugin extends Plugin { case NpcID.VERZIK_VITUR_8369: case NpcID.VERZIK_VITUR_8370: case NpcID.VERZIK_VITUR_8371: + case NpcID.VERZIK_VITUR_8372: case NpcID.VERZIK_VITUR_8373: + case NpcID.VERZIK_VITUR_8374: case NpcID.VERZIK_VITUR_8375: + P3_TicksUntilAttack = -1; + P3_attacksLeft = 9; + redCrabsTimer = 13; Verzik_NPC = npc; runVerzik = true; - break; - - case NpcID.VERZIK_VITUR_8372:/*p2 spider*/ - Verzik_NPC_P2 = npc; - runVerzik = true; - break; - - case NpcID.VERZIK_VITUR_8374:/*p3 spider*/ - P3_TicksUntilAttack = 0; - P3_attacksLeft = 9; - Verzik_NPC_P3 = npc; - runVerzik = true; + tornadoList = new ArrayList<>(); + crabList = new ArrayList<>(); break; } } @@ -288,28 +418,35 @@ public class TheatrePlugin extends Plugin { case NpcID.PESTILENT_BLOAT: runBloat = false; Bloat_NPC = null; + bloatTimer = 0; break; case NPCID_NYLOCAS_PILLAR: - if (Nylocas_Pillars.keySet().contains(npc)) - { + if (Nylocas_Pillars.keySet().contains(npc)) { Nylocas_Pillars.remove(npc); } break; - case 8342: case 8343: case 8344: case 8345: case 8346: case 8347: - case 8348: case 8349: case 8350: case 8351: case 8352: case 8353: - if (Nylocas_Map.keySet().contains(npc)) - { + case 8342: + case 8343: + case 8344: + case 8345: + case 8346: + case 8347: + case 8348: + case 8349: + case 8350: + case 8351: + case 8352: + case 8353: + if (Nylocas_Map.keySet().contains(npc)) { Nylocas_Map.remove(npc); } break; case NpcID.SOTETSEG: case NpcID.SOTETSEG_8388: RedTiles.clear(); - if (client.getPlane() != 3) - { + if (client.getPlane() != 3) { runSotetseg = false; } - Sotetseg_NPC = null; break; case NpcID.XARPUS: case NpcID.XARPUS_8339: @@ -321,117 +458,119 @@ public class TheatrePlugin extends Plugin { Xarpus_TicksUntilShoot = 9; Xarpus_previousAnimation = -1; Xarpus_Exhumeds.clear(); + exhumecount = 0; break; case NpcID.VERZIK_VITUR_8369: case NpcID.VERZIK_VITUR_8370: - case NpcID.VERZIK_VITUR_8371:/*p2*/ - + case NpcID.VERZIK_VITUR_8371: + case NpcID.VERZIK_VITUR_8372: case NpcID.VERZIK_VITUR_8373: - + case NpcID.VERZIK_VITUR_8374: case NpcID.VERZIK_VITUR_8375: + runVerzik = false; + redCrabsTimer = 0; Verzik_NPC = null; break; - case NpcID.VERZIK_VITUR_8372: - Verzik_NPC_P2 = null; - break; - case NpcID.VERZIK_VITUR_8374:/*p3 spider*/ - Verzik_NPC_P3 = null; - break; - } } @Subscribe - public void onGroundObjectSpawned(GroundObjectSpawned event) - { - if (runSotetseg) - { + public void onGroundObjectSpawned(GroundObjectSpawned event) { + if (runSotetseg) { GroundObject o = event.getGroundObject(); - if (o.getId() == GROUNDOBJECT_ID_BLACKMAZE) - { + if (o.getId() == GROUNDOBJECT_ID_BLACKMAZE) { Tile t = event.getTile(); WorldPoint p = t.getWorldLocation(); - if (t.getPlane() == 0) - { + if (t.getPlane() == 0) { if (!BlackTilesOverworld.contains(p)) BlackTilesOverworld.add(p); - } - else - { + } else { if (!BlackTilesUnderworld.contains(p)) BlackTilesUnderworld.add(p); } } - if (o.getId() == GROUNDOBJECT_ID_REDMAZE) - { + if (o.getId() == GROUNDOBJECT_ID_REDMAZE) { Tile t = event.getTile(); WorldPoint p = t.getWorldLocation(); - if (p.getPlane() == 0) - { - if (!RedTiles.containsValue(t)) - { - RedTiles.put(o,t); + if (p.getPlane() == 0) { + if (!RedTiles.containsValue(t)) { + RedTiles.put(o, t); } - } - else - { + } else { if (!RedTilesUnderworld.contains(p)) RedTilesUnderworld.add(p); } } } - if (runXarpus) - { + if (runXarpus) { GroundObject o = event.getGroundObject(); - if (o.getId() == GROUNDOBJECT_ID_EXHUMED) - { + if (o.getId() == GROUNDOBJECT_ID_EXHUMED) { + + xarpusExhumedsTimer.put(o, 18); + Xarpus_Exhumeds.put(o, 18); + } + } } @Subscribe - public void onProjectileMoved(ProjectileMoved event) - { - if (runVerzik) - { + public void onProjectileMoved(ProjectileMoved event) { + if (runVerzik) { Projectile projectile = event.getProjectile(); - if (projectile.getId() == PROJECTILE_ID_P2RANGE) - { - WorldPoint p = WorldPoint.fromLocal(client,event.getPosition()); + if (projectile.getId() == PROJECTILE_ID_P2RANGE) { + WorldPoint p = WorldPoint.fromLocal(client, event.getPosition()); Verzik_RangeProjectiles.put(projectile, p); } } } @Subscribe - public void onChatMessage(ChatMessage chatMessage) - { - MessageNode messageNode = chatMessage.getMessageNode(); - - if (messageNode.getValue().toLowerCase().contains(sotmsg.toLowerCase())) - { - TickTillEat = 20; - /*20 ticks*/ - + public void onAnimationChanged(AnimationChanged event) { + if (runVerzik) { + if (event.getActor().getAnimation() == 8117) { + redCrabsTimer = 11; + } } - - } @Subscribe - public void onGameTick(GameTick event) - { - if (runMaiden) - { + public void onVarbitChanged(VarbitChanged event) { + if (runBloat) { + + if (client.getVar(Varbits.BLOAT_ENTERED_ROOM) == 1) { + if (!bloatFlag) { + bloatTimer = 0; + bloatFlag = true; + } + } + } + } + + @Subscribe + public void onGraphicsObjectCreated(GraphicsObjectCreated event) { + GraphicsObject obj = event.getGraphicsObject(); + if (obj.getId() == 1570 || obj.getId() == 1571 || obj.getId() == 1572 || obj.getId() == 1573 || obj.getId() == 1574 || obj.getId() == 1575 || obj.getId() == 1576) { + WorldPoint p = WorldPoint.fromLocal(client, obj.getLocation()); + if (temp.size() == 0) { + + } else { + + } + } + } + + + @Subscribe + public void onGameTick(GameTick event) { + if (runMaiden) { Maiden_BloodSpatters.clear(); - for (GraphicsObject o : client.getGraphicsObjects()) - { - if (o.getId() == GRAPHICSOBJECT_ID_MAIDEN) - { + for (GraphicsObject o : client.getGraphicsObjects()) { + if (o.getId() == GRAPHICSOBJECT_ID_MAIDEN) { Maiden_BloodSpatters.add(WorldPoint.fromLocal(client, o.getLocation())); } } @@ -439,98 +578,117 @@ public class TheatrePlugin extends Plugin { Maiden_SpawnLocations2.clear(); Maiden_SpawnLocations2.addAll(Maiden_SpawnLocations); Maiden_SpawnLocations.clear(); - for (NPC spawn : Maiden_Spawns) - { + for (NPC spawn : Maiden_Spawns) { Maiden_SpawnLocations.add(spawn.getWorldLocation()); } } - if (runBloat) - { + if (runBloat) { + + localTemp.clear(); + + //System.out.println("Temp flag" + tempFlag); + //System.out.println("Temp2 flag" + temp2Flag); + + + for (GraphicsObject obj : client.getGraphicsObjects()) { + if (obj.getId() == 1570 || obj.getId() == 1571 || obj.getId() == 1572 || obj.getId() == 1573 || obj.getId() == 1574 || obj.getId() == 1575 || obj.getId() == 1576) { + WorldPoint p = WorldPoint.fromLocal(client, obj.getLocation()); + //Already have some feet in temp Set + if (temp.size() > 0) { + //System.out.println("temp size > 0, tempflag set false, tempflag2 set true"); + tempFlag = false; + temp2Flag = true; + } else { + //System.out.println("temp size 0, tempflag set true, tempflag2 set false"); + tempFlag = true; + temp2Flag = false; + + } + localTemp.add(p); + } + } + + if (tempFlag) { + temp2.clear(); + temp2Flag = false; + temp.addAll(localTemp); + + + //System.out.println("temp2 cleared, temp2flag set false, added to temp set"); + } else if (temp2Flag) { + temp.clear(); + tempFlag = false; + temp2.addAll(localTemp); + //System.out.println("temp cleared, tempflag set false, added to temp2 set"); + + } Bloat_downCount++; - Bloat_Hands.clear(); - for (GraphicsObject o : client.getGraphicsObjects()) - { - if (o.getId() == GRAPHICSOBJECT_ID_BLOAT_HAND1 || o.getId() == GRAPHICSOBJECT_ID_BLOAT_HAND2 || o.getId() == GRAPHICSOBJECT_ID_BLOAT_HAND3 || o.getId() == GRAPHICSOBJECT_ID_BLOAT_HAND4|| o.getId() == GRAPHICSOBJECT_ID_BLOAT_HAND5) - { - Bloat_Hands.add(WorldPoint.fromLocal(client, o.getLocation())); - } - } - - if (Bloat_NPC.getAnimation() == -1) //1 = up; 2 = down; 3 = warn; { + bloatTimer++; Bloat_downCount = 0; - if (Bloat_NPC.getHealth() == 0) - { + if (Bloat_NPC.getHealth() == 0) { Bloat_State = 2; - } - else + } else Bloat_State = 1; - } - else - { - if (25 it = Nylocas_Map.keySet().iterator(); it.hasNext();) - { + if (runNylocas) { + for (Iterator it = Nylocas_Map.keySet().iterator(); it.hasNext(); ) { NPC npc = it.next(); int ticksLeft = Nylocas_Map.get(npc); - if (ticksLeft < 0) - { + if (ticksLeft < 0) { it.remove(); continue; } Nylocas_Map.replace(npc, ticksLeft - 1); } - for (NPC pillar : Nylocas_Pillars.keySet()) - { + for (NPC pillar : Nylocas_Pillars.keySet()) { int healthPercent = pillar.getHealthRatio(); - if (healthPercent > -1) - { + if (healthPercent > -1) { Nylocas_Pillars.replace(pillar, healthPercent); } } - for (NPC npc : client.getNpcs()) - { - if (npc.getId() == 8358) - { + for (NPC npc : client.getNpcs()) { + if (npc.getId() == 8358) { runNylocas = true; break; } runNylocas = false; + BossNylo = null; } } - if (runSotetseg) - { - TickTillEat--; + if (runSotetseg) { boolean sotetsegFighting = false; - for (NPC npc : client.getNpcs()) - { - if (npc.getId() == NpcID.SOTETSEG_8388) - { + for (NPC npc : client.getNpcs()) { + if (npc.getId() == NpcID.SOTETSEG_8388) { BlackTilesUnderworld.clear(); BlackTilesOverworld.clear(); RedTilesOverworld.clear(); @@ -542,42 +700,33 @@ public class TheatrePlugin extends Plugin { } } - if (!sotetsegFighting) - { - if (!BlackTilesUnderworld.isEmpty() && !RedTilesUnderworld.isEmpty() && GridPath.isEmpty()) - { + if (!sotetsegFighting) { + if (!BlackTilesUnderworld.isEmpty() && !RedTilesUnderworld.isEmpty() && GridPath.isEmpty()) { int minX = 99999; int minY = 99999; - for (WorldPoint p : BlackTilesUnderworld) - { + for (WorldPoint p : BlackTilesUnderworld) { int x = p.getX(); int y = p.getY(); - if (x < minX) - { + if (x < minX) { minX = x; } - if (y < minY) - { + if (y < minY) { minY = y; } } - boolean messageSent = false; - for (WorldPoint p : RedTilesUnderworld) - { + for (WorldPoint p : RedTilesUnderworld) { WorldPoint pN = new WorldPoint(p.getX(), p.getY() + 1, p.getPlane()); WorldPoint pS = new WorldPoint(p.getX(), p.getY() - 1, p.getPlane()); WorldPoint pE = new WorldPoint(p.getX() + 1, p.getY(), p.getPlane()); WorldPoint pW = new WorldPoint(p.getX() - 1, p.getY(), p.getPlane()); - if ( !( (RedTilesUnderworld.contains(pN) && RedTilesUnderworld.contains(pS)) || - (RedTilesUnderworld.contains(pE) && RedTilesUnderworld.contains(pW)) ) ) - { + if (!((RedTilesUnderworld.contains(pN) && RedTilesUnderworld.contains(pS)) || + (RedTilesUnderworld.contains(pE) && RedTilesUnderworld.contains(pW)))) { GridPath.add(new Point(p.getX() - minX, p.getY() - minY)); - if (!messageSent) - { + if (!messageSent) { //client.addChatMessage(ChatMessageType.SERVER, "", "Maze path acquired.", null); messageSent = true; } @@ -586,71 +735,74 @@ public class TheatrePlugin extends Plugin { } } - if (!BlackTilesOverworld.isEmpty() && !GridPath.isEmpty() && RedTilesOverworld.isEmpty()) - { + if (!BlackTilesOverworld.isEmpty() && !GridPath.isEmpty() && RedTilesOverworld.isEmpty()) { int minX = 99999; int minY = 99999; - for (WorldPoint p : BlackTilesOverworld) - { + for (WorldPoint p : BlackTilesOverworld) { int x = p.getX(); int y = p.getY(); - if (x < minX) - { + if (x < minX) { minX = x; } - if (y < minY) - { + if (y < minY) { minY = y; } } - for (Point p : GridPath) - { + for (Point p : GridPath) { RedTilesOverworld.add(new WorldPoint(minX + p.getX(), minY + p.getY(), 0)); } } } } - if (runXarpus) - { - for (Iterator it = Xarpus_Exhumeds.keySet().iterator(); it.hasNext();) - { + if (runXarpus) { + int size = xarpusExhumedsTimer.size(); + for (Map.Entry exhumes : xarpusExhumedsTimer.entrySet()) { + if (size > 0) { + exhumes.setValue(exhumes.getValue() - 1); + } + + } + for (Iterator it = Xarpus_Exhumeds.keySet().iterator(); it.hasNext(); ) { GroundObject key = it.next(); Xarpus_Exhumeds.replace(key, Xarpus_Exhumeds.get(key) - 1); - if (Xarpus_Exhumeds.get(key) < 0) - { + if (Xarpus_Exhumeds.get(key) < 0) { it.remove(); + exhumecount--; } } - if (Xarpus_NPC.getOverheadText() != null ) - { + if ((Xarpus_NPC.getComposition().getOverheadIcon() != null)) { Xarpus_Stare = true; } - if (Xarpus_Stare) - { + if (Xarpus_Stare) { //dont hit xarpus if it looking at u - } - else if (Xarpus_NPC.getId() == NpcID.XARPUS_8340) - { + } else if (Xarpus_NPC.getId() == NpcID.XARPUS_8340) { Xarpus_TicksUntilShoot--; - if (Xarpus_NPC.getAnimation() == ANIMATION_ID_XARPUS && Xarpus_previousAnimation != ANIMATION_ID_XARPUS) - { - Xarpus_TicksUntilShoot = 3; - } - Xarpus_previousAnimation = Xarpus_NPC.getAnimation(); + //if (Xarpus_NPC.getAnimation() == ANIMATION_ID_XARPUS && Xarpus_previousAnimation != ANIMATION_ID_XARPUS) + //{ + //Xarpus_TicksUntilShoot = 3; + //} + //Xarpus_previousAnimation = Xarpus_NPC.getAnimation(); } } - if (runVerzik) - { - if (!Verzik_RangeProjectiles.isEmpty()) - { - for (Iterator it = Verzik_RangeProjectiles.keySet().iterator(); it.hasNext();) - { + if (runVerzik) { + crabList.clear(); + for (NPC npc : client.getNpcs()) { + + if (npc.getName().toLowerCase().contains("nylo")) { + crabList.add(npc); + } + } + + if (Verzik_NPC.getAnimation() == 8117) { + redCrabsTimer = redCrabsTimer - 1; + } + if (!Verzik_RangeProjectiles.isEmpty()) { + for (Iterator it = Verzik_RangeProjectiles.keySet().iterator(); it.hasNext(); ) { Projectile projectile = it.next(); - if (projectile.getRemainingCycles() < 1) - { + if (projectile.getRemainingCycles() < 1) { it.remove(); } } @@ -659,55 +811,40 @@ public class TheatrePlugin extends Plugin { Verzik_YellowBall = null; Verzik_YellowTiles.clear(); - for (Projectile projectile : client.getProjectiles()) - { - if (projectile.getId() == PROJECTILE_ID_YELLOW) - { + for (Projectile projectile : client.getProjectiles()) { + if (projectile.getId() == PROJECTILE_ID_YELLOW) { Verzik_YellowBall = projectile; break; } } - for (GraphicsObject o : client.getGraphicsObjects()) - { - if (o.getId() == GRAPHICSOBJECT_ID_YELLOW) - { + for (GraphicsObject o : client.getGraphicsObjects()) { + if (o.getId() == GRAPHICSOBJECT_ID_YELLOW) { + Verzik_YellowTiles.add(WorldPoint.fromLocal(client, o.getLocation())); } } - for (NPC npc : client.getNpcs()) - { - if (npc.getId() == 8379) - { - runVerzik = true; - break; - } - runVerzik = false; - } - - - if (Verzik_NPC_P3 != null) { + if (Verzik_NPC.getId() == VERZIK_ID_P3) { boolean tornadosActive = false; - for (NPC npc : client.getNpcs()) - { - if (npc.getId() == NPC_ID_TORNADO) - { + for (NPC npc : client.getNpcs()) { + if (npc.getId() == NPC_ID_TORNADO) { + tornadoList.add(npc); tornadosActive = true; break; } } boolean isGreenBall = false; - for (Projectile projectile : client.getProjectiles()) - { + for (Projectile projectile : client.getProjectiles()) { if (projectile.getId() == PROJECTILE_ID_P3_GREEN) { isGreenBall = projectile.getRemainingCycles() > 210; break; } } + P3_TicksUntilAttack--; - switch (Verzik_NPC_P3.getAnimation()) { + switch (Verzik_NPC.getAnimation()) { case ANIMATION_ID_P3_MAGE: if (P3_TicksUntilAttack < 2) { P3_attacksLeft--; @@ -762,6 +899,90 @@ public class TheatrePlugin extends Plugin { } } + + } -} + private void stripEntries(int style, String target, int NyloID) { + String Keep = null; + if (NyloID == 0) { + switch (style) { + case 1: + Keep = "Nylocas Ischyros"; + break; + case 2: + Keep = "Nylocal Toxobolos"; + break; + case 3: + Keep = "Nylocas Hagios"; + break; + } + } else { + Keep = "fuckaadamhypocrticalpos"; + switch (NyloID) { + case 8356://0=idk 1= melee 2= range 3= mage + if (style == 3) { + + Keep = "Nylocas Vasilias"; + } + break; + case 8357: + if (style == 2) { + Keep = "Nylocas Vasilias"; + } + break; + default: + if (style == 1) { + Keep = "Nylocas Vasilias"; + } + } + + } + int entryLength = 0; + List entryList = new ArrayList<>(); + for (MenuEntry entry : client.getMenuEntries()) { + if (Text.removeTags(entry.getTarget()).contains(Keep) && entry.getOption().equals("Attack")) { + + entryList.add(entry); + entryLength++; + } + if (entry.getOption().equalsIgnoreCase("walk here") || entry.getOption().equalsIgnoreCase("pass") || entry.getOption().equalsIgnoreCase("take")) { + entryList.add(entry); + entryLength++; + } + } + + //System.out.println("i see " + entryLength + " good options using style" + style); + if (entryLength != 0) { + MenuEntry[] newEntries = new MenuEntry[entryLength]; + + + for (int i = 0; i < (entryLength); i++) { + newEntries[i] = entryList.get(i); + } + client.setMenuEntries(newEntries); + } + + + } + + private int searchIndex(MenuEntry[] entries, String option, String target, boolean strict) { + for (int i = entries.length - 1; i >= 0; i--) { + MenuEntry entry = entries[i]; + String entryOption = Text.removeTags(entry.getOption()).toLowerCase(); + String entryTarget = Text.removeTags(entry.getTarget()).toLowerCase(); + + if (strict) { + if (entryOption.equals(option) && entryTarget.equals(target)) { + return i; + } + } else { + if (entryOption.contains(option.toLowerCase()) && entryTarget.equals(target)) { + return i; + } + } + } + + return -1; + } +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreXarpusOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreXarpusOverlay.java new file mode 100644 index 0000000000..72757be422 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/TheatreXarpusOverlay.java @@ -0,0 +1,68 @@ +package net.runelite.client.plugins.ztob; + +import com.google.inject.Inject; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayMenuEntry; +import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.LineComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; +import net.runelite.client.ui.overlay.components.TitleComponent; + +import java.awt.*; + +import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; +import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE; + +public class TheatreXarpusOverlay extends Overlay { + private final TheatrePlugin plugin; + private final TheatreConfig config; + PanelComponent panelComponent = new PanelComponent(); + + @Inject + private TheatreXarpusOverlay(TheatrePlugin plugin, TheatreConfig config) { + super(plugin); + setPosition(OverlayPosition.ABOVE_CHATBOX_RIGHT); + setPosition(OverlayPosition.DYNAMIC); + setPosition(OverlayPosition.DETACHED); + this.plugin = plugin; + this.config = config; + getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Theatre xarpus overlay")); + + } + + @Override + public Dimension render(Graphics2D graphics) { + if (plugin.isRunXarpus()) { + if (config.XarpusExhumeOverlay()) { + if (plugin.getXarpus_NPC().getId() == 8339) { + panelComponent.getChildren().clear(); + String overlayTitle = "Exhume Counter"; + + + // Build overlay title + panelComponent.getChildren().add(TitleComponent.builder() + .text(overlayTitle) + .color(Color.GREEN) + .build()); + + //Set the size of overlay + panelComponent.setPreferredSize(new Dimension( + graphics.getFontMetrics().stringWidth(overlayTitle) + 30, 0 + )); + + panelComponent.getChildren().add(LineComponent.builder() + .left("Exhumes: ") + .right(String.valueOf(plugin.getExhumecount())) + .build()); + } + } + return panelComponent.render(graphics); + } + + return null; + + } + + +} + diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/ztob/VerzikNyloOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/VerzikNyloOverlay.java new file mode 100644 index 0000000000..68f0630c12 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/ztob/VerzikNyloOverlay.java @@ -0,0 +1,81 @@ +package net.runelite.client.plugins.ztob; + +import net.runelite.api.Client; +import net.runelite.api.NPC; +import net.runelite.api.Point; +import net.runelite.client.ui.overlay.*; + +import javax.inject.Inject; +import java.awt.*; + +public class VerzikNyloOverlay extends Overlay { + + private final Client client; + private final TheatrePlugin plugin; + private final TheatreConfig config; + + @Inject + private VerzikNyloOverlay(Client client, TheatrePlugin plugin, TheatreConfig config) { + this.client = client; + this.plugin = plugin; + this.config = config; + setPosition(OverlayPosition.DYNAMIC); + setPriority(OverlayPriority.HIGH); + setLayer(OverlayLayer.ABOVE_SCENE); + } + + public Dimension render(Graphics2D graphics) { + + if (plugin.isRunVerzik()) { + if (config.NyloTargetOverlay()) { + if (plugin.getCrabList().size() > 0) { + + for (NPC npc : plugin.getCrabList()) { + if (npc.isDead()) { + continue; + } + String renderText = ""; + if (npc.getInteracting() != null) { + + renderText = npc.getInteracting().getName(); + Point point = npc.getCanvasTextLocation(graphics, npc.getInteracting().getName(), 0); + + + if (npc.getInteracting().getName().toLowerCase().equals(client.getLocalPlayer().getName().toLowerCase())) { + point = npc.getCanvasTextLocation(graphics, client.getLocalPlayer().getName(), 0); + renderText = "YOU NIGGA RUN!"; + + } else if (npc.getInteracting().getName().toLowerCase().equals("afyy")) { + point = npc.getCanvasTextLocation(graphics, "Ricecup", 0); + renderText = "Ricecup"; + } + if (renderText.equals("YOU NIGGA RUN!")) { + renderTextLocation(graphics, renderText, 12, Font.BOLD, Color.RED, point); + } else { + renderTextLocation(graphics, renderText, 12, Font.BOLD, Color.GREEN, point); + } + } + + } + } + + } + } + + return null; + } + + private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) { + graphics.setFont(new Font("Arial", fontStyle, fontSize)); + if (canvasPoint != null) { + final Point canvasCenterPoint = new Point( + canvasPoint.getX(), + canvasPoint.getY()); + final Point canvasCenterPoint_shadow = new Point( + canvasPoint.getX() + 1, + canvasPoint.getY() + 1); + OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK); + OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor); + } + } +} diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/equipmentinspector/normal.png b/runelite-client/src/main/resources/net/runelite/client/plugins/equipmentinspector/normal.png new file mode 100644 index 0000000000000000000000000000000000000000..613f95e46d5235a49ec0843faaa35384e9b0896b GIT binary patch literal 624 zcmV-$0+0QPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0tHD#K~z{r?Uuhw z!$1_rUmcyLn~P8fmrQ~BGyq5#M;t!sDe|AI9PCT z5L;*0n(yTB<#Ji>Y`9Ti3&7jKIc7LRzA=EB!@v>HuhtrJNg@rXeB>M9M-je0Kgy>A zylh?sDMIn)l}ej(`+H8v(E%7b5cc-@C3nN&w2Fwp-R+IopcXQj3?*h0Vy~0lOgpUz zIPDlH0yrEs;AVPiQm$;Ucia462~d@01* literal 0 HcmV?d00001