From 5c98c47803c1991abdd4b341fed77f9503fbf979 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 11 May 2022 12:10:42 -0400 Subject: [PATCH 1/8] compost tracking: fix tracking fertile soil with ash covered tome --- .../plugins/timetracking/farming/CompostTracker.java | 4 ++-- .../timetracking/farming/CompostTrackerTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/CompostTracker.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/CompostTracker.java index b5066658f6..b590599f81 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/CompostTracker.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/CompostTracker.java @@ -76,7 +76,7 @@ public class CompostTracker private static final Pattern COMPOST_USED_ON_PATCH = Pattern.compile( "You treat the .+ with (?ultra|super|)compost\\."); private static final Pattern FERTILE_SOIL_CAST = Pattern.compile( - "The .+ has been treated with (?ultra|super|)compost\\."); + "^The .+ has been treated with (?ultra|super|)compost"); private static final Pattern ALREADY_TREATED = Pattern.compile( "This .+ has already been (treated|fertilised) with (?ultra|super|)compost(?: - the spell can't make it any more fertile)?\\."); private static final Pattern INSPECT_PATCH = Pattern.compile( @@ -271,7 +271,7 @@ public class CompostTracker Matcher matcher; if ((matcher = COMPOST_USED_ON_PATCH.matcher(chatMessage)).matches() || - (matcher = FERTILE_SOIL_CAST.matcher(chatMessage)).matches() || + (matcher = FERTILE_SOIL_CAST.matcher(chatMessage)).find() || (matcher = ALREADY_TREATED.matcher(chatMessage)).matches() || (matcher = INSPECT_PATCH.matcher(chatMessage)).matches()) { diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/CompostTrackerTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/CompostTrackerTest.java index 42dba61b5d..2d96d2e757 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/CompostTrackerTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/timetracking/farming/CompostTrackerTest.java @@ -320,4 +320,16 @@ public class CompostTrackerTest verify(configManager).setRSProfileConfiguration("timetracking", "MOCK.compost", CompostState.SUPERCOMPOST); } + @Test + public void onChatMessage_volcanicAsh() + { + ChatMessage chatEvent = mock(ChatMessage.class); + when(chatEvent.getType()).thenReturn(ChatMessageType.SPAM); + when(chatEvent.getMessage()).thenReturn("The fruit tree patch has been treated with ultracompost consuming 2 of your volcanic ash."); + + compostTracker.pendingCompostActions.put(farmingPatch, new CompostTracker.PendingCompost(Instant.MAX, worldPoint, farmingPatch)); + compostTracker.onChatMessage(chatEvent); + + verify(configManager).setRSProfileConfiguration("timetracking", "MOCK.compost", CompostState.ULTRACOMPOST); + } } From 4f4c502b1796ca70c3830ee7e563b8b4e16a8037 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 11 May 2022 12:57:05 -0400 Subject: [PATCH 2/8] overlay: make alt drag hotkey configurable --- .../client/config/RuneLiteConfig.java | 11 ++++ .../client/ui/overlay/OverlayRenderer.java | 53 +++++++++---------- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java index f69ebce272..0f39d284ae 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/config/RuneLiteConfig.java @@ -464,4 +464,15 @@ public interface RuneLiteConfig extends Config { return true; } + + @ConfigItem( + keyName = "dragHotkey", + name = "Drag Hotkey", + description = "Configures the hotkey used to drag UI elements around", + position = 52 + ) + default Keybind dragHotkey() + { + return Keybind.ALT; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index d92ef65e72..0f1476e5d0 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -36,7 +36,6 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Stroke; -import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.geom.AffineTransform; import java.util.Collection; @@ -60,19 +59,19 @@ import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.OverlayMenuClicked; -import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.input.MouseAdapter; import net.runelite.client.input.MouseManager; import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.JagexColors; import net.runelite.client.util.ColorUtil; +import net.runelite.client.util.HotkeyListener; import org.slf4j.Marker; import org.slf4j.MarkerFactory; @Singleton @Slf4j -public class OverlayRenderer extends MouseAdapter implements KeyListener +public class OverlayRenderer extends MouseAdapter { private static final Marker DEDUPLICATE = MarkerFactory.getMarker("DEDUPLICATE"); private static final int BORDER = 5; @@ -112,6 +111,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener private boolean isResizeable; private OverlayBounds emptySnapCorners, snapCorners; + private final HotkeyListener hotkeyListener; + @Inject private OverlayRenderer( final Client client, @@ -127,7 +128,27 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener this.runeLiteConfig = runeLiteConfig; this.clientUI = clientUI; this.eventBus = eventBus; - keyManager.registerKeyListener(this); + + this.hotkeyListener = new HotkeyListener(runeLiteConfig::dragHotkey) + { + @Override + public void hotkeyPressed() + { + inOverlayManagingMode = true; + } + + @Override + public void hotkeyReleased() + { + if (inOverlayManagingMode) + { + inOverlayManagingMode = false; + resetOverlayManagementMode(); + } + } + }; + + keyManager.registerKeyListener(hotkeyListener); mouseManager.registerMouseListener(this); eventBus.register(this); } @@ -692,30 +713,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener return mouseEvent; } - @Override - public void keyTyped(KeyEvent e) - { - } - - @Override - public void keyPressed(KeyEvent e) - { - if (e.isAltDown()) - { - inOverlayManagingMode = true; - } - } - - @Override - public void keyReleased(KeyEvent e) - { - if (!e.isAltDown() && inOverlayManagingMode) - { - inOverlayManagingMode = false; - resetOverlayManagementMode(); - } - } - private void safeRender(Client client, Overlay overlay, OverlayLayer layer, Graphics2D graphics, Point point) { if (!isResizeable && (layer == OverlayLayer.ABOVE_SCENE || layer == OverlayLayer.UNDER_WIDGETS)) From c22ae453c2ff5fff946c513d5cdd245450eaeb1c Mon Sep 17 00:00:00 2001 From: LlemonDuck Date: Wed, 11 May 2022 23:18:26 -0400 Subject: [PATCH 3/8] chatcommands: consume "clear single word" keypress Prevents a binding of "Ctrl+Backspace" from triggering the "clear single word" and also removing the remaining trailing space. Closes #14941 --- .../client/plugins/chatcommands/ChatKeyboardListener.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatKeyboardListener.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatKeyboardListener.java index 69456fd861..bad417e02d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatKeyboardListener.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatKeyboardListener.java @@ -65,6 +65,9 @@ public class ChatKeyboardListener implements KeyListener if (input != null) { + // prevent the keypress from also modifying the chatbox as we alter the text + e.consume(); + // remove trailing space while (input.endsWith(" ")) { @@ -80,6 +83,7 @@ public class ChatKeyboardListener implements KeyListener } else if (chatCommandsConfig.clearChatBox().matches(e)) { + e.consume(); int inputTye = client.getVar(VarClientInt.INPUT_TYPE); clientThread.invoke(() -> applyText(inputTye, "")); } From 674a6d4cbecbd5700f08f7a6d7207625b5ceab88 Mon Sep 17 00:00:00 2001 From: LlemonDuck Date: Wed, 11 May 2022 20:16:40 -0400 Subject: [PATCH 4/8] interfacestyles: 2005-style quest tab headers --- .../src/main/java/net/runelite/api/SpriteID.java | 12 ++++++++++-- .../plugins/interfacestyles/SpriteOverride.java | 8 ++++++++ .../client/plugins/interfacestyles/2005/1297.png | Bin 0 -> 240 bytes .../client/plugins/interfacestyles/2005/1713.png | Bin 0 -> 352 bytes .../client/plugins/interfacestyles/2005/2219.png | Bin 0 -> 241 bytes .../client/plugins/interfacestyles/2005/2276.png | Bin 0 -> 240 bytes .../client/plugins/interfacestyles/2005/2309.png | Bin 0 -> 352 bytes .../client/plugins/interfacestyles/2005/835.png | Bin 0 -> 233 bytes .../client/plugins/interfacestyles/2005/836.png | Bin 0 -> 240 bytes 9 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/1297.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/1713.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/2219.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/2276.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/2309.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/835.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/836.png diff --git a/runelite-api/src/main/java/net/runelite/api/SpriteID.java b/runelite-api/src/main/java/net/runelite/api/SpriteID.java index b8e0e20662..5e88ed277a 100644 --- a/runelite-api/src/main/java/net/runelite/api/SpriteID.java +++ b/runelite-api/src/main/java/net/runelite/api/SpriteID.java @@ -1543,7 +1543,9 @@ public final class SpriteID public static final int TAB_MAGIC_SPELLBOOK_ARCEUUS_UNUSED = 1708; /* Unmapped: 1709, 1710 */ public static final int TAB_MAGIC_SPELLBOOK_ARCEUUS = 1711; - /* Unmapped: 1712~2175 */ + /* Unmapped: 1712 */ + public static final int TAB_QUESTS_ORANGE_ADVENTURE_PATHS = 1713; + /* Unmapped: 1714~2175 */ public static final int HEALTHBAR_DEFAULT_FRONT_30PX = 2176; public static final int HEALTHBAR_DEFAULT_BACK_30PX = 2177; public static final int HEALTHBAR_DEFAULT_FRONT_50PX = 2178; @@ -1560,8 +1562,14 @@ public final class SpriteID public static final int HEALTHBAR_DEFAULT_BACK_140PX = 2189; public static final int HEALTHBAR_DEFAULT_FRONT_160PX = 2190; public static final int HEALTHBAR_DEFAULT_BACK_160PX = 2191; - /* Unmapped: 2192~2306 */ + /* Unmapped: 2192~2218 */ + public static final int QUESTS_PAGE_ICON_ORANGE_ADVENTURE_PATHS = 2219; + /* Unmapped: 2220~2275 */ + public static final int QUESTS_PAGE_ICON_BROWN_CHARACTER_SUMMARY = 2276; + /* Unmapped: 2277~2306 */ public static final int TAB_CLAN_CHAT = 2307; + /* Unmapped: 2308 */ + public static final int TAB_QUESTS_BROWN_CHARACTER_SUMMARY = 2309; /* Unmapped: 2308~2419 */ public static final int WIKI_DESELECTED = 2420; public static final int WIKI_SELECTED = 2421; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/SpriteOverride.java b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/SpriteOverride.java index 4f0153ee2c..3dc7406371 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/SpriteOverride.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/SpriteOverride.java @@ -41,6 +41,8 @@ enum SpriteOverride TAB_QUESTS_PURPLE_KOUREND_1299(SpriteID.TAB_QUESTS_PURPLE_KOUREND, AROUND_2005), TAB_QUESTS_RED_MINIGAMES(SpriteID.TAB_QUESTS_RED_MINIGAMES, AROUND_2005), TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES(SpriteID.TAB_QUESTS_GREEN_ACHIEVEMENT_DIARIES, AROUND_2005), + TAB_QUESTS_BROWN_CHARACTER_SUMMARY(SpriteID.TAB_QUESTS_BROWN_CHARACTER_SUMMARY, AROUND_2005), + TAB_QUESTS_ORANGE_ADVENTURE_PATHS(SpriteID.TAB_QUESTS_ORANGE_ADVENTURE_PATHS, AROUND_2005), TAB_INVENTORY(SpriteID.TAB_INVENTORY, AROUND_2005, AROUND_2010), TAB_EQUIPMENT(SpriteID.TAB_EQUIPMENT, AROUND_2005, AROUND_2010), TAB_PRAYER(SpriteID.TAB_PRAYER, AROUND_2005, AROUND_2010), @@ -57,6 +59,12 @@ enum SpriteOverride TAB_MUSIC(SpriteID.TAB_MUSIC, AROUND_2005, AROUND_2010), TAB_CHATBOX(SpriteID.CHATBOX, AROUND_2005), + QUESTS_PAGE_ICON_CHARACTER_SUMMARY(SpriteID.QUESTS_PAGE_ICON_BROWN_CHARACTER_SUMMARY, AROUND_2005), + QUESTS_PAGE_ICON_QUESTS(SpriteID.QUESTS_PAGE_ICON_BLUE_QUESTS, AROUND_2005), + QUESTS_PAGE_ICON_ACHIEVEMENT_DIARIES(SpriteID.QUESTS_PAGE_ICON_GREEN_ACHIEVEMENT_DIARIES, AROUND_2005), + QUESTS_PAGE_ICON_KOUREND_FAVOUR(SpriteID.QUESTS_PAGE_ICON_PURPLE_KOUREND, AROUND_2005), + QUESTS_PAGE_ICON_ADVENTURE_PATHS(SpriteID.QUESTS_PAGE_ICON_ORANGE_ADVENTURE_PATHS, AROUND_2005), + BUTTON_FRIENDS(SpriteID.BUTTON_FRIENDS, AROUND_2005), BUTTON_IGNORES(SpriteID.BUTTON_IGNORES, AROUND_2005), diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/1297.png b/runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/1297.png new file mode 100644 index 0000000000000000000000000000000000000000..7a409a5edf6fe0c6436a706b2ea8a9d38397c727 GIT binary patch literal 240 zcmVkWf2421DysGR_bO&EktDs=)XCJThb;Kp|mEh2x2u=C~Omo#jN1ZN6CsJk;{!1S4& z>G^2WKL9*#r~pbL0)Byzim`t;!>hyUjIsn;)gVYTF;KK^$}$Xs>|wUwK{;l^)F`0* zvUpLDK1&axI9XK=6cwCV3f2tXr%2WO9wU(c|FU+qj`sBHTS!q>E8FzlwO)fDqbzQ# q-LJl`*UG{{v&i~X$H-Y28Ey-aRgxHWVEYmP0000al?!RRrpJerlq(Cig#tZcmo1|#ldGQ)htU1GwP?#g?71{m)eKfW>F zb%CD1A12^^PwT73i+s!pJ}0H5vbOF#u?E5ZonJE3YD#sP(+ zIeQZR^dS01KuUox2ekbZc>H<#%gE>xroE1VCdC$b9h18ij!64KvBV&rC`nAeTr1g?=b@D|1WD->u68EzJ(NJwX#j$UF$UnGRoq% r+WqS5daW!RG>fcHb&Q;ak>R!gSk;mkNU?Qo00000NkvXXu0mjfR*qpy literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/2276.png b/runelite-client/src/main/resources/net/runelite/client/plugins/interfacestyles/2005/2276.png new file mode 100644 index 0000000000000000000000000000000000000000..7c5f0082ad51df446050209df05a794db2fe23f1 GIT binary patch literal 240 zcmVv~c#nP44KJ+DC`+JK4T3}y14Y}WEW;qk9%lO;lw&4LjRMLq zix&myv-BW}lU3zFQNfv|V9nrtid4<-F#_rTFKbupXivYsg%oAAvQ6Jz>oo{6%Hp=# q{p#y_tt=cgi>yy|jGTp$;kE#kRgxGJ!LhRd0000M!Hp}=g29N>G%fvzGsJ{hIwSA#DNyekKfW>F zb%CD1A12^^PG;b`m;79ToeE+BnlNyrH(v*!RRAiwT73i+s!pJ}0H5vbOF#u?E5ZonJE3YD#sP(+ zIeQZR^dS01KuUox2ekbZc>H<#%gE>xroE1VCdC$be?lX0uUmtDpx2TazVGvT}Ylb7MWy$FM)Afvp( zibeUeGjDFNTKtCPZI*z_EH@^roQqdkniYP}n5!SqHPgV9>qNPjK3CB8FN$50L!UYX zI-U*MkoKXzE9C5VL#CJib+hwdzwp}s%c*OUXv#gc_f=<2Hpp|E-d!KJBknXe`&p&x h1m;Dqi!@^zDe%8D$ByszH!wVxVZ-lw}wM*~4tVgL2G-sZl`r zW$~gQeU=_Xak8o$C@MI!6s#G%Pm!wmJw_n?|7GoJ9qsAYw~(T&R<`N8YrO_RMp@ie qyI*}>ua$*^W|8%&j*+u4GTautRgxHvt+Px30000XJ#b; literal 0 HcmV?d00001 From 7cce1fc7c3e7c1ec3ecd3216c0a1addd63987d81 Mon Sep 17 00:00:00 2001 From: Ben Puryear <54869170+Ben10164@users.noreply.github.com> Date: Thu, 12 May 2022 12:14:42 -0700 Subject: [PATCH 5/8] Add .DS_Store to .gitignore (#14925) --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 47811495bb..ff14386ce4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ project.properties .settings/ .classpath .vscode -.factorypath \ No newline at end of file +.factorypath +.DS_Store \ No newline at end of file From b2bdb0204b022d8335351cb535060e5b81c94083 Mon Sep 17 00:00:00 2001 From: ProjectileRage <19807407+ProjectileRage@users.noreply.github.com> Date: Thu, 12 May 2022 15:53:01 -0700 Subject: [PATCH 6/8] timers: Add Shadow Veil protection detection (#14687) --- .../java/net/runelite/client/plugins/timers/TimersPlugin.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java index 07e7029b99..d3dbcad8af 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java @@ -126,6 +126,7 @@ public class TimersPlugin extends Plugin private static final String WARD_OF_ARCEUUS_MESSAGE = ">Your defence against Arceuus magic has been strengthened."; private static final String PICKPOCKET_FAILURE_MESSAGE = "You fail to pick the "; private static final String DODGY_NECKLACE_PROTECTION_MESSAGE = "Your dodgy necklace protects you."; + private static final String SHADOW_VEIL_PROTECTION_MESSAGE = "Your attempt to steal goes unnoticed."; private static final Pattern TELEBLOCK_PATTERN = Pattern.compile("A Tele Block spell has been cast on you(?: by .+)?\\. It will expire in (?\\d+) minutes?(?:, (?\\d+) seconds?)?\\."); private static final Pattern DIVINE_POTION_PATTERN = Pattern.compile("You drink some of your divine (.+) potion\\."); @@ -510,7 +511,7 @@ public class TimersPlugin extends Plugin return; } - if (message.contains(DODGY_NECKLACE_PROTECTION_MESSAGE)) + if (message.contains(DODGY_NECKLACE_PROTECTION_MESSAGE) || message.contains(SHADOW_VEIL_PROTECTION_MESSAGE)) { removeGameTimer(PICKPOCKET_STUN); } From c284bcdf212a0ea9ec49a2718bf783505edd8f5b Mon Sep 17 00:00:00 2001 From: Jonathan Forscher Date: Thu, 12 May 2022 19:46:04 -0400 Subject: [PATCH 7/8] item stats: Add some missing beverages (#14412) --- .../plugins/itemstats/ItemStatChanges.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java index c07fbee562..65c7bbf64e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatChanges.java @@ -92,6 +92,7 @@ public class ItemStatChanges add(food(perc(.1, 1)), COOKED_SWEETCORN, SWEETCORN_7088 /* Bowl of cooked sweetcorn */); add(combo(food(1), boost(DEFENCE, perc(.02, 1))), CABBAGE_1967 /* Draynor Manor */); add(combo(2, food(8), heal(RUN_ENERGY, 5)), PAPAYA_FRUIT); + add(combo(2, food(3), boost(ATTACK, 3)), CUP_OF_TEA); add(range(food(5), food(7)), THIN_SNAIL_MEAT); add(range(food(7), food(9)), FAT_SNAIL_MEAT); add(range(food(7), food(10)), SPIDER_ON_STICK_6297, SPIDER_ON_SHAFT_6299); @@ -106,13 +107,35 @@ public class ItemStatChanges add(food(10), EEL_SUSHI); // Alcoholic Beverages + // Many of these retrieved from https://oldschool.runescape.wiki/w/Temporary_skill_drain add(combo(food(11), dec(ATTACK, 2)), JUG_OF_WINE); add(combo(food(14), dec(ATTACK, 3)), BOTTLE_OF_WINE); - add(combo(2, food(5), boost(STRENGTH, 6), heal(ATTACK, -4)), PREMADE_WIZ_BLZD, WIZARD_BLIZZARD); - add(combo(2, food(5), boost(STRENGTH, 4), heal(ATTACK, -3)), PREMADE_SGG, SHORT_GREEN_GUY); - add(combo(2, food(5), boost(STRENGTH, 7), heal(ATTACK, -4)), PREMADE_DR_DRAGON, DRUNK_DRAGON); - add(combo(2, food(5), boost(STRENGTH, 7), heal(ATTACK, -4)), PREMADE_CHOC_SDY, CHOC_SATURDAY); + add(combo(3, food(5), new SimpleStatBoost(STRENGTH, true, perc(.05, 1)), new BoostedStatBoost(ATTACK, false, perc(.02, -3))), PREMADE_SGG, SHORT_GREEN_GUY, BRANDY, GIN, VODKA, WHISKY); + add(combo(3, food(7), new SimpleStatBoost(STRENGTH, true, perc(.05, 2)), new BoostedStatBoost(ATTACK, false, perc(.02, -3))), PREMADE_BLURB_SP, BLURBERRY_SPECIAL); + add(combo(3, food(5), new SimpleStatBoost(STRENGTH, true, perc(.05, 2)), new BoostedStatBoost(ATTACK, false, perc(.02, -3))), PREMADE_DR_DRAGON, DRUNK_DRAGON, PREMADE_CHOC_SDY, CHOC_SATURDAY); + add(combo(3, food(5), new SimpleStatBoost(STRENGTH, true, perc(.06, 1)), new BoostedStatBoost(ATTACK, false, perc(.02, -3))), PREMADE_WIZ_BLZD, WIZARD_BLIZZARD); + add(combo(3, food(3), new SimpleStatBoost(STRENGTH, true, perc(.04, 1)), new BoostedStatBoost(ATTACK, false, perc(.05, -3))), GROG); + add(combo(3, food(1), boost(STRENGTH, perc(.02, 1)), new BoostedStatBoost(ATTACK, false, perc(.06, -1))), BEER, BEER_7740); add(combo(4, boost(ATTACK, 5), boost(STRENGTH, 5), heal(MAGIC, -5), heal(PRAYER, -5)), BLOOD_PINT); + add(combo(3, food(1), boost(STRENGTH, 2), new BoostedStatBoost(ATTACK, false, perc(.05, -2))), ASGARNIAN_ALE, ASGARNIAN_ALE1, ASGARNIAN_ALE2, ASGARNIAN_ALE3, ASGARNIAN_ALE4, ASGARNIAN_ALE_7744); + add(combo(3, food(1), boost(STRENGTH, 3), new BoostedStatBoost(ATTACK, false, perc(.05, -3))), ASGARNIAN_ALEM, ASGARNIAN_ALEM1, ASGARNIAN_ALEM2, ASGARNIAN_ALEM3, ASGARNIAN_ALEM4); + add(combo(4, food(1), boost(WOODCUTTING, 1), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2))), AXEMANS_FOLLY, AXEMANS_FOLLY1, AXEMANS_FOLLY2, AXEMANS_FOLLY3, AXEMANS_FOLLY4); + add(combo(4, food(2), boost(WOODCUTTING, 2), new BoostedStatBoost(ATTACK, false, perc(.02, -3)), new BoostedStatBoost(STRENGTH, false, perc(.02, -3))), AXEMANS_FOLLYM, AXEMANS_FOLLYM1, AXEMANS_FOLLYM2, AXEMANS_FOLLYM3, AXEMANS_FOLLYM4); + add(combo(5, food(1), boost(THIEVING, 1), boost(ATTACK, 1), new BoostedStatBoost(DEFENCE, false, perc(.06, -3)), new BoostedStatBoost(STRENGTH, false, perc(.06, -3))), BANDITS_BREW); + add(combo(4, food(1), new SimpleStatBoost(COOKING, true, perc(.05, 1)), new BoostedStatBoost(ATTACK, false, perc(.05, -2)), new BoostedStatBoost(STRENGTH, false, perc(.05, -2))), CHEFS_DELIGHT, CHEFS_DELIGHT1, CHEFS_DELIGHT2, CHEFS_DELIGHT3, CHEFS_DELIGHT4, CHEFS_DELIGHT_7754); + add(combo(4, food(2), new SimpleStatBoost(COOKING, true, perc(.05, 2)), new BoostedStatBoost(ATTACK, false, perc(.05, -3)), new BoostedStatBoost(STRENGTH, false, perc(.05, -3))), CHEFS_DELIGHTM, CHEFS_DELIGHTM1, CHEFS_DELIGHTM2, CHEFS_DELIGHTM3, CHEFS_DELIGHTM4); + add(combo(4, food(1), boost(FARMING, 1), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2))), CIDER, CIDER1, CIDER2, CIDER3, CIDER4, CIDER_7752); + add(combo(4, food(2), boost(FARMING, 2), new BoostedStatBoost(ATTACK, false, perc(.02, -3)), new BoostedStatBoost(STRENGTH, false, perc(.02, -3))), MATURE_CIDER, CIDERM1, CIDERM2, CIDERM3, CIDERM4); + add(combo(3, food(1), boost(STRENGTH, 2), new BoostedStatBoost(ATTACK, false, perc(.05, -2))), DRAGON_BITTER, DRAGON_BITTER1, DRAGON_BITTER2, DRAGON_BITTER3, DRAGON_BITTER4, DRAGON_BITTER_7748); + add(combo(3, food(2), boost(STRENGTH, 3), new BoostedStatBoost(ATTACK, false, perc(.05, -2))), DRAGON_BITTERM, DRAGON_BITTERM1, DRAGON_BITTERM2, DRAGON_BITTERM3, DRAGON_BITTERM4); + add(combo(6, food(1), boost(MINING, 1), boost(SMITHING, 1), new BoostedStatBoost(ATTACK, false, perc(.04, -2)), new BoostedStatBoost(DEFENCE, false, perc(.04, -2)), new BoostedStatBoost(STRENGTH, false, perc(.04, -2))), DWARVEN_STOUT, DWARVEN_STOUT1, DWARVEN_STOUT2, DWARVEN_STOUT3, DWARVEN_STOUT4); + add(combo(6, food(2), boost(MINING, 2), boost(SMITHING, 2), new BoostedStatBoost(ATTACK, false, perc(.04, -3)), new BoostedStatBoost(DEFENCE, false, perc(.04, -3)), new BoostedStatBoost(STRENGTH, false, perc(.04, -3))), DWARVEN_STOUTM, DWARVEN_STOUTM1, DWARVEN_STOUTM2, DWARVEN_STOUTM3, DWARVEN_STOUTM4); + add(combo(5, food(1), boost(HERBLORE, 1), new BoostedStatBoost(ATTACK, false, perc(.04, -2)), new BoostedStatBoost(DEFENCE, false, perc(.04, -2)), new BoostedStatBoost(STRENGTH, false, perc(.04, -2))), GREENMANS_ALE, GREENMANS_ALE1, GREENMANS_ALE2, GREENMANS_ALE3, GREENMANS_ALE4, GREENMANS_ALE_7746); + add(combo(5, food(2), boost(HERBLORE, 2), new BoostedStatBoost(ATTACK, false, perc(.04, -3)), new BoostedStatBoost(DEFENCE, false, perc(.04, -3)), new BoostedStatBoost(STRENGTH, false, perc(.04, -3))), GREENMANS_ALEM, GREENMANS_ALEM1, GREENMANS_ALEM2, GREENMANS_ALEM3, GREENMANS_ALEM4); + add(combo(5, food(1), boost(SLAYER, 2), new BoostedStatBoost(ATTACK, false, perc(.02, -2)), new BoostedStatBoost(DEFENCE, false, perc(.02, -2)), new BoostedStatBoost(STRENGTH, false, perc(.02, -2))), SLAYERS_RESPITE, SLAYERS_RESPITE1, SLAYERS_RESPITE2, SLAYERS_RESPITE3, SLAYERS_RESPITE4); + add(combo(5, food(2), boost(SLAYER, 4), new BoostedStatBoost(ATTACK, false, perc(.02, -3)), new BoostedStatBoost(DEFENCE, false, perc(.02, -3)), new BoostedStatBoost(STRENGTH, false, perc(.02, -3))), SLAYERS_RESPITEM, SLAYERS_RESPITEM1, SLAYERS_RESPITEM2, SLAYERS_RESPITEM3, SLAYERS_RESPITEM4); + add(combo(5, food(1), new SimpleStatBoost(MAGIC, true, perc(.02, 2)), new BoostedStatBoost(ATTACK, false, perc(.05, -1)), new BoostedStatBoost(DEFENCE, false, perc(.05, -1)), new BoostedStatBoost(STRENGTH, false, perc(.05, -1))), WIZARDS_MIND_BOMB, MIND_BOMB1, MIND_BOMB2, MIND_BOMB3, MIND_BOMB4); + add(combo(5, food(2), new SimpleStatBoost(MAGIC, true, perc(.02, 3)), new BoostedStatBoost(ATTACK, false, perc(.05, -2)), new BoostedStatBoost(DEFENCE, false, perc(.05, -2)), new BoostedStatBoost(STRENGTH, false, perc(.05, -2))), MATURE_WMB, MIND_BOMBM1, MIND_BOMBM2, MIND_BOMBM3, MIND_BOMBM4); // Sq'irk Juice add(heal(RUN_ENERGY, 5), WINTER_SQIRKJUICE); From 4eb5f18073352070b6e6f762ec2e996e4ded756a Mon Sep 17 00:00:00 2001 From: Matthew C Date: Thu, 12 May 2022 23:48:27 +0000 Subject: [PATCH 8/8] skill calculator: Fix herblore typos (#14324) --- .../plugins/skillcalculator/skills/HerbloreAction.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java index ad98d978c2..7360deba84 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/skills/HerbloreAction.java @@ -72,7 +72,7 @@ public enum HerbloreAction implements ItemSkillAction SANFEW_SERUM_3(ItemID.SANFEW_SERUM3, 65, 160), SUPER_DEFENCE_3(ItemID.SUPER_DEFENCE3, 66, 150), LANTADYME(ItemID.LANTADYME, 67, 13.1f), - ANTIDOTE_PLUS_3(ItemID.ANTIDOTE3, 68, 155), + ANTIDOTE_PLUS_4(ItemID.ANTIDOTE4, 68, 155), ANTIFIRE_POTION_3(ItemID.ANTIFIRE_POTION3, 69, 157.5f), DIVINE_SUPER_ATTACK_POTION_4(ItemID.DIVINE_SUPER_ATTACK_POTION4, 70, 2), DIVINE_SUPER_DEFENCE_POTION_4(ItemID.DIVINE_SUPER_DEFENCE_POTION4, 70, 2), @@ -87,7 +87,7 @@ public enum HerbloreAction implements ItemSkillAction STAMINA_POTION_4(ItemID.STAMINA_POTION4, 77, 102), DIVINE_MAGIC_POTION_4(ItemID.DIVINE_MAGIC_POTION4, 78, 2), ZAMORAK_BREW_3(ItemID.ZAMORAK_BREW3, 78, 175), - ANTIDOTE_PLUS_PLUS_3(ItemID.ANTIDOTE3_5954, 79, 177.5f), + ANTIDOTE_PLUS_PLUS_4(ItemID.ANTIDOTE4_5952, 79, 177.5f), BASTION_POTION_3(ItemID.BASTION_POTION3, 80, 155), BATTLEMAGE_POTION_3(ItemID.BATTLEMAGE_POTION3, 80, 155), SARADOMIN_BREW_3(ItemID.SARADOMIN_BREW3, 81, 180), @@ -103,8 +103,8 @@ public enum HerbloreAction implements ItemSkillAction SUPER_ANTIFIRE_4(ItemID.SUPER_ANTIFIRE_POTION4, 92, 130), ANTIVENOM_PLUS_4(ItemID.ANTIVENOM4_12913, 94, 125), DIVINE_SUPER_COMBAT_POTION_4(ItemID.DIVINE_SUPER_COMBAT_POTION4, 97, 2), - EXTENDED_SUPER_ANTIFIRE_3(ItemID.SUPER_ANTIFIRE_POTION3, 98, 120), - EXTENDED_SUPER_ANTIFIRE_4(ItemID.SUPER_ANTIFIRE_POTION4, 98, 160), + EXTENDED_SUPER_ANTIFIRE_3(ItemID.EXTENDED_SUPER_ANTIFIRE3, 98, 120), + EXTENDED_SUPER_ANTIFIRE_4(ItemID.EXTENDED_SUPER_ANTIFIRE4, 98, 160), ; private final int itemId;