diff --git a/runelite-api/src/main/java/net/runelite/api/NpcID.java b/runelite-api/src/main/java/net/runelite/api/NpcID.java index b53d5b0587..0dc00a80d1 100644 --- a/runelite-api/src/main/java/net/runelite/api/NpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java @@ -9616,7 +9616,6 @@ public final class NpcID public static final int MEDIUM_ELEMENTAL_GUARDIAN = 11415; public static final int STRONG_ELEMENTAL_GUARDIAN = 11416; public static final int OVERCHARGED_ELEMENTAL_GUARDIAN = 11417; - public static final int APPRENTICE_TAMARA = 11426; public static final int APPRENTICE_CORDELIA = 11427; public static final int GREATISH_GUARDIAN_11428 = 11428; public static final int ABYSSAL_PROTECTOR_11429 = 11429; @@ -9630,7 +9629,7 @@ public final class NpcID public static final int WIZARD_PERSTEN_11437 = 11437; public static final int WIZARD_PERSTEN_11438 = 11438; public static final int WIZARD_PERSTEN_11439 = 11439; - public static final int APPRENTICE_TAMARA_11440 = 11440; + public static final int APPRENTICE_TAMARA = 11440; public static final int APPRENTICE_TAMARA_11441 = 11441; public static final int APPRENTICE_TAMARA_11442 = 11442; public static final int APPRENTICE_CORDELIA_11443 = 11443; @@ -9649,6 +9648,8 @@ public final class NpcID public static final int THE_GREAT_GUARDIAN_11456 = 11456; public static final int MENAPHITE_SHADOW = 11462; public static final int REANIMATED_HELLHOUND = 11463; + public static final int APPRENTICE_TAMARA_11464 = 11464; + public static final int APPRENTICE_TAMARA_11465 = 11465; public static final int TARIK_11473 = 11473; public static final int MAISA_11474 = 11474; public static final int MAISA_11475 = 11475; diff --git a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java index 4401a38790..217962287b 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java @@ -1793,6 +1793,7 @@ public final class NullNpcID public static final int NULL_11423 = 11423; public static final int NULL_11424 = 11424; public static final int NULL_11425 = 11425; + public static final int NULL_11426 = 11426; public static final int NULL_11457 = 11457; public static final int NULL_11458 = 11458; public static final int NULL_11459 = 11459; diff --git a/runelite-api/src/main/java/net/runelite/api/Player.java b/runelite-api/src/main/java/net/runelite/api/Player.java index 227f7928b3..91091a0022 100644 --- a/runelite-api/src/main/java/net/runelite/api/Player.java +++ b/runelite-api/src/main/java/net/runelite/api/Player.java @@ -32,6 +32,13 @@ import javax.annotation.Nullable; */ public interface Player extends Actor { + /** + * Get the ID of the player + * + * @return + */ + int getId(); + @Override int getCombatLevel(); diff --git a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java index 5578578015..2e3fb850e2 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ChatIconManager.java @@ -125,14 +125,13 @@ public class ChatIconManager friendsChatRankImages = new BufferedImage[friendsChatIcons.size()]; clanRankImages = new BufferedImage[clanIcons.size()]; - final IndexedSprite[] modIcons = client.getModIcons(); - for (int i = 0; i < friendsChatIcons.size(); i++) { final int fi = i; spriteManager.getSpriteAsync(friendsChatIcons.getIntValue(friendsChatIcons.getKeys()[i]), 0, sprite -> { + final IndexedSprite[] modIcons = client.getModIcons(); friendsChatRankImages[fi] = friendsChatImageFromSprite(sprite); modIcons[friendsChatOffset + fi] = ImageUtil.getImageIndexedSprite(friendsChatRankImages[fi], client); }); @@ -147,6 +146,7 @@ public class ChatIconManager spriteManager.getSpriteAsync(clanIcons.getIntValue(key), 0, sprite -> { + final IndexedSprite[] modIcons = client.getModIcons(); final BufferedImage img = ImageUtil.resizeCanvas(sprite, IMAGE_DIMENSION.width, IMAGE_DIMENSION.height); clanRankImages[idx] = img; modIcons[clanOffset + idx] = ImageUtil.getImageIndexedSprite(img, client); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStyle.java b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStyle.java index 047363e1e4..310e4088ce 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStyle.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/AttackStyle.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.attackstyles; +import lombok.Getter; import net.runelite.api.Skill; enum AttackStyle @@ -38,7 +39,9 @@ enum AttackStyle DEFENSIVE_CASTING("Defensive Casting", Skill.MAGIC, Skill.DEFENCE), OTHER("Other"); + @Getter private final String name; + @Getter private final Skill[] skills; AttackStyle(String name, Skill... skills) @@ -46,14 +49,4 @@ enum AttackStyle this.name = name; this.skills = skills; } - - public String getName() - { - return name; - } - - public Skill[] getSkills() - { - return skills; - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java index de71de2424..6dfd494d48 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/attackstyles/WeaponType.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.attackstyles; import com.google.common.collect.ImmutableMap; import java.util.Map; +import lombok.Getter; import static net.runelite.client.plugins.attackstyles.AttackStyle.ACCURATE; import static net.runelite.client.plugins.attackstyles.AttackStyle.AGGRESSIVE; import static net.runelite.client.plugins.attackstyles.AttackStyle.CASTING; @@ -65,8 +66,11 @@ enum WeaponType TYPE_24(ACCURATE, AGGRESSIVE, CONTROLLED, DEFENSIVE), TYPE_25(CONTROLLED, AGGRESSIVE, null, DEFENSIVE), TYPE_26(AGGRESSIVE, AGGRESSIVE, null, AGGRESSIVE), - TYPE_27(ACCURATE, null, null, OTHER); + TYPE_27(ACCURATE, null, null, OTHER), + TYPE_28(ACCURATE, ACCURATE, LONGRANGE), + TYPE_29(ACCURATE, AGGRESSIVE, AGGRESSIVE, DEFENSIVE); + @Getter private final AttackStyle[] attackStyles; private static final Map weaponTypes; @@ -88,11 +92,6 @@ enum WeaponType this.attackStyles = attackStyles; } - public AttackStyle[] getAttackStyles() - { - return attackStyles; - } - public static WeaponType getWeaponType(int id) { return weaponTypes.get(id); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index e0017e1d3d..32a552aebe 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -313,9 +313,12 @@ public class ChatCommandsPlugin extends Plugin final Pet[] pets = Pet.values(); final IndexedSprite[] modIcons = client.getModIcons(); assert modIcons != null; + final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + pets.length); modIconIdx = modIcons.length; + client.setModIcons(newModIcons); + for (int i = 0; i < pets.length; i++) { final Pet pet = pets[i]; @@ -326,13 +329,13 @@ public class ChatCommandsPlugin extends Plugin { final BufferedImage image = ImageUtil.resizeImage(abi, 18, 16); final IndexedSprite sprite = ImageUtil.getImageIndexedSprite(image, client); - newModIcons[idx] = sprite; + // modicons array might be replaced in between when we assign it and the callback, + // so fetch modicons again + client.getModIcons()[idx] = sprite; }; abi.onLoaded(r); r.run(); } - - client.setModIcons(newModIcons); } /** 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 65c7bbf64e..bd97701644 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 @@ -39,6 +39,8 @@ import net.runelite.client.plugins.itemstats.potions.SaradominBrew; import net.runelite.client.plugins.itemstats.potions.StaminaPotion; import net.runelite.client.plugins.itemstats.potions.SuperRestore; import net.runelite.client.plugins.itemstats.special.CastleWarsBandage; +import net.runelite.client.plugins.itemstats.special.CaveNightshade; +import net.runelite.client.plugins.itemstats.special.NettleTeaRunEnergy; import net.runelite.client.plugins.itemstats.special.SpicyStew; import static net.runelite.client.plugins.itemstats.stats.Stats.*; @@ -54,35 +56,42 @@ public class ItemStatChanges private void init() { add(food(-5), POISON_KARAMBWAN); - add(food(1), POTATO, ONION, CABBAGE, POT_OF_CREAM, CHOPPED_ONION, ANCHOVIES); + add(food(1), POTATO, ONION, CABBAGE, POT_OF_CREAM, CHOPPED_ONION, ANCHOVIES, NETTLEWATER, EQUA_LEAVES, + FRESH_MONKFISH_7943 /* Cooked */, COOKED_CHICKEN_4291 /* Undead */, COOKED_MEAT_4293 /* Undead */); add(food(2), TOMATO, CHOPPED_TOMATO, BANANA, SLICED_BANANA, ORANGE, ORANGE_SLICES, ORANGE_CHUNKS, PINEAPPLE_RING, PINEAPPLE_CHUNKS, SPICY_SAUCE, CHEESE, SPINACH_ROLL, LEMON, LEMON_CHUNKS, LEMON_SLICES, - LIME, LIME_CHUNKS, LIME_SLICES, DWELLBERRIES); - add(food(3), SHRIMPS, COOKED_MEAT, COOKED_CHICKEN, ROE, CHOCOLATE_BAR); - add(food(4), SARDINE, CAKE, _23_CAKE, SLICE_OF_CAKE, CHOCOLATEY_MILK, BAKED_POTATO, EDIBLE_SEAWEED, MOONLIGHT_MEAD); + LIME, LIME_CHUNKS, LIME_SLICES, DWELLBERRIES, KING_WORM, MINCED_MEAT, SPICY_TOMATO, WHITE_PEARL); + add(food(3), SHRIMPS, COOKED_MEAT, COOKED_CHICKEN, ROE, CHOCOLATE_BAR, UGTHANKI_MEAT, TOADS_LEGS, ONION__TOMATO, + SPICY_MINCED_MEAT, SLICE_OF_BIRTHDAY_CAKE, LOCUST_MEAT); + add(food(4), SARDINE, CAKE, _23_CAKE, SLICE_OF_CAKE, CHOCOLATEY_MILK, BAKED_POTATO, EDIBLE_SEAWEED, MOONLIGHT_MEAD, + MOONLIGHT_MEAD4, MOONLIGHT_MEAD3, MOONLIGHT_MEAD2, MOONLIGHT_MEAD1, MONKEY_NUTS); add(food(5), BREAD, HERRING, CHOCOLATE_CAKE, _23_CHOCOLATE_CAKE, CHOCOLATE_SLICE, COOKED_RABBIT, CHILLI_CON_CARNE, - FRIED_MUSHROOMS, FRIED_ONIONS, REDBERRY_PIE, HALF_A_REDBERRY_PIE, CAVIAR, PYSK_FISH_0, COOKED_MYSTERY_MEAT); - add(food(6), CHOCICE, MACKEREL, MEAT_PIE, HALF_A_MEAT_PIE, GUANIC_BAT_0, ROAST_BIRD_MEAT, - SQUARE_SANDWICH, ROLL, BAGUETTE, TRIANGLE_SANDWICH, GIANT_CARP); + FRIED_MUSHROOMS, FRIED_ONIONS, REDBERRY_PIE, HALF_A_REDBERRY_PIE, CAVIAR, PYSK_FISH_0, COOKED_MYSTERY_MEAT, + SCRAMBLED_EGG, MONKEY_BAR, TCHIKI_MONKEY_NUTS, TCHIKI_NUT_PASTE, RED_BANANA, SLICED_RED_BANANA); + add(food(6), CHOCICE, MACKEREL, MEAT_PIE, HALF_A_MEAT_PIE, GUANIC_BAT_0, ROAST_BIRD_MEAT, SQUARE_SANDWICH, + ROLL, BAGUETTE, TRIANGLE_SANDWICH, GIANT_CARP, MOONLIGHT_MEADM, MOONLIGHT_MEADM4, MOONLIGHT_MEADM3, MOONLIGHT_MEADM2, + MOONLIGHT_MEADM1, STEAK_SANDWICH, GIANT_FROG_LEGS); add(food(7), TROUT, COD, PLAIN_PIZZA, _12_PLAIN_PIZZA, APPLE_PIE, HALF_AN_APPLE_PIE, ROAST_RABBIT, PREMADE_CH_CRUNCH, CHOCCHIP_CRUNCHIES, PREMADE_SY_CRUNCH, SPICY_CRUNCHIES); add(food(8), PIKE, ROAST_BEAST_MEAT, MEAT_PIZZA, _12_MEAT_PIZZA, PREMADE_WM_CRUN, WORM_CRUNCHIES, PREMADE_TD_CRUNCH, TOAD_CRUNCHIES, EGG_AND_TOMATO, PRAEL_BAT_1, PEACH, SUPHI_FISH_1); add(food(9), PREMADE_P_PUNCH, PINEAPPLE_PUNCH, PREMADE_FR_BLAST, FRUIT_BLAST, SALMON, ANCHOVY_PIZZA, _12_ANCHOVY_PIZZA); - add(food(10), TUNA, COOKED_CRAB_MEAT, CHOPPED_TUNA, COOKED_CHOMPY, FIELD_RATION); + add(food(10), TUNA, COOKED_CRAB_MEAT, CHOPPED_TUNA, COOKED_CHOMPY, FIELD_RATION, DRAGONFRUIT, + TUNA_26149 /* Deadman Starter Pack */); add(food(11), RAINBOW_FISH, STEW, PINEAPPLE_PIZZA, _12_PINEAPPLE_PIZZA, COOKED_FISHCAKE, PREMADE_VEG_BATTA, VEGETABLE_BATTA, PREMADE_WM_BATTA, WORM_BATTA, PREMADE_TD_BATTA, TOAD_BATTA, PREMADE_CT_BATTA, - CHEESETOM_BATTA, PREMADE_FRT_BATTA, FRUIT_BATTA, MUSHROOM__ONION, GIRAL_BAT_2, LAVA_EEL, LECKISH_FISH_2); + CHEESETOM_BATTA, PREMADE_FRT_BATTA, FRUIT_BATTA, MUSHROOM__ONION, GIRAL_BAT_2, LAVA_EEL, LECKISH_FISH_2, BANANA_STEW); add(food(12), LOBSTER, PREMADE_WORM_HOLE, WORM_HOLE, PREMADE_VEG_BALL, VEG_BALL); add(food(13), BASS, TUNA_AND_CORN); - add(food(14), POTATO_WITH_BUTTER, CHILLI_POTATO, SWORDFISH, PHLUXIA_BAT_3, PUMPKIN, EASTER_EGG, BRAWK_FISH_3); + add(food(14), POTATO_WITH_BUTTER, CHILLI_POTATO, SWORDFISH, PHLUXIA_BAT_3, PUMPKIN, EASTER_EGG, BRAWK_FISH_3, + COOKED_OOMLIE_WRAP); add(food(15), PREMADE_TTL, TANGLED_TOADS_LEGS, PREMADE_CHOC_BOMB, CHOCOLATE_BOMB, COOKED_JUBBLY); add(food(16), MONKFISH, POTATO_WITH_CHEESE, EGG_POTATO); add(food(17), MYCIL_FISH_4, KRYKET_BAT_4); - add(food(18), COOKED_KARAMBWAN, BLIGHTED_KARAMBWAN); + add(food(18), COOKED_KARAMBWAN, BLIGHTED_KARAMBWAN, COOKED_KARAMBWAN_23533 /* LMS */); add(food(19), CURRY, UGTHANKI_KEBAB, UGTHANKI_KEBAB_1885); - add(food(20), MUSHROOM_POTATO, SHARK, ROQED_FISH_5, MURNG_BAT_5, STUFFED_SNAKE); + add(food(20), MUSHROOM_POTATO, SHARK, ROQED_FISH_5, MURNG_BAT_5, STUFFED_SNAKE, SHARK_20390 /* LMS */); add(food(21), SEA_TURTLE); add(food(22), MANTA_RAY, BLIGHTED_MANTA_RAY, DARK_CRAB, TUNA_POTATO); add(food(23), KYREN_FISH_6, PSYKK_BAT_6); @@ -92,8 +101,10 @@ 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(combo(2, food(3), boost(ATTACK, perc(.02, 2))), CUP_OF_TEA_1978 /* Standard tea */); + add(combo(2, food(3), new NettleTeaRunEnergy()), NETTLE_TEA, NETTLE_TEA_4240 /* Milky */, CUP_OF_TEA_4242 /* Nettle */, CUP_OF_TEA_4243 /* Milky nettle */); add(range(food(5), food(7)), THIN_SNAIL_MEAT); + add(range(food(5), food(8)), LEAN_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); @@ -110,12 +121,16 @@ public class ItemStatChanges // 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(food(7), dec(ATTACK, 2)), HALF_FULL_WINE_JUG); + add(combo(dec(ATTACK, 3)), JUG_OF_BAD_WINE); 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(3, food(4), boost(STRENGTH, perc(.04, 2)), new BoostedStatBoost(ATTACK, false, perc(.1, -2))), BEER_TANKARD); + add(combo(3, food(15), boost(STRENGTH, perc(.1, 2)), new BoostedStatBoost(ATTACK, false, perc(.5, -4))), KEG_OF_BEER_3801 /* Non-quest version */); 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); @@ -136,6 +151,10 @@ public class ItemStatChanges 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); + add(combo(10, food(14), boost(STRENGTH, 3), boost(MINING, 1), heal(PRAYER, perc(.06, -1)), new BoostedStatBoost(AGILITY, false, perc(.09, -3)), new BoostedStatBoost(ATTACK, false, perc(.06, -1)), new BoostedStatBoost(DEFENCE, false, perc(.08, -2)), new BoostedStatBoost(HERBLORE, false, perc(.06, -1)), new BoostedStatBoost(MAGIC, false, perc(.05, -1)), new BoostedStatBoost(RANGED, false, perc(.06, -1))), BRAINDEATH_RUM); + add(combo(2, food(2), heal(PRAYER, perc(.04, -2))), BLOODY_BRACER); + add(combo(3, food(1), boost(AGILITY, 1), heal(STRENGTH, -1)), ELVEN_DAWN); + add(combo(3, boost(RANGED, 4), new BoostedStatBoost(STRENGTH, false, perc(.04, -2)), new BoostedStatBoost(MAGIC, false, perc(.04, -2))), LIZARDKICKER); // Sq'irk Juice add(heal(RUN_ENERGY, 5), WINTER_SQIRKJUICE); @@ -148,15 +167,19 @@ public class ItemStatChanges add(boost(STRENGTH, perc(.10, 3)), STRENGTH_POTION1, STRENGTH_POTION2, STRENGTH_POTION3, STRENGTH_POTION4); add(boost(DEFENCE, perc(.10, 3)), DEFENCE_POTION1, DEFENCE_POTION2, DEFENCE_POTION3, DEFENCE_POTION4); add(boost(MAGIC, 4), MAGIC_POTION1, MAGIC_POTION2, MAGIC_POTION3, MAGIC_POTION4); - add(boost(RANGED, perc(.10, 4)), RANGING_POTION1, RANGING_POTION2, RANGING_POTION3, RANGING_POTION4); - add(combo(2, boost(ATTACK, perc(.10, 3)), boost(STRENGTH, perc(.10, 3))), COMBAT_POTION1, COMBAT_POTION2, COMBAT_POTION3, COMBAT_POTION4); + add(boost(RANGED, perc(.10, 4)), RANGING_POTION1, RANGING_POTION2, RANGING_POTION3, RANGING_POTION4, + RANGING_POTION4_23551, RANGING_POTION3_23553, RANGING_POTION2_23555, RANGING_POTION1_23557 /* LMS */); + add(combo(2, boost(ATTACK, perc(.10, 3)), boost(STRENGTH, perc(.10, 3))), + COMBAT_POTION1, COMBAT_POTION2, COMBAT_POTION3, COMBAT_POTION4, + COMBAT_POTION4_26150, COMBAT_POTION3_26151, COMBAT_POTION2_26152, COMBAT_POTION1_26153 /* Deadman starter pack */); add(boost(ATTACK, perc(.15, 5)), SUPER_ATTACK1, SUPER_ATTACK2, SUPER_ATTACK3, SUPER_ATTACK4); add(boost(STRENGTH, perc(.15, 5)), SUPER_STRENGTH1, SUPER_STRENGTH2, SUPER_STRENGTH3, SUPER_STRENGTH4); add(boost(DEFENCE, perc(.15, 5)), SUPER_DEFENCE1, SUPER_DEFENCE2, SUPER_DEFENCE3, SUPER_DEFENCE4); add(boost(MAGIC, 3), MAGIC_ESSENCE1, MAGIC_ESSENCE2, MAGIC_ESSENCE3, MAGIC_ESSENCE4); add(combo(3, boost(ATTACK, perc(.15, 5)), boost(STRENGTH, perc(.15, 5)), boost(DEFENCE, perc(.15, 5))), SUPER_COMBAT_POTION1, SUPER_COMBAT_POTION2, SUPER_COMBAT_POTION3, SUPER_COMBAT_POTION4); add(combo(3, boost(ATTACK, perc(.20, 2)), boost(STRENGTH, perc(.12, 2)), heal(PRAYER, perc(.10, 0)), new BoostedStatBoost(DEFENCE, false, perc(.10, -2)), new BoostedStatBoost(HITPOINTS, false, perc(-.12, 0))), ZAMORAK_BREW1, ZAMORAK_BREW2, ZAMORAK_BREW3, ZAMORAK_BREW4); - add(new SaradominBrew(0.15, 0.2, 0.1, 2, 2), SARADOMIN_BREW1, SARADOMIN_BREW2, SARADOMIN_BREW3, SARADOMIN_BREW4); + add(new SaradominBrew(0.15, 0.2, 0.1, 2, 2), SARADOMIN_BREW1, SARADOMIN_BREW2, SARADOMIN_BREW3, + SARADOMIN_BREW4, SARADOMIN_BREW4_23575, SARADOMIN_BREW3_23577, SARADOMIN_BREW2_23579, SARADOMIN_BREW1_23581 /* LMS */); add(boost(RANGED, perc(.15, 5)), SUPER_RANGING_1, SUPER_RANGING_2, SUPER_RANGING_3, SUPER_RANGING_4); add(boost(MAGIC, perc(.15, 5)), SUPER_MAGIC_POTION_1, SUPER_MAGIC_POTION_2, SUPER_MAGIC_POTION_3, SUPER_MAGIC_POTION_4); add(combo(2, boost(RANGED, perc(0.1, 4)), boost(DEFENCE, perc(0.15, 5))), BASTION_POTION1, BASTION_POTION2, BASTION_POTION3, BASTION_POTION4); @@ -169,6 +192,10 @@ public class ItemStatChanges add(combo(3, boost(ATTACK, perc(.15, 5)), boost(STRENGTH, perc(.15, 5)), boost(DEFENCE, perc(.15, 5)), heal(HITPOINTS, -10)), DIVINE_SUPER_COMBAT_POTION1, DIVINE_SUPER_COMBAT_POTION2, DIVINE_SUPER_COMBAT_POTION3, DIVINE_SUPER_COMBAT_POTION4); add(combo(2, boost(RANGED, perc(0.1, 4)), boost(DEFENCE, perc(0.15, 5)), heal(HITPOINTS, -10)), DIVINE_BASTION_POTION1, DIVINE_BASTION_POTION2, DIVINE_BASTION_POTION3, DIVINE_BASTION_POTION4); add(combo(2, boost(MAGIC, 4), boost(DEFENCE, perc(0.15, 5)), heal(HITPOINTS, -10)), DIVINE_BATTLEMAGE_POTION1, DIVINE_BATTLEMAGE_POTION2, DIVINE_BATTLEMAGE_POTION3, DIVINE_BATTLEMAGE_POTION4); + add(combo(5, boost(ATTACK, perc(0.15, 5)), boost(STRENGTH, perc(0.15, 5)), boost(DEFENCE, perc(0.15, 5)), boost(RANGED, perc(0.1, 4)), boost(MAGIC, perc(0.1, 1))), + CASTLEWARS_BREW4, CASTLEWARS_BREW3, CASTLEWARS_BREW2, CASTLEWARS_BREW1); + add(combo(2, boost(ATTACK, perc(0.15, 5)), boost(STRENGTH, perc(0.15, 5))), + SUPER_COMBAT_POTION4_23543, SUPER_COMBAT_POTION3_23545, SUPER_COMBAT_POTION2_23547, SUPER_COMBAT_POTION1_23549 /* LMS */); // Regular overload (NMZ) add(combo(5, boost(ATTACK, perc(.15, 5)), boost(STRENGTH, perc(.15, 5)), boost(DEFENCE, perc(.15, 5)), boost(RANGED, perc(.15, 5)), boost(MAGIC, perc(.15, 5)), heal(HITPOINTS, -50)), OVERLOAD_1, OVERLOAD_2, OVERLOAD_3, OVERLOAD_4); @@ -176,14 +203,19 @@ public class ItemStatChanges // Bandages (Castle Wars) add(new CastleWarsBandage(), BANDAGES); + // Bandages (Theatre of Blood entry mode) + add(combo(8, food(20), heal(PRAYER, perc(0.25, 5)), heal(RUN_ENERGY, 20), boost(ATTACK, perc(0.15, 4)), boost(STRENGTH, perc(0.15, 4)), boost(DEFENCE, perc(0.15, 4)), boost(RANGED, perc(0.1, 4)), boost(MAGIC, 4)), BANDAGES_25730); + // Recovery potions add(combo(5, heal(ATTACK, perc(.30, 10)), heal(STRENGTH, perc(.30, 10)), heal(DEFENCE, perc(.30, 10)), heal(RANGED, perc(.30, 10)), heal(MAGIC, perc(.30, 10))), RESTORE_POTION1, RESTORE_POTION2, RESTORE_POTION3, RESTORE_POTION4); add(heal(RUN_ENERGY, 10), ENERGY_POTION1, ENERGY_POTION2, ENERGY_POTION3, ENERGY_POTION4); add(new PrayerPotion(7), PRAYER_POTION1, PRAYER_POTION2, PRAYER_POTION3, PRAYER_POTION4); add(heal(RUN_ENERGY, 20), SUPER_ENERGY1, SUPER_ENERGY2, SUPER_ENERGY3, SUPER_ENERGY4); add(new SuperRestore(.25, 8), SUPER_RESTORE1, SUPER_RESTORE2, SUPER_RESTORE3, SUPER_RESTORE4, - BLIGHTED_SUPER_RESTORE1, BLIGHTED_SUPER_RESTORE2, BLIGHTED_SUPER_RESTORE3, BLIGHTED_SUPER_RESTORE4); - add(new SuperRestore(.30, 4), SANFEW_SERUM1, SANFEW_SERUM2, SANFEW_SERUM3, SANFEW_SERUM4); + BLIGHTED_SUPER_RESTORE1, BLIGHTED_SUPER_RESTORE2, BLIGHTED_SUPER_RESTORE3, BLIGHTED_SUPER_RESTORE4, + SUPER_RESTORE4_23567, SUPER_RESTORE3_23569, SUPER_RESTORE2_23571, SUPER_RESTORE1_23573 /* LMS */); + add(new SuperRestore(.30, 4), SANFEW_SERUM1, SANFEW_SERUM2, SANFEW_SERUM3, SANFEW_SERUM4, + SANFEW_SERUM4_23559, SANFEW_SERUM3_23561, SANFEW_SERUM2_23563, SANFEW_SERUM1_23565 /* LMS */); add(new StaminaPotion(), STAMINA_POTION1, STAMINA_POTION2, STAMINA_POTION3, STAMINA_POTION4); // Raids potions (+) @@ -233,6 +265,7 @@ public class ItemStatChanges add(new SpicyStew(), SPICY_STEW); add(boost(MAGIC, perc(.10, 1)), IMBUED_HEART); add(combo(boost(ATTACK, 2), boost(STRENGTH, 1), heal(PRAYER, 1), heal(DEFENCE, -1)), JANGERBERRIES); + add(new CaveNightshade(), CAVE_NIGHTSHADE); // Gauntlet items add(heal(HITPOINTS, 16), CRYSTAL_PADDLEFISH, CORRUPTED_PADDLEFISH); @@ -254,7 +287,7 @@ public class ItemStatChanges for (int item : items) { Effect prev = effects.put(item, effect); - assert prev == null : "Item already added"; + assert prev == null : "Item already added: " + item; } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/CaveNightshade.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/CaveNightshade.java new file mode 100644 index 0000000000..ba2b7523c1 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/CaveNightshade.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2016-2022, emerald000 + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.itemstats.special; + +import net.runelite.api.Client; +import net.runelite.client.plugins.itemstats.StatBoost; +import static net.runelite.client.plugins.itemstats.stats.Stats.HITPOINTS; + +public class CaveNightshade extends StatBoost +{ + public CaveNightshade() + { + super(HITPOINTS, false); + } + + @Override + public int heals(Client client) + { + int currentHP = this.getStat().getValue(client); + + if (currentHP < 20) + { + return -currentHP / 2; + } + else + { + return -15; + } + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/NettleTeaRunEnergy.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/NettleTeaRunEnergy.java new file mode 100644 index 0000000000..9f55b1c717 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/special/NettleTeaRunEnergy.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022, emerald000 + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.itemstats.special; + +import net.runelite.api.Client; +import static net.runelite.api.Skill.HITPOINTS; +import net.runelite.client.plugins.itemstats.StatBoost; +import static net.runelite.client.plugins.itemstats.stats.Stats.RUN_ENERGY; + +public class NettleTeaRunEnergy extends StatBoost +{ + public NettleTeaRunEnergy() + { + super(RUN_ENERGY, false); + } + + @Override + public int heals(Client client) + { + // Only restores run energy if your hitpoints aren't full + if (client.getBoostedSkillLevel(HITPOINTS) < client.getRealSkillLevel(HITPOINTS)) + { + return 5; + } + return 0; + } +} diff --git a/runelite-client/src/main/scripts/ChatBuilder.hash b/runelite-client/src/main/scripts/ChatBuilder.hash index d17ea1223a..107bff6c3c 100644 --- a/runelite-client/src/main/scripts/ChatBuilder.hash +++ b/runelite-client/src/main/scripts/ChatBuilder.hash @@ -1 +1 @@ -2AA6E95505D50D42398FC71705CEE6CD9A21BB9E4B0E74E123AE003BFCABCA21 \ No newline at end of file +A4AD060EE819D68B32D4163BA70EA7761287936A4B69A727CE6EDDFA9B3E1474 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ChatBuilder.rs2asm b/runelite-client/src/main/scripts/ChatBuilder.rs2asm index ed476f8935..4d6d6a4ea5 100644 --- a/runelite-client/src/main/scripts/ChatBuilder.rs2asm +++ b/runelite-client/src/main/scripts/ChatBuilder.rs2asm @@ -385,15 +385,15 @@ LABEL365: iload 10 iconst -1 if_icmpne LABEL369 - jump LABEL1755 + jump LABEL1763 LABEL369: iload 9 iconst -1 if_icmpne LABEL373 - jump LABEL1755 + jump LABEL1763 LABEL373: iload 10 - 5031 + chat_gethistoryex_byuid istore 21 sstore 21 ; timestamp istore 15 @@ -409,7 +409,7 @@ LABEL373: invoke 193 iconst 1 if_icmpeq CHAT_FILTER - jump LABEL1751 + jump LABEL1759 CHAT_FILTER: sload 18 ; Load the message iconst 1 ; Gets changed to 0 if message is blocked @@ -422,7 +422,7 @@ CHAT_FILTER: iconst 1 ; 2nd half of conditional sstore 18 ; Override the message with our filtered message if_icmpeq LABEL391 ; Check if we are building this message - jump LABEL1751 ; continue to next message, skipping this + jump LABEL1759 ; continue to next message, skipping this LABEL391: iload 11 sload 16 @@ -438,16 +438,16 @@ LABEL391: invoke 90 iconst 1 if_icmpeq LABEL406 - jump LABEL1751 + jump LABEL1759 LABEL406: - iconst 0 ; splitpmbox + iconst 0 ; splitpmbox iload 10 ; message uid sload 17 ; message channel sload 16 ; message name sload 18 ; message sload 21 ; message timestamp sconst "chatMessageBuilding" - runelite_callback + runelite_callback pop_int ; pop uid pop_int ; splitpmbox sstore 21 ; message timestamp @@ -471,14 +471,14 @@ LABEL406: 109: LABEL585 9: LABEL606 111: LABEL635 - 112: LABEL656 - 41: LABEL677 - 44: LABEL896 - 43: LABEL1061 - 46: LABEL1200 - 14: LABEL1255 - 107: LABEL1285 - jump LABEL1324 + 112: LABEL660 + 41: LABEL685 + 44: LABEL904 + 43: LABEL1069 + 46: LABEL1208 + 14: LABEL1263 + 107: LABEL1293 + jump LABEL1332 LABEL409: sload 21 sload 16 @@ -503,7 +503,7 @@ LABEL409: iload 4 invoke 203 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL433: sload 21 sload 16 @@ -528,7 +528,7 @@ LABEL433: iload 4 invoke 203 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL457: sload 21 sconst "From " @@ -556,7 +556,7 @@ LABEL457: iload 4 invoke 203 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL482: sload 21 sload 9 @@ -578,7 +578,7 @@ LABEL482: iload 4 invoke 199 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL503: sload 21 sload 5 @@ -617,7 +617,7 @@ LABEL527: iconst 10616832 if_setontimer LABEL538: - jump LABEL1341 + jump LABEL1349 LABEL539: sload 21 sconst "To " @@ -645,7 +645,7 @@ LABEL539: iload 4 invoke 203 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL564: sload 21 sload 10 @@ -667,7 +667,7 @@ LABEL564: iload 4 invoke 199 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL585: sload 21 sconst "" @@ -689,7 +689,7 @@ LABEL585: iload 4 invoke 199 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL606: sload 21 sconst "[" @@ -719,8 +719,12 @@ LABEL606: iload 4 invoke 203 istore 7 - jump LABEL1341 + jump LABEL1349 LABEL635: + sload 18 + invoke 632 + sstore 18 + sstore 22 sload 21 sconst "" sload 18 @@ -741,8 +745,12 @@ LABEL635: iload 4 invoke 199 istore 7 - jump LABEL1341 -LABEL656: + jump LABEL1349 +LABEL660: + sload 18 + invoke 632 + sstore 18 + sstore 22 sload 21 sconst "" sload 18 @@ -763,26 +771,26 @@ LABEL656: iload 4 invoke 199 istore 7 - jump LABEL1341 -LABEL677: + jump LABEL1349 +LABEL685: iconst 1 activeclansettings_find_affined iconst 1 - if_icmpeq LABEL682 - jump LABEL729 -LABEL682: + if_icmpeq LABEL690 + jump LABEL737 +LABEL690: iconst 1 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL687 - jump LABEL729 -LABEL687: + if_icmpeq LABEL695 + jump LABEL737 +LABEL695: sload 18 invoke 5501 iconst 1 - if_icmpeq LABEL692 - jump LABEL729 -LABEL692: + if_icmpeq LABEL700 + jump LABEL737 +LABEL700: sload 18 invoke 632 sstore 18 @@ -819,29 +827,29 @@ LABEL692: iload 4 invoke 4483 istore 7 - jump LABEL895 -LABEL729: + jump LABEL903 +LABEL737: iconst 0 activeclansettings_find_affined iconst 1 - if_icmpeq LABEL734 - jump LABEL863 -LABEL734: + if_icmpeq LABEL742 + jump LABEL871 +LABEL742: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL739 - jump LABEL863 -LABEL739: + if_icmpeq LABEL747 + jump LABEL871 +LABEL747: sload 16 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpne LABEL747 - jump LABEL826 -LABEL747: + if_icmpne LABEL755 + jump LABEL834 +LABEL755: iload 17 activeclanchannel_getuserrank invoke 4302 @@ -849,9 +857,9 @@ LABEL747: sstore 20 iload 16 iconst -1 - if_icmpne LABEL756 - jump LABEL789 -LABEL756: + if_icmpne LABEL764 + jump LABEL797 +LABEL764: sload 21 sconst "[" sload 2 @@ -884,8 +892,8 @@ LABEL756: iload 4 invoke 4483 istore 7 - jump LABEL825 -LABEL789: + jump LABEL833 +LABEL797: sload 21 sconst "[" sload 2 @@ -922,9 +930,9 @@ LABEL789: iload 4 invoke 4483 istore 7 -LABEL825: - jump LABEL862 -LABEL826: +LABEL833: + jump LABEL870 +LABEL834: iconst -1 invoke 4302 istore 16 @@ -961,9 +969,9 @@ LABEL826: iload 4 invoke 4483 istore 7 -LABEL862: - jump LABEL895 -LABEL863: +LABEL870: + jump LABEL903 +LABEL871: sload 21 sconst "[" sload 2 @@ -996,28 +1004,28 @@ LABEL863: iload 4 invoke 4483 istore 7 -LABEL895: - jump LABEL1341 -LABEL896: +LABEL903: + jump LABEL1349 +LABEL904: activeclansettings_find_listened iconst 1 - if_icmpeq LABEL900 - jump LABEL1028 -LABEL900: + if_icmpeq LABEL908 + jump LABEL1036 +LABEL908: activeclanchannel_find_listened iconst 1 - if_icmpeq LABEL904 - jump LABEL1028 -LABEL904: + if_icmpeq LABEL912 + jump LABEL1036 +LABEL912: sload 16 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpne LABEL912 - jump LABEL991 -LABEL912: + if_icmpne LABEL920 + jump LABEL999 +LABEL920: iload 17 activeclanchannel_getuserrank invoke 4302 @@ -1025,9 +1033,9 @@ LABEL912: sstore 20 iload 16 iconst -1 - if_icmpne LABEL921 - jump LABEL954 -LABEL921: + if_icmpne LABEL929 + jump LABEL962 +LABEL929: sload 21 sconst "[" sload 2 @@ -1060,8 +1068,8 @@ LABEL921: iload 4 invoke 4483 istore 7 - jump LABEL990 -LABEL954: + jump LABEL998 +LABEL962: sload 21 sconst "[" sload 2 @@ -1098,9 +1106,9 @@ LABEL954: iload 4 invoke 4483 istore 7 -LABEL990: - jump LABEL1027 -LABEL991: +LABEL998: + jump LABEL1035 +LABEL999: iconst -1 invoke 4302 istore 16 @@ -1137,9 +1145,9 @@ LABEL991: iload 4 invoke 4483 istore 7 -LABEL1027: - jump LABEL1060 -LABEL1028: +LABEL1035: + jump LABEL1068 +LABEL1036: sload 21 sconst "[" sload 2 @@ -1172,15 +1180,15 @@ LABEL1028: iload 4 invoke 4483 istore 7 -LABEL1060: - jump LABEL1341 -LABEL1061: +LABEL1068: + jump LABEL1349 +LABEL1069: sload 18 invoke 5309 iconst 1 - if_icmpeq LABEL1066 - jump LABEL1131 -LABEL1066: + if_icmpeq LABEL1074 + jump LABEL1139 +LABEL1074: sload 18 invoke 632 sstore 18 @@ -1195,9 +1203,9 @@ LABEL1066: iconst 1 activeclansettings_find_affined iconst 1 - if_icmpeq LABEL1082 - jump LABEL1109 -LABEL1082: + if_icmpeq LABEL1090 + jump LABEL1117 +LABEL1090: sload 21 sconst "[" sload 2 @@ -1224,8 +1232,8 @@ LABEL1082: iload 4 invoke 203 istore 7 - jump LABEL1130 -LABEL1109: + jump LABEL1138 +LABEL1117: sload 21 sconst "" sconst "null" @@ -1247,9 +1255,9 @@ LABEL1109: iload 4 invoke 203 istore 7 -LABEL1130: - jump LABEL1199 -LABEL1131: +LABEL1138: + jump LABEL1207 +LABEL1139: sload 18 sconst "" sconst "" @@ -1260,9 +1268,9 @@ LABEL1131: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL1143 - jump LABEL1174 -LABEL1143: + if_icmpeq LABEL1151 + jump LABEL1182 +LABEL1151: sload 21 sconst "[" sload 2 @@ -1293,8 +1301,8 @@ LABEL1143: iload 4 invoke 4483 istore 7 - jump LABEL1199 -LABEL1174: + jump LABEL1207 +LABEL1182: sload 21 sconst "" sconst "null" @@ -1320,14 +1328,14 @@ LABEL1174: iload 4 invoke 4483 istore 7 -LABEL1199: - jump LABEL1341 -LABEL1200: +LABEL1207: + jump LABEL1349 +LABEL1208: activeclanchannel_find_listened iconst 1 - if_icmpeq LABEL1204 - jump LABEL1232 -LABEL1204: + if_icmpeq LABEL1212 + jump LABEL1240 +LABEL1212: sload 21 sconst "[" sload 2 @@ -1355,8 +1363,8 @@ LABEL1204: iload 4 invoke 4483 istore 7 - jump LABEL1254 -LABEL1232: + jump LABEL1262 +LABEL1240: sload 21 sconst "" sconst "null" @@ -1379,9 +1387,9 @@ LABEL1232: iload 4 invoke 4483 istore 7 -LABEL1254: - jump LABEL1341 -LABEL1255: +LABEL1262: + jump LABEL1349 +LABEL1263: sload 18 invoke 2066 istore 13 @@ -1411,15 +1419,15 @@ LABEL1255: iload 4 invoke 203 istore 7 - jump LABEL1341 -LABEL1285: + jump LABEL1349 +LABEL1293: clientclock iload 12 sub iconst 500 - if_icmpgt LABEL1291 - jump LABEL1306 -LABEL1291: + if_icmpgt LABEL1299 + jump LABEL1314 +LABEL1299: sconst "jk :P" iload 8 iload 9 @@ -1434,8 +1442,8 @@ LABEL1291: iload 4 invoke 199 istore 7 - jump LABEL1323 -LABEL1306: + jump LABEL1331 +LABEL1314: sload 21 sload 18 sconst "null" @@ -1453,9 +1461,9 @@ LABEL1306: iload 4 invoke 199 istore 7 -LABEL1323: - jump LABEL1341 -LABEL1324: +LABEL1331: + jump LABEL1349 +LABEL1332: sload 21 sload 18 sconst "null" @@ -1473,32 +1481,32 @@ LABEL1324: iload 4 invoke 199 istore 7 -LABEL1341: +LABEL1349: iload 9 if_clearops iload 11 switch - 1: LABEL1346 - 2: LABEL1346 - 3: LABEL1346 - 6: LABEL1346 - 7: LABEL1346 - 9: LABEL1346 - 90: LABEL1346 - 91: LABEL1346 - 106: LABEL1346 - 41: LABEL1346 - 44: LABEL1346 - 101: LABEL1450 - 103: LABEL1493 - 104: LABEL1493 - 110: LABEL1493 - 14: LABEL1536 - 109: LABEL1596 - 111: LABEL1639 - 112: LABEL1682 - jump LABEL1725 -LABEL1346: + 1: LABEL1354 + 2: LABEL1354 + 3: LABEL1354 + 6: LABEL1354 + 7: LABEL1354 + 9: LABEL1354 + 90: LABEL1354 + 91: LABEL1354 + 106: LABEL1354 + 41: LABEL1354 + 44: LABEL1354 + 101: LABEL1458 + 103: LABEL1501 + 104: LABEL1501 + 110: LABEL1501 + 14: LABEL1544 + 109: LABEL1604 + 111: LABEL1647 + 112: LABEL1690 + jump LABEL1733 +LABEL1354: sconst "" sload 16 sconst "" @@ -1525,20 +1533,20 @@ LABEL1346: removetags compare iconst 0 - if_icmpne LABEL1374 - jump LABEL1449 -LABEL1374: + if_icmpne LABEL1382 + jump LABEL1457 +LABEL1382: iload 15 iconst 1 - if_icmpeq LABEL1378 - jump LABEL1383 -LABEL1378: + if_icmpeq LABEL1386 + jump LABEL1391 +LABEL1386: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1391 -LABEL1383: + jump LABEL1399 +LABEL1391: iconst 6 sconst "Add friend" iload 9 @@ -1547,78 +1555,78 @@ LABEL1383: sconst "Add ignore" iload 9 if_setop -LABEL1391: +LABEL1399: iconst 8 sconst "Report" iload 9 if_setop iload 11 iconst 9 - if_icmpeq LABEL1399 - jump LABEL1412 -LABEL1399: + if_icmpeq LABEL1407 + jump LABEL1420 +LABEL1407: clan_getchatcount iconst 0 - if_icmpgt LABEL1403 - jump LABEL1411 -LABEL1403: + if_icmpgt LABEL1411 + jump LABEL1419 +LABEL1411: clan_getchatrank clan_getchatminkick - if_icmpge LABEL1407 - jump LABEL1411 -LABEL1407: + if_icmpge LABEL1415 + jump LABEL1419 +LABEL1415: iconst 9 sconst "Kick" iload 9 if_setop -LABEL1411: - jump LABEL1449 -LABEL1412: +LABEL1419: + jump LABEL1457 +LABEL1420: iload 11 iconst 41 - if_icmpeq LABEL1416 - jump LABEL1449 -LABEL1416: + if_icmpeq LABEL1424 + jump LABEL1457 +LABEL1424: iload 18 iload 19 - if_icmpge LABEL1420 - jump LABEL1449 -LABEL1420: + if_icmpge LABEL1428 + jump LABEL1457 +LABEL1428: iconst 0 activeclanchannel_find_affined iconst 1 - if_icmpeq LABEL1425 - jump LABEL1449 -LABEL1425: + if_icmpeq LABEL1433 + jump LABEL1457 +LABEL1433: sload 16 removetags activeclanchannel_getuserslot istore 17 iload 17 iconst -1 - if_icmpeq LABEL1437 + if_icmpeq LABEL1445 iload 17 activeclanchannel_getuserrank iconst -1 - if_icmple LABEL1437 - jump LABEL1449 -LABEL1437: + if_icmple LABEL1445 + jump LABEL1457 +LABEL1445: iconst 9 sconst "Kick" iload 9 if_setop iload 18 iload 20 - if_icmpge LABEL1445 - jump LABEL1449 -LABEL1445: + if_icmpge LABEL1453 + jump LABEL1457 +LABEL1453: iconst 10 sconst "Ban" iload 9 if_setop -LABEL1449: - jump LABEL1737 -LABEL1450: +LABEL1457: + jump LABEL1745 +LABEL1458: sconst "" sload 16 sconst "" @@ -1646,15 +1654,15 @@ LABEL1450: if_setop iload 15 iconst 1 - if_icmpeq LABEL1479 - jump LABEL1484 -LABEL1479: + if_icmpeq LABEL1487 + jump LABEL1492 +LABEL1487: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1492 -LABEL1484: + jump LABEL1500 +LABEL1492: iconst 6 sconst "Add friend" iload 9 @@ -1663,9 +1671,9 @@ LABEL1484: sconst "Add ignore" iload 9 if_setop -LABEL1492: - jump LABEL1737 -LABEL1493: +LABEL1500: + jump LABEL1745 +LABEL1501: sconst "" sload 16 sconst "" @@ -1693,15 +1701,15 @@ LABEL1493: if_setop iload 15 iconst 1 - if_icmpeq LABEL1522 - jump LABEL1527 -LABEL1522: + if_icmpeq LABEL1530 + jump LABEL1535 +LABEL1530: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1535 -LABEL1527: + jump LABEL1543 +LABEL1535: iconst 6 sconst "Add friend" iload 9 @@ -1710,20 +1718,20 @@ LABEL1527: sconst "Add ignore" iload 9 if_setop -LABEL1535: - jump LABEL1737 -LABEL1536: +LABEL1543: + jump LABEL1745 +LABEL1544: sload 19 string_length iconst 0 - if_icmpgt LABEL1541 - jump LABEL1570 -LABEL1541: + if_icmpgt LABEL1549 + jump LABEL1578 +LABEL1549: iload 13 iconst -1 - if_icmpne LABEL1545 - jump LABEL1570 -LABEL1545: + if_icmpne LABEL1553 + jump LABEL1578 +LABEL1553: iconst 6 sconst "Open" iload 9 @@ -1748,8 +1756,8 @@ LABEL1545: sconst "Iii" iload 9 if_setonmouseleave - jump LABEL1578 -LABEL1570: + jump LABEL1586 +LABEL1578: iconst -1 sconst "" iload 9 @@ -1758,7 +1766,7 @@ LABEL1570: sconst "" iload 9 if_setonmouseleave -LABEL1578: +LABEL1586: iconst 9 sconst "Clear history" iload 9 @@ -1776,8 +1784,8 @@ LABEL1578: sconst "isi" iload 9 if_setonop - jump LABEL1737 -LABEL1596: + jump LABEL1745 +LABEL1604: sconst "" sload 16 sconst "" @@ -1805,15 +1813,15 @@ LABEL1596: if_setonmouseleave iload 15 iconst 1 - if_icmpeq LABEL1625 - jump LABEL1630 -LABEL1625: + if_icmpeq LABEL1633 + jump LABEL1638 +LABEL1633: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1638 -LABEL1630: + jump LABEL1646 +LABEL1638: iconst 6 sconst "Add friend" iload 9 @@ -1822,9 +1830,9 @@ LABEL1630: sconst "Add ignore" iload 9 if_setop -LABEL1638: - jump LABEL1737 -LABEL1639: +LABEL1646: + jump LABEL1745 +LABEL1647: sconst "" sload 16 sconst "" @@ -1852,15 +1860,15 @@ LABEL1639: if_setonmouseleave iload 15 iconst 1 - if_icmpeq LABEL1668 - jump LABEL1673 -LABEL1668: + if_icmpeq LABEL1676 + jump LABEL1681 +LABEL1676: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1681 -LABEL1673: + jump LABEL1689 +LABEL1681: iconst 6 sconst "Add friend" iload 9 @@ -1869,9 +1877,9 @@ LABEL1673: sconst "Add ignore" iload 9 if_setop -LABEL1681: - jump LABEL1737 -LABEL1682: +LABEL1689: + jump LABEL1745 +LABEL1690: sconst "" sload 16 sconst "" @@ -1899,15 +1907,15 @@ LABEL1682: if_setonmouseleave iload 15 iconst 1 - if_icmpeq LABEL1711 - jump LABEL1716 -LABEL1711: + if_icmpeq LABEL1719 + jump LABEL1724 +LABEL1719: iconst 6 sconst "Message" iload 9 if_setop - jump LABEL1724 -LABEL1716: + jump LABEL1732 +LABEL1724: iconst 6 sconst "Add friend" iload 9 @@ -1916,9 +1924,9 @@ LABEL1716: sconst "Add ignore" iload 9 if_setop -LABEL1724: - jump LABEL1737 -LABEL1725: +LABEL1732: + jump LABEL1745 +LABEL1733: iconst -1 sconst "" iload 9 @@ -1931,7 +1939,7 @@ LABEL1725: sconst "" iload 9 if_setonmouseleave -LABEL1737: +LABEL1745: iload 6 iload 7 sub @@ -1946,20 +1954,20 @@ LABEL1737: iload 8 enum istore 9 -LABEL1751: +LABEL1759: iload 10 chat_getprevuid istore 10 jump LABEL365 -LABEL1755: +LABEL1763: iload 8 istore 22 -LABEL1757: +LABEL1765: iload 9 iconst -1 - if_icmpne LABEL1761 - jump LABEL1844 -LABEL1761: + if_icmpne LABEL1769 + jump LABEL1852 +LABEL1769: iload 9 if_clearops iconst -1 @@ -1986,14 +1994,14 @@ LABEL1761: multiply cc_find iconst 1 - if_icmpeq LABEL1789 - jump LABEL1793 -LABEL1789: + if_icmpeq LABEL1797 + jump LABEL1801 +LABEL1797: sconst "" cc_settext iconst 1 cc_sethide -LABEL1793: +LABEL1801: iconst 10616888 iload 8 iconst 4 @@ -2002,14 +2010,14 @@ LABEL1793: add cc_find iconst 1 - if_icmpeq LABEL1803 - jump LABEL1807 -LABEL1803: + if_icmpeq LABEL1811 + jump LABEL1815 +LABEL1811: sconst "" cc_settext iconst 1 cc_sethide -LABEL1807: +LABEL1815: iconst 10616888 iload 8 iconst 4 @@ -2018,14 +2026,14 @@ LABEL1807: add cc_find iconst 1 - if_icmpeq LABEL1817 - jump LABEL1821 -LABEL1817: + if_icmpeq LABEL1825 + jump LABEL1829 +LABEL1825: sconst "" cc_settext iconst 1 cc_sethide -LABEL1821: +LABEL1829: iconst 10616888 iload 8 iconst 4 @@ -2034,12 +2042,12 @@ LABEL1821: add cc_find iconst 1 - if_icmpeq LABEL1831 - jump LABEL1833 -LABEL1831: + if_icmpeq LABEL1839 + jump LABEL1841 +LABEL1839: iconst 1 cc_sethide -LABEL1833: +LABEL1841: iload 8 iconst 1 add @@ -2050,8 +2058,8 @@ LABEL1833: iload 8 enum istore 9 - jump LABEL1757 -LABEL1844: + jump LABEL1765 +LABEL1852: iload 6 iconst 2 sub @@ -2065,20 +2073,20 @@ LABEL1844: istore 23 iload 6 iload 23 - if_icmpgt LABEL1859 - jump LABEL1861 -LABEL1859: + if_icmpgt LABEL1867 + jump LABEL1869 +LABEL1867: iload 6 istore 23 -LABEL1861: +LABEL1869: iload 22 istore 8 -LABEL1863: +LABEL1871: iload 8 iconst 0 - if_icmpgt LABEL1867 - jump LABEL1950 -LABEL1867: + if_icmpgt LABEL1875 + jump LABEL1958 +LABEL1875: iload 8 iconst 1 sub @@ -2109,15 +2117,15 @@ LABEL1867: multiply cc_find iconst 1 - if_icmpeq LABEL1899 - jump LABEL1904 -LABEL1899: + if_icmpeq LABEL1907 + jump LABEL1912 +LABEL1907: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1904: +LABEL1912: iconst 10616888 iload 8 iconst 4 @@ -2126,15 +2134,15 @@ LABEL1904: add cc_find iconst 1 - if_icmpeq LABEL1914 - jump LABEL1919 -LABEL1914: + if_icmpeq LABEL1922 + jump LABEL1927 +LABEL1922: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1919: +LABEL1927: iconst 10616888 iload 8 iconst 4 @@ -2143,15 +2151,15 @@ LABEL1919: add cc_find iconst 1 - if_icmpeq LABEL1929 - jump LABEL1934 -LABEL1929: + if_icmpeq LABEL1937 + jump LABEL1942 +LABEL1937: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1934: +LABEL1942: iconst 10616888 iload 8 iconst 4 @@ -2160,17 +2168,17 @@ LABEL1934: add cc_find iconst 1 - if_icmpeq LABEL1944 - jump LABEL1949 -LABEL1944: + if_icmpeq LABEL1952 + jump LABEL1957 +LABEL1952: cc_getx iload 6 iconst 0 iconst 0 cc_setposition -LABEL1949: - jump LABEL1863 -LABEL1950: +LABEL1957: + jump LABEL1871 +LABEL1958: iconst 0 iload 23 iconst 10616888