From 41fb2adeea7164a487d06703a8fb33812eec4f8d Mon Sep 17 00:00:00 2001 From: Lexer747 Date: Sun, 26 Apr 2026 11:46:39 +0100 Subject: [PATCH] Hacky fix --- .../attacktimer/AttackTimerMetronomePlugin.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/attacktimer/AttackTimerMetronomePlugin.java b/src/main/java/com/attacktimer/AttackTimerMetronomePlugin.java index 0cb876c..6fe56d6 100644 --- a/src/main/java/com/attacktimer/AttackTimerMetronomePlugin.java +++ b/src/main/java/com/attacktimer/AttackTimerMetronomePlugin.java @@ -61,6 +61,7 @@ import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.events.ConfigChanged; +import net.runelite.client.game.ItemEquipmentStats; import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemStats; import net.runelite.client.game.NPCManager; @@ -135,6 +136,16 @@ public enum AttackState { private static final int TWINFLAME_STAFF_WEAPON_ID = 30634; private static final int ECHO_VENATOR_BOW_WEAPON_ID = 30434; private static final int VENATOR_BOW_WEAPON_ID = 27610; + private static final int BLACK_GEM_KERIS_ID = 30891; // https://oldschool.runescape.wiki/w/Keris_partisan_of_amascut + + // Add other weapons here if in the Runelite dev shell this prints a different value to it's actual speed: + // + // var itemManager = inject(ItemManager.class); + // log.info("Speed {}", itemManager.getItemStats().getEquipment().getAspeed()); + private static final Map NON_STANDARD_ATTACK_SPEEDS = + new ImmutableMap.Builder() + .put(BLACK_GEM_KERIS_ID, 4) + .build(); // These animations are the ones which exceed the duration of their attack cooldown // so in this case DO NOT fall back the animation as it is un-reliable. @@ -245,6 +256,11 @@ private int getWeaponId() private ItemStats getWeaponStats(int weaponId) { + if (NON_STANDARD_ATTACK_SPEEDS.containsKey(weaponId)) + { + return new ItemStats(true, -1, -1, + ItemEquipmentStats.builder().aspeed(NON_STANDARD_ATTACK_SPEEDS.get(weaponId)).build()); + } return itemManager.getItemStats(weaponId); }