From 0a4dc4b3fc0bbddae461e3c24517ae3140dc6a77 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Tue, 20 Mar 2018 21:26:43 -0600 Subject: [PATCH] itemstats: Support holy wrench effect --- .../main/java/net/runelite/api/Client.java | 1 + .../itemstats/potions/PrayerPotion.java | 52 ++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index a7ba3ab1b4..61730161d1 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -292,6 +292,7 @@ public interface Client extends GameEngine * @param inventory * @return */ + @Nullable ItemContainer getItemContainer(InventoryID inventory); int getIntStackSize(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java index a8637bc121..4c0bfff6a1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java @@ -25,6 +25,10 @@ package net.runelite.client.plugins.itemstats.potions; import net.runelite.api.Client; +import net.runelite.api.InventoryID; +import net.runelite.api.Item; +import net.runelite.api.ItemContainer; +import net.runelite.api.ItemID; import net.runelite.client.plugins.itemstats.StatBoost; import static net.runelite.client.plugins.itemstats.stats.Stats.PRAYER; @@ -38,11 +42,57 @@ public class PrayerPotion extends StatBoost this.delta = delta; } + private static final int RING_SLOT = 12; + private static final int CAPE_SLOT = 1; + @Override public int heals(Client client) { + boolean hasHolyWrench = false; + + ItemContainer equipContainer = client.getItemContainer(InventoryID.EQUIPMENT); + if (equipContainer != null) + { + Item[] equip = equipContainer.getItems(); + + hasHolyWrench |= equip.length > RING_SLOT && equip[RING_SLOT].getId() == ItemID.RING_OF_THE_GODS_I; + if (equip.length > CAPE_SLOT) + { + int cape = equip[CAPE_SLOT].getId(); + hasHolyWrench |= cape == ItemID.PRAYER_CAPE; + hasHolyWrench |= cape == ItemID.PRAYER_CAPET; + hasHolyWrench |= cape == ItemID.PRAYER_CAPE_10643; // No idea what this is + hasHolyWrench |= cape == ItemID.MAX_CAPE; + hasHolyWrench |= cape == ItemID.MAX_CAPE_13282; // Or these + hasHolyWrench |= cape == ItemID.MAX_CAPE_13342; + } + } + if (!hasHolyWrench) + { + ItemContainer invContainer = client.getItemContainer(InventoryID.INVENTORY); + if (invContainer != null) + { + for (Item itemStack : invContainer.getItems()) + { + int item = itemStack.getId(); + hasHolyWrench |= item == ItemID.HOLY_WRENCH; + hasHolyWrench |= item == ItemID.PRAYER_CAPE; + hasHolyWrench |= item == ItemID.PRAYER_CAPET; + hasHolyWrench |= item == ItemID.PRAYER_CAPE_10643; + hasHolyWrench |= item == ItemID.MAX_CAPE; + hasHolyWrench |= item == ItemID.MAX_CAPE_13282; + hasHolyWrench |= item == ItemID.MAX_CAPE_13342; + + if (hasHolyWrench) + { + break; + } + } + } + } + + double perc = hasHolyWrench ? .27 : .25; int max = getStat().getMaximum(client); - double perc = .25; return (((int) (max * perc)) * (delta >= 0 ? 1 : -1)) + delta; }