Merge remote-tracking branch 'upstream/master' into master

This commit is contained in:
ThatGamerBlue
2021-05-19 13:21:08 +01:00
43 changed files with 2516 additions and 1047 deletions
@@ -11859,5 +11859,24 @@ public final class ItemID
public static final int UNGAEL_LAB_NOTES = 25702; public static final int UNGAEL_LAB_NOTES = 25702;
public static final int LITHKREN_VAULT_NOTES = 25704; public static final int LITHKREN_VAULT_NOTES = 25704;
public static final int DUSTY_NOTE = 25706; public static final int DUSTY_NOTE = 25706;
public static final int BOARD_GAME_PIECE_25708 = 25708;
public static final int STOOL_25710 = 25710;
public static final int STOOL_25711 = 25711;
public static final int CLAN_CLOAK = 25712;
public static final int CLAN_CLOAK_25714 = 25714;
public static final int CLAN_CLOAK_25715 = 25715;
public static final int CLAN_CLOAK_25716 = 25716;
public static final int CLAN_CLOAK_25717 = 25717;
public static final int CLAN_CLOAK_25718 = 25718;
public static final int CLAN_CLOAK_25719 = 25719;
public static final int CLAN_CLOAK_25720 = 25720;
public static final int CLAN_VEXILLUM = 25721;
public static final int CLAN_VEXILLUM_25723 = 25723;
public static final int CLAN_VEXILLUM_25724 = 25724;
public static final int CLAN_VEXILLUM_25725 = 25725;
public static final int CLAN_VEXILLUM_25726 = 25726;
public static final int CLAN_VEXILLUM_25727 = 25727;
public static final int CLAN_VEXILLUM_25728 = 25728;
public static final int CLAN_VEXILLUM_25729 = 25729;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -5970,7 +5970,7 @@ public final class NpcID
public static final int GUARD_6583 = 6583; public static final int GUARD_6583 = 6583;
public static final int URI_6584 = 6584; public static final int URI_6584 = 6584;
public static final int SHERLOCK = 6586; public static final int SHERLOCK = 6586;
public static final int ARMADYLIAN_GUARD = 6587; public static final int ARMADYLEAN_GUARD = 6587;
public static final int BANDOSIAN_GUARD = 6588; public static final int BANDOSIAN_GUARD = 6588;
public static final int DR_FORD = 6589; public static final int DR_FORD = 6589;
public static final int SISTER_SCAROPHIA = 6590; public static final int SISTER_SCAROPHIA = 6590;
@@ -7742,6 +7742,8 @@ public final class NpcID
public static final int THIRD_AGE_RANGER = 8636; public static final int THIRD_AGE_RANGER = 8636;
public static final int THIRD_AGE_MAGE = 8637; public static final int THIRD_AGE_MAGE = 8637;
public static final int URI_8638 = 8638; public static final int URI_8638 = 8638;
public static final int FIRE_8643 = 8643;
public static final int SARADOMINIST_RECRUITER = 8644;
public static final int ARTHUR_THE_CLUE_HUNTER = 8665; public static final int ARTHUR_THE_CLUE_HUNTER = 8665;
public static final int BANKER_8666 = 8666; public static final int BANKER_8666 = 8666;
public static final int PUFFER_FISH_8667 = 8667; public static final int PUFFER_FISH_8667 = 8667;
@@ -9066,5 +9068,31 @@ public final class NpcID
public static final int KOUREND_GUARD_10729 = 10729; public static final int KOUREND_GUARD_10729 = 10729;
public static final int KOUREND_HEAD_GUARD_10730 = 10730; public static final int KOUREND_HEAD_GUARD_10730 = 10730;
public static final int ARCHER_10731 = 10731; public static final int ARCHER_10731 = 10731;
public static final int ZAMORAKIAN_RECRUITER = 10732;
public static final int MEREDITH = 10733;
public static final int BANKER_10734 = 10734;
public static final int BANKER_10735 = 10735;
public static final int BANKER_10736 = 10736;
public static final int BANKER_10737 = 10737;
public static final int RAQUEEL = 10739;
public static final int RAQUEEL_10740 = 10740;
public static final int RAQUEEL_10741 = 10741;
public static final int RAQUEEL_10742 = 10742;
public static final int RAQUEEL_10743 = 10743;
public static final int RAQUEEL_10744 = 10744;
public static final int RAQUEEL_10745 = 10745;
public static final int RAQUEEL_10746 = 10746;
public static final int GEM = 10748;
public static final int GEM_10749 = 10749;
public static final int GEM_10750 = 10750;
public static final int GEM_10751 = 10751;
public static final int GEM_10752 = 10752;
public static final int GEM_10753 = 10753;
public static final int GEM_10754 = 10754;
public static final int GEM_10755 = 10755;
public static final int GARDENER_JAY_JR = 10756;
public static final int GARDENER_JAY_JR_10757 = 10757;
public static final int GARDENER_JAY_JR_10758 = 10758;
public static final int CLERK_10759 = 10759;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -13638,5 +13638,8 @@ public final class NullItemID
public static final int NULL_25703 = 25703; public static final int NULL_25703 = 25703;
public static final int NULL_25705 = 25705; public static final int NULL_25705 = 25705;
public static final int NULL_25707 = 25707; public static final int NULL_25707 = 25707;
public static final int NULL_25709 = 25709;
public static final int NULL_25713 = 25713;
public static final int NULL_25722 = 25722;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -1647,5 +1647,7 @@ public final class NullNpcID
public static final int NULL_10711 = 10711; public static final int NULL_10711 = 10711;
public static final int NULL_10712 = 10712; public static final int NULL_10712 = 10712;
public static final int NULL_10713 = 10713; public static final int NULL_10713 = 10713;
public static final int NULL_10738 = 10738;
public static final int NULL_10747 = 10747;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -18053,6 +18053,7 @@ public final class NullObjectID
public static final int NULL_37481 = 37481; public static final int NULL_37481 = 37481;
public static final int NULL_37490 = 37490; public static final int NULL_37490 = 37490;
public static final int NULL_37491 = 37491; public static final int NULL_37491 = 37491;
public static final int NULL_37582 = 37582;
public static final int NULL_37623 = 37623; public static final int NULL_37623 = 37623;
public static final int NULL_37624 = 37624; public static final int NULL_37624 = 37624;
public static final int NULL_37625 = 37625; public static final int NULL_37625 = 37625;
@@ -19144,6 +19145,13 @@ public final class NullObjectID
public static final int NULL_39123 = 39123; public static final int NULL_39123 = 39123;
public static final int NULL_39124 = 39124; public static final int NULL_39124 = 39124;
public static final int NULL_39125 = 39125; public static final int NULL_39125 = 39125;
public static final int NULL_39139 = 39139;
public static final int NULL_39140 = 39140;
public static final int NULL_39141 = 39141;
public static final int NULL_39142 = 39142;
public static final int NULL_39143 = 39143;
public static final int NULL_39144 = 39144;
public static final int NULL_39145 = 39145;
public static final int NULL_39146 = 39146; public static final int NULL_39146 = 39146;
public static final int NULL_39147 = 39147; public static final int NULL_39147 = 39147;
public static final int NULL_39148 = 39148; public static final int NULL_39148 = 39148;
@@ -20035,6 +20043,7 @@ public final class NullObjectID
public static final int NULL_41001 = 41001; public static final int NULL_41001 = 41001;
public static final int NULL_41002 = 41002; public static final int NULL_41002 = 41002;
public static final int NULL_41003 = 41003; public static final int NULL_41003 = 41003;
public static final int NULL_41005 = 41005;
public static final int NULL_41006 = 41006; public static final int NULL_41006 = 41006;
public static final int NULL_41007 = 41007; public static final int NULL_41007 = 41007;
public static final int NULL_41008 = 41008; public static final int NULL_41008 = 41008;
@@ -20292,5 +20301,66 @@ public final class NullObjectID
public static final int NULL_41597 = 41597; public static final int NULL_41597 = 41597;
public static final int NULL_41598 = 41598; public static final int NULL_41598 = 41598;
public static final int NULL_41599 = 41599; public static final int NULL_41599 = 41599;
public static final int NULL_41608 = 41608;
public static final int NULL_41609 = 41609;
public static final int NULL_41610 = 41610;
public static final int NULL_41611 = 41611;
public static final int NULL_41612 = 41612;
public static final int NULL_41614 = 41614;
public static final int NULL_41616 = 41616;
public static final int NULL_41628 = 41628;
public static final int NULL_41629 = 41629;
public static final int NULL_41630 = 41630;
public static final int NULL_41631 = 41631;
public static final int NULL_41632 = 41632;
public static final int NULL_41633 = 41633;
public static final int NULL_41634 = 41634;
public static final int NULL_41635 = 41635;
public static final int NULL_41636 = 41636;
public static final int NULL_41637 = 41637;
public static final int NULL_41638 = 41638;
public static final int NULL_41639 = 41639;
public static final int NULL_41640 = 41640;
public static final int NULL_41641 = 41641;
public static final int NULL_41642 = 41642;
public static final int NULL_41643 = 41643;
public static final int NULL_41657 = 41657;
public static final int NULL_41658 = 41658;
public static final int NULL_41659 = 41659;
public static final int NULL_41660 = 41660;
public static final int NULL_41661 = 41661;
public static final int NULL_41662 = 41662;
public static final int NULL_41663 = 41663;
public static final int NULL_41664 = 41664;
public static final int NULL_41665 = 41665;
public static final int NULL_41666 = 41666;
public static final int NULL_41667 = 41667;
public static final int NULL_41668 = 41668;
public static final int NULL_41669 = 41669;
public static final int NULL_41670 = 41670;
public static final int NULL_41673 = 41673;
public static final int NULL_41674 = 41674;
public static final int NULL_41675 = 41675;
public static final int NULL_41676 = 41676;
public static final int NULL_41677 = 41677;
public static final int NULL_41698 = 41698;
public static final int NULL_41699 = 41699;
public static final int NULL_41700 = 41700;
public static final int NULL_41702 = 41702;
public static final int NULL_41703 = 41703;
public static final int NULL_41712 = 41712;
public static final int NULL_41722 = 41722;
public static final int NULL_41725 = 41725;
public static final int NULL_41726 = 41726;
public static final int NULL_41727 = 41727;
public static final int NULL_41731 = 41731;
public static final int NULL_41735 = 41735;
public static final int NULL_41736 = 41736;
public static final int NULL_41737 = 41737;
public static final int NULL_41738 = 41738;
public static final int NULL_41739 = 41739;
public static final int NULL_41740 = 41740;
public static final int NULL_41741 = 41741;
public static final int NULL_41742 = 41742;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -14231,6 +14231,7 @@ public final class ObjectID
public static final int CRATE_27100 = 27100; public static final int CRATE_27100 = 27100;
public static final int CRATES_27101 = 27101; public static final int CRATES_27101 = 27101;
public static final int CRATES_27102 = 27102; public static final int CRATES_27102 = 27102;
public static final int ROSES_27106 = 27106;
public static final int CHARCOAL_FURNACE = 27107; public static final int CHARCOAL_FURNACE = 27107;
public static final int CHARCOAL_FURNACE_27108 = 27108; public static final int CHARCOAL_FURNACE_27108 = 27108;
public static final int CHARCOAL_FURNACE_27109 = 27109; public static final int CHARCOAL_FURNACE_27109 = 27109;
@@ -19491,6 +19492,7 @@ public final class ObjectID
public static final int PORTAL_NEXUS_37555 = 37555; public static final int PORTAL_NEXUS_37555 = 37555;
public static final int PORTAL_NEXUS_37556 = 37556; public static final int PORTAL_NEXUS_37556 = 37556;
public static final int PORTAL_NEXUS_37557 = 37557; public static final int PORTAL_NEXUS_37557 = 37557;
public static final int ROSES_37558 = 37558;
public static final int PORTAL_NEXUS_37559 = 37559; public static final int PORTAL_NEXUS_37559 = 37559;
public static final int PORTAL_NEXUS_37560 = 37560; public static final int PORTAL_NEXUS_37560 = 37560;
public static final int PORTAL_NEXUS_37561 = 37561; public static final int PORTAL_NEXUS_37561 = 37561;
@@ -19502,6 +19504,7 @@ public final class ObjectID
public static final int PORTAL_NEXUS_37567 = 37567; public static final int PORTAL_NEXUS_37567 = 37567;
public static final int PORTAL_NEXUS_37568 = 37568; public static final int PORTAL_NEXUS_37568 = 37568;
public static final int PORTAL_NEXUS_37569 = 37569; public static final int PORTAL_NEXUS_37569 = 37569;
public static final int ROSES_37570 = 37570;
public static final int PORTAL_NEXUS_37571 = 37571; public static final int PORTAL_NEXUS_37571 = 37571;
public static final int PORTAL_NEXUS_37572 = 37572; public static final int PORTAL_NEXUS_37572 = 37572;
public static final int PORTAL_NEXUS_37573 = 37573; public static final int PORTAL_NEXUS_37573 = 37573;
@@ -19524,6 +19527,7 @@ public final class ObjectID
public static final int BARROWS_PORTAL = 37591; public static final int BARROWS_PORTAL = 37591;
public static final int APE_ATOLL_DUNGEON_PORTAL = 37592; public static final int APE_ATOLL_DUNGEON_PORTAL = 37592;
public static final int WEISS_PORTAL_37593 = 37593; public static final int WEISS_PORTAL_37593 = 37593;
public static final int TABLE_37594 = 37594;
public static final int DRAYNOR_MANOR_PORTAL_37595 = 37595; public static final int DRAYNOR_MANOR_PORTAL_37595 = 37595;
public static final int BATTLEFRONT_PORTAL_37596 = 37596; public static final int BATTLEFRONT_PORTAL_37596 = 37596;
public static final int MIND_ALTAR_PORTAL_37597 = 37597; public static final int MIND_ALTAR_PORTAL_37597 = 37597;
@@ -19535,6 +19539,7 @@ public final class ObjectID
public static final int BARROWS_PORTAL_37603 = 37603; public static final int BARROWS_PORTAL_37603 = 37603;
public static final int APE_ATOLL_DUNGEON_PORTAL_37604 = 37604; public static final int APE_ATOLL_DUNGEON_PORTAL_37604 = 37604;
public static final int WEISS_PORTAL_37605 = 37605; public static final int WEISS_PORTAL_37605 = 37605;
public static final int TABLE_37606 = 37606;
public static final int DRAYNOR_MANOR_PORTAL_37607 = 37607; public static final int DRAYNOR_MANOR_PORTAL_37607 = 37607;
public static final int BATTLEFRONT_PORTAL_37608 = 37608; public static final int BATTLEFRONT_PORTAL_37608 = 37608;
public static final int MIND_ALTAR_PORTAL_37609 = 37609; public static final int MIND_ALTAR_PORTAL_37609 = 37609;
@@ -19962,6 +19967,19 @@ public final class ObjectID
public static final int DAEYALT_ESSENCE_39095 = 39095; public static final int DAEYALT_ESSENCE_39095 = 39095;
public static final int MINE_CART_39117 = 39117; public static final int MINE_CART_39117 = 39117;
public static final int PLINTH_39118 = 39118; public static final int PLINTH_39118 = 39118;
public static final int TABLE_39126 = 39126;
public static final int TABLE_39127 = 39127;
public static final int TABLE_39128 = 39128;
public static final int TABLE_39129 = 39129;
public static final int TABLE_39130 = 39130;
public static final int TABLE_39131 = 39131;
public static final int TABLE_39132 = 39132;
public static final int TABLE_39133 = 39133;
public static final int TABLE_39134 = 39134;
public static final int TABLE_39135 = 39135;
public static final int TABLE_39136 = 39136;
public static final int STOOL_39137 = 39137;
public static final int STOOL_39138 = 39138;
public static final int LAMP_39152 = 39152; public static final int LAMP_39152 = 39152;
public static final int BLOOD_TITHE = 39154; public static final int BLOOD_TITHE = 39154;
public static final int BLOOD_TITHE_39155 = 39155; public static final int BLOOD_TITHE_39155 = 39155;
@@ -20930,7 +20948,6 @@ public final class ObjectID
public static final int MAST_40999 = 40999; public static final int MAST_40999 = 40999;
public static final int WATER_PUMP_41000 = 41000; public static final int WATER_PUMP_41000 = 41000;
public static final int WATER_PUMP_41004 = 41004; public static final int WATER_PUMP_41004 = 41004;
public static final int FIRE_41005 = 41005;
public static final int DAMAGED_TOTEM_POLE = 41010; public static final int DAMAGED_TOTEM_POLE = 41010;
public static final int DAMAGED_TOTEM_POLE_41011 = 41011; public static final int DAMAGED_TOTEM_POLE_41011 = 41011;
public static final int TOTEM_POLE_41012 = 41012; public static final int TOTEM_POLE_41012 = 41012;
@@ -21276,5 +21293,78 @@ public final class ObjectID
public static final int BOXES_41605 = 41605; public static final int BOXES_41605 = 41605;
public static final int SIGNPOST_41606 = 41606; public static final int SIGNPOST_41606 = 41606;
public static final int TABLE_41607 = 41607; public static final int TABLE_41607 = 41607;
public static final int RED_BARRIER_41613 = 41613;
public static final int POSTER_41615 = 41615;
public static final int PORTAL_41617 = 41617;
public static final int PORTAL_41618 = 41618;
public static final int PASSAGE_41619 = 41619;
public static final int DOOR_41620 = 41620;
public static final int BOAT_41621 = 41621;
public static final int GATE_41622 = 41622;
public static final int GATE_41623 = 41623;
public static final int CART_41624 = 41624;
public static final int DOOR_41625 = 41625;
public static final int CLAN_COFFER = 41626;
public static final int STAIRCASE_41627 = 41627;
public static final int STOOL_41644 = 41644;
public static final int LARDER_41645 = 41645;
public static final int WOODEN_BENCH_41646 = 41646;
public static final int TABLE_41647 = 41647;
public static final int TABLE_41648 = 41648;
public static final int TABLE_41649 = 41649;
public static final int ALTAR_41650 = 41650;
public static final int PIANO_41651 = 41651;
public static final int DUMMY_41652 = 41652;
public static final int SOFA_41653 = 41653;
public static final int FIREPLACE_41654 = 41654;
public static final int BOOKCASE_41655 = 41655;
public static final int SWORD_CABINET_41656 = 41656;
public static final int FORTIFIED_GATE = 41671;
public static final int FORTIFIED_GATE_41672 = 41672;
public static final int CLAN_BANNER = 41678;
public static final int CLAN_BANNER_41679 = 41679;
public static final int CLAN_BANNER_41680 = 41680;
public static final int CLAN_BANNER_41681 = 41681;
public static final int CLAN_BANNER_41682 = 41682;
public static final int CLAN_BANNER_41683 = 41683;
public static final int CLAN_BANNER_41684 = 41684;
public static final int CLAN_BANNER_41685 = 41685;
public static final int CLAN_BANNER_41686 = 41686;
public static final int CLAN_BANNER_41687 = 41687;
public static final int CLAN_BANNER_41688 = 41688;
public static final int CLAN_BANNER_41689 = 41689;
public static final int CLAN_BANNER_41690 = 41690;
public static final int CLAN_BANNER_41691 = 41691;
public static final int CLAN_BANNER_41692 = 41692;
public static final int CLAN_BANNER_41693 = 41693;
public static final int TABLE_41694 = 41694;
public static final int TABLE_41695 = 41695;
public static final int HANNIBAL = 41696;
public static final int COOKING_POTS_41697 = 41697;
public static final int CHURCH_PEW_41701 = 41701;
public static final int SUIT_OF_ARMOUR_41704 = 41704;
public static final int SUIT_OF_ARMOUR_41705 = 41705;
public static final int SUIT_OF_ARMOUR_41706 = 41706;
public static final int SUIT_OF_ARMOUR_41707 = 41707;
public static final int SUIT_OF_ARMOUR_41708 = 41708;
public static final int SUIT_OF_ARMOUR_41709 = 41709;
public static final int SUIT_OF_ARMOUR_41710 = 41710;
public static final int SUIT_OF_ARMOUR_41711 = 41711;
public static final int SHIELD_41713 = 41713;
public static final int SHIELD_41714 = 41714;
public static final int SHIELD_41715 = 41715;
public static final int SHIELD_41716 = 41716;
public static final int SHIELD_41717 = 41717;
public static final int SHIELD_41718 = 41718;
public static final int SHIELD_41719 = 41719;
public static final int SHIELD_41720 = 41720;
public static final int SIGN_41721 = 41721;
public static final int BANK_DEPOSIT_BOX_41723 = 41723;
public static final int CLAN_HALL_PORTAL = 41724;
public static final int CLAN_RECRUITMENT_BOARD = 41728;
public static final int CLAN_BANNER_41729 = 41729;
public static final int CLAN_RECRUITMENT_BOARD_41730 = 41730;
public static final int STOOL_41733 = 41733;
public static final int WOODEN_BENCH_41734 = 41734;
/* This file is automatically generated. Do not edit. */ /* This file is automatically generated. Do not edit. */
} }
@@ -271,10 +271,8 @@ public class WidgetID
static class FriendsChat static class FriendsChat
{ {
static final int TITLE = 1; static final int OWNER = 2;
static final int NAME = 4; static final int LIST = 12;
static final int OWNER = 6;
static final int LIST = 16;
} }
static class Bank static class Bank
@@ -558,23 +556,23 @@ public class WidgetID
static final int PARENT = 0; static final int PARENT = 0;
static final int BUTTONS = 1; static final int BUTTONS = 1;
static final int TAB_ALL = 4; static final int TAB_ALL = 4;
static final int TAB_GAME = 8; static final int TAB_GAME = 7;
static final int TAB_PUBLIC = 13; static final int TAB_PUBLIC = 11;
static final int TAB_PRIVATE = 18; static final int TAB_PRIVATE = 19;
static final int TAB_CLAN = 23; static final int TAB_CLAN = 23;
static final int TAB_TRADE = 28; static final int TAB_TRADE = 27;
static final int REPORT_TEXT = 36; static final int REPORT_TEXT = 33;
static final int FRAME = 37; static final int FRAME = 34;
static final int TRANSPARENT_BACKGROUND = 38; static final int TRANSPARENT_BACKGROUND = 35;
static final int CONTAINER = 40; static final int CONTAINER = 37;
static final int TITLE = 44; static final int TITLE = 41;
static final int FULL_INPUT = 45; static final int FULL_INPUT = 42;
static final int GE_SEARCH_RESULTS = 53; static final int GE_SEARCH_RESULTS = 50;
static final int MESSAGES = 56; static final int MESSAGES = 53;
static final int TRANSPARENT_BACKGROUND_LINES = 57; static final int TRANSPARENT_BACKGROUND_LINES = 54;
static final int INPUT = 58; static final int INPUT = 55;
static final int MESSAGE_LINES = 59; static final int MESSAGE_LINES = 56;
static final int FIRST_MESSAGE = 60; static final int FIRST_MESSAGE = 57;
} }
static class Prayer static class Prayer
@@ -126,8 +126,6 @@ public enum WidgetInfo
EXPLORERS_RING_ALCH_INVENTORY(WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.ExplorersRing.INVENTORY), EXPLORERS_RING_ALCH_INVENTORY(WidgetID.EXPLORERS_RING_ALCH_GROUP_ID, WidgetID.ExplorersRing.INVENTORY),
FRIENDS_CHAT_TITLE(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.TITLE),
FRIENDS_CHAT_NAME(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.NAME),
FRIENDS_CHAT_OWNER(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.OWNER), FRIENDS_CHAT_OWNER(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.OWNER),
FRIENDS_CHAT_LIST(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.LIST), FRIENDS_CHAT_LIST(WidgetID.FRIENDS_CHAT_GROUP_ID, WidgetID.FriendsChat.LIST),
@@ -124,6 +124,11 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
item(ItemID.CRYSTAL_HARPOON_INACTIVE) item(ItemID.CRYSTAL_HARPOON_INACTIVE)
); );
private static final AnyRequirementCollection ANY_HAMMER = any("Hammer",
item(ItemID.HAMMER),
item(ItemID.IMCANDO_HAMMER)
);
private static final Set<SkillChallengeClue> CLUES = ImmutableSet.of( private static final Set<SkillChallengeClue> CLUES = ImmutableSet.of(
// Charlie Tasks // Charlie Tasks
new SkillChallengeClue("Cook a Pike", "i need to cook charlie a pike.", "i need to take the cooked pike to charlie.", item(ItemID.PIKE), item(ItemID.RAW_PIKE)), new SkillChallengeClue("Cook a Pike", "i need to cook charlie a pike.", "i need to take the cooked pike to charlie.", item(ItemID.PIKE), item(ItemID.RAW_PIKE)),
@@ -133,7 +138,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Fish a Herring", "i need to fish charlie a herring.", "i need to take a raw herring to charlie.", item(ItemID.RAW_HERRING), any("Fishing rod", item(ItemID.FISHING_ROD), item(ItemID.PEARL_FISHING_ROD)), item(ItemID.FISHING_BAIT)), new SkillChallengeClue("Fish a Herring", "i need to fish charlie a herring.", "i need to take a raw herring to charlie.", item(ItemID.RAW_HERRING), any("Fishing rod", item(ItemID.FISHING_ROD), item(ItemID.PEARL_FISHING_ROD)), item(ItemID.FISHING_BAIT)),
new SkillChallengeClue("Fish a Trout", "i need to fish charlie a trout.", "i need to take a raw trout to charlie.", item(ItemID.RAW_TROUT), any("Fly fishing rod", item(ItemID.FLY_FISHING_ROD), item(ItemID.PEARL_FLY_FISHING_ROD)), item(ItemID.FEATHER)), new SkillChallengeClue("Fish a Trout", "i need to fish charlie a trout.", "i need to take a raw trout to charlie.", item(ItemID.RAW_TROUT), any("Fly fishing rod", item(ItemID.FLY_FISHING_ROD), item(ItemID.PEARL_FLY_FISHING_ROD)), item(ItemID.FEATHER)),
new SkillChallengeClue("Mine a piece of Iron Ore", "i need to mine charlie a piece of iron ore from an iron vein.", "i need to take the iron ore to charlie.", item(ItemID.IRON_ORE), ANY_PICKAXE), new SkillChallengeClue("Mine a piece of Iron Ore", "i need to mine charlie a piece of iron ore from an iron vein.", "i need to take the iron ore to charlie.", item(ItemID.IRON_ORE), ANY_PICKAXE),
new SkillChallengeClue("Smith an Iron Dagger", "i need to smith charlie one iron dagger.", "i need to take the iron dagger i smithed to charlie.", item(ItemID.IRON_DAGGER), item(ItemID.IRON_BAR), item(ItemID.HAMMER)), new SkillChallengeClue("Smith an Iron Dagger", "i need to smith charlie one iron dagger.", "i need to take the iron dagger i smithed to charlie.", item(ItemID.IRON_DAGGER), item(ItemID.IRON_BAR), ANY_HAMMER),
// Elite Sherlock Tasks // Elite Sherlock Tasks
new SkillChallengeClue("Equip a Dragon Scimitar.", true, any("Any Dragon Scimitar", item(ItemID.DRAGON_SCIMITAR), item(ItemID.DRAGON_SCIMITAR_OR))), new SkillChallengeClue("Equip a Dragon Scimitar.", true, any("Any Dragon Scimitar", item(ItemID.DRAGON_SCIMITAR), item(ItemID.DRAGON_SCIMITAR_OR))),
new SkillChallengeClue("Enchant some Dragonstone Jewellery.", "enchant a piece of dragonstone jewellery.", new SkillChallengeClue("Enchant some Dragonstone Jewellery.", "enchant a piece of dragonstone jewellery.",
@@ -153,7 +158,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Catch a black warlock.", item(ItemID.BUTTERFLY_JAR), any("Butterfly Net", item(ItemID.BUTTERFLY_NET), item(ItemID.MAGIC_BUTTERFLY_NET))), new SkillChallengeClue("Catch a black warlock.", item(ItemID.BUTTERFLY_JAR), any("Butterfly Net", item(ItemID.BUTTERFLY_NET), item(ItemID.MAGIC_BUTTERFLY_NET))),
new SkillChallengeClue("Catch a red chinchompa.", item(ItemID.BOX_TRAP)), new SkillChallengeClue("Catch a red chinchompa.", item(ItemID.BOX_TRAP)),
new SkillChallengeClue("Mine a mithril ore.", ANY_PICKAXE), new SkillChallengeClue("Mine a mithril ore.", ANY_PICKAXE),
new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)), new SkillChallengeClue("Smith a mithril 2h sword.", ANY_HAMMER, xOfItem(ItemID.MITHRIL_BAR, 3)),
new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON), new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON),
new SkillChallengeClue("Cut a yew log.", ANY_AXE), new SkillChallengeClue("Cut a yew log.", ANY_AXE),
new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", new String[] { "Broken lamp" }, new int[] { 10834, 10835 }, item(ItemID.LIGHT_ORB)), new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", new String[] { "Broken lamp" }, new int[] { 10834, 10835 }, item(ItemID.LIGHT_ORB)),
@@ -165,7 +170,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Hand in a Tier 2 or higher set of Shayzien supply armour. (Requires 11 lovakite bars)", "take the lovakengj armourers a boxed set of shayzien supply armour at tier 2 or above.", any("Shayzien Supply Set (Tier 2 or higher)", item(ItemID.SHAYZIEN_SUPPLY_SET_2), item(ItemID.SHAYZIEN_SUPPLY_SET_3), item(ItemID.SHAYZIEN_SUPPLY_SET_4), item(ItemID.SHAYZIEN_SUPPLY_SET_5))), new SkillChallengeClue("Hand in a Tier 2 or higher set of Shayzien supply armour. (Requires 11 lovakite bars)", "take the lovakengj armourers a boxed set of shayzien supply armour at tier 2 or above.", any("Shayzien Supply Set (Tier 2 or higher)", item(ItemID.SHAYZIEN_SUPPLY_SET_2), item(ItemID.SHAYZIEN_SUPPLY_SET_3), item(ItemID.SHAYZIEN_SUPPLY_SET_4), item(ItemID.SHAYZIEN_SUPPLY_SET_5))),
// Master Sherlock Tasks // Master Sherlock Tasks
new SkillChallengeClue("Equip an abyssal whip in front of the abyssal demons of the Slayer Tower.", true, any("Abyssal Whip", item(ItemID.ABYSSAL_WHIP), item(ItemID.FROZEN_ABYSSAL_WHIP), item(ItemID.VOLCANIC_ABYSSAL_WHIP))), new SkillChallengeClue("Equip an abyssal whip in front of the abyssal demons of the Slayer Tower.", true, any("Abyssal Whip", item(ItemID.ABYSSAL_WHIP), item(ItemID.FROZEN_ABYSSAL_WHIP), item(ItemID.VOLCANIC_ABYSSAL_WHIP))),
new SkillChallengeClue("Smith a runite med helm.", item(ItemID.HAMMER), item(ItemID.RUNITE_BAR)), new SkillChallengeClue("Smith a runite med helm.", ANY_HAMMER, item(ItemID.RUNITE_BAR)),
new SkillChallengeClue("Teleport to a spirit tree you planted yourself."), new SkillChallengeClue("Teleport to a spirit tree you planted yourself."),
new SkillChallengeClue("Create a Barrows teleport tablet.", item(ItemID.DARK_ESSENCE_BLOCK), xOfItem(ItemID.BLOOD_RUNE, 1), xOfItem(ItemID.LAW_RUNE, 2), xOfItem(ItemID.SOUL_RUNE, 2)), new SkillChallengeClue("Create a Barrows teleport tablet.", item(ItemID.DARK_ESSENCE_BLOCK), xOfItem(ItemID.BLOOD_RUNE, 1), xOfItem(ItemID.LAW_RUNE, 2), xOfItem(ItemID.SOUL_RUNE, 2)),
new SkillChallengeClue("Kill a Nechryael in the Slayer Tower.", "slay a nechryael in the slayer tower."), new SkillChallengeClue("Kill a Nechryael in the Slayer Tower.", "slay a nechryael in the slayer tower."),
@@ -139,17 +139,6 @@ public interface FriendsChatConfig extends Config
return false; return false;
} }
@ConfigItem(
keyName = "clanTabChat",
name = "Tab Chat",
description = "Message friends chat without appending '/' when the friends chat tab is selected.",
position = 9
)
default boolean friendsChatTabChat()
{
return false;
}
@ConfigItem( @ConfigItem(
keyName = "confirmKicks", keyName = "confirmKicks",
name = "Confirm Kicks", name = "Confirm Kicks",
@@ -96,8 +96,6 @@ import net.runelite.client.util.Text;
public class FriendsChatPlugin extends Plugin public class FriendsChatPlugin extends Plugin
{ {
private static final int MAX_CHATS = 10; private static final int MAX_CHATS = 10;
private static final String TITLE = "FC";
private static final String RECENT_TITLE = "Recent FCs";
private static final int MESSAGE_DELAY = 10; private static final int MESSAGE_DELAY = 10;
@Inject @Inject
@@ -284,27 +282,16 @@ public class FriendsChatPlugin extends Plugin
return; return;
} }
Widget chatTitleWidget = client.getWidget(WidgetInfo.FRIENDS_CHAT_TITLE); Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
if (chatTitleWidget != null) if (chatList != null)
{ {
Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
Widget owner = client.getWidget(WidgetInfo.FRIENDS_CHAT_OWNER); Widget owner = client.getWidget(WidgetInfo.FRIENDS_CHAT_OWNER);
FriendsChatManager friendsChatManager = client.getFriendsChatManager(); FriendsChatManager friendsChatManager = client.getFriendsChatManager();
if (friendsChatManager != null && friendsChatManager.getCount() > 0) if ((friendsChatManager == null || friendsChatManager.getCount() <= 0)
&& chatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText())
&& config.recentChats())
{ {
chatTitleWidget.setText(TITLE + " (" + friendsChatManager.getCount() + "/100)"); loadFriendsChats();
}
else if (chatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText()))
{
if (config.recentChats())
{
chatTitleWidget.setText(RECENT_TITLE);
loadFriendsChats();
}
else
{
chatTitleWidget.setText(TITLE);
}
} }
} }
@@ -542,15 +529,6 @@ public class FriendsChatPlugin extends Plugin
{ {
switch (scriptCallbackEvent.getEventName()) switch (scriptCallbackEvent.getEventName())
{ {
case "friendsChatInput":
{
final int[] intStack = client.getIntStack();
final int size = client.getIntStackSize();
// If the user accidentally adds a / when the config and the friends chat chat tab is active, handle it like a normal message
boolean alterDispatch = config.friendsChatTabChat() && !client.getVar(VarClientStr.CHATBOX_TYPED_TEXT).startsWith("/");
intStack[size - 1] = alterDispatch ? 1 : 0;
break;
}
case "confirmFriendsChatKick": case "confirmFriendsChatKick":
{ {
if (!config.confirmKicks() || kickConfirmed) if (!config.confirmKicks() || kickConfirmed)
@@ -614,7 +592,6 @@ public class FriendsChatPlugin extends Plugin
private void resetChats() private void resetChats()
{ {
Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST); Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
Widget chatTitleWidget = client.getWidget(WidgetInfo.FRIENDS_CHAT_TITLE);
if (chatList == null) if (chatList == null)
{ {
@@ -626,8 +603,6 @@ public class FriendsChatPlugin extends Plugin
{ {
chatList.setChildren(null); chatList.setChildren(null);
} }
chatTitleWidget.setText(TITLE);
} }
private void loadFriendsChats() private void loadFriendsChats()
@@ -218,7 +218,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private int textureArrayId; private int textureArrayId;
private final GLBuffer uniformBuffer = new GLBuffer(); private final GLBuffer uniformBuffer = new GLBuffer();
private final float[] textureOffsets = new float[128]; private final float[] textureOffsets = new float[256];
private GpuIntBuffer vertexBuffer; private GpuIntBuffer vertexBuffer;
private GpuFloatBuffer uvBuffer; private GpuFloatBuffer uvBuffer;
@@ -1198,7 +1198,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
// Bind uniforms // Bind uniforms
gl.glUniformBlockBinding(glProgram, uniBlockMain, 0); gl.glUniformBlockBinding(glProgram, uniBlockMain, 0);
gl.glUniform1i(uniTextures, 1); // texture sampler array is bound to texture1 gl.glUniform1i(uniTextures, 1); // texture sampler array is bound to texture1
gl.glUniform2fv(uniTextureOffsets, 128, textureOffsets, 0); gl.glUniform2fv(uniTextureOffsets, textureOffsets.length, textureOffsets, 0);
// We just allow the GL to do face culling. Note this requires the priority renderer // We just allow the GL to do face culling. Note this requires the priority renderer
// to have logic to disregard culled faces in the priority depth testing. // to have logic to disregard culled faces in the priority depth testing.
@@ -30,6 +30,7 @@ import lombok.Data;
class XpAction class XpAction
{ {
private int actions = 0; private int actions = 0;
private int actionsSinceReset = 0;
private boolean actionsHistoryInitialized = false; private boolean actionsHistoryInitialized = false;
private int[] actionExps = new int[10]; private int[] actionExps = new int[10];
private int actionExpIndex = 0; private int actionExpIndex = 0;
@@ -135,6 +135,10 @@ class XpInfoBox extends JPanel
final JMenuItem resetOthers = new JMenuItem("Reset others"); final JMenuItem resetOthers = new JMenuItem("Reset others");
resetOthers.addActionListener(e -> xpTrackerPlugin.resetOtherSkillState(skill)); resetOthers.addActionListener(e -> xpTrackerPlugin.resetOtherSkillState(skill));
// Create reset per hour menu
final JMenuItem resetPerHour = new JMenuItem("Reset/hr");
resetPerHour.addActionListener(e -> xpTrackerPlugin.resetSkillPerHourState(skill));
// Create reset others menu // Create reset others menu
pauseSkill.addActionListener(e -> xpTrackerPlugin.pauseSkill(skill, !paused)); pauseSkill.addActionListener(e -> xpTrackerPlugin.pauseSkill(skill, !paused));
@@ -144,6 +148,7 @@ class XpInfoBox extends JPanel
popupMenu.add(openXpTracker); popupMenu.add(openXpTracker);
popupMenu.add(reset); popupMenu.add(reset);
popupMenu.add(resetOthers); popupMenu.add(resetOthers);
popupMenu.add(resetPerHour);
popupMenu.add(pauseSkill); popupMenu.add(pauseSkill);
popupMenu.add(canvasItem); popupMenu.add(canvasItem);
popupMenu.addPopupMenuListener(new PopupMenuListener() popupMenu.addPopupMenuListener(new PopupMenuListener()
@@ -90,6 +90,10 @@ class XpPanel extends PluginPanel
final JMenuItem reset = new JMenuItem("Reset All"); final JMenuItem reset = new JMenuItem("Reset All");
reset.addActionListener(e -> xpTrackerPlugin.resetAndInitState()); reset.addActionListener(e -> xpTrackerPlugin.resetAndInitState());
// Create reset all per hour menu
final JMenuItem resetPerHour = new JMenuItem("Reset All/hr");
resetPerHour.addActionListener(e -> xpTrackerPlugin.resetAllSkillsPerHourState());
// Create pause all menu // Create pause all menu
final JMenuItem pauseAll = new JMenuItem("Pause All"); final JMenuItem pauseAll = new JMenuItem("Pause All");
pauseAll.addActionListener(e -> xpTrackerPlugin.pauseAllSkills(true)); pauseAll.addActionListener(e -> xpTrackerPlugin.pauseAllSkills(true));
@@ -104,6 +108,7 @@ class XpPanel extends PluginPanel
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5)); popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
popupMenu.add(openXpTracker); popupMenu.add(openXpTracker);
popupMenu.add(reset); popupMenu.add(reset);
popupMenu.add(resetPerHour);
popupMenu.add(pauseAll); popupMenu.add(pauseAll);
popupMenu.add(unpauseAll); popupMenu.add(unpauseAll);
overallPanel.setComponentPopupMenu(popupMenu); overallPanel.setComponentPopupMenu(popupMenu);
@@ -24,15 +24,17 @@
*/ */
package net.runelite.client.plugins.xptracker; package net.runelite.client.plugins.xptracker;
import java.util.Arrays;
import java.util.EnumMap; import java.util.EnumMap;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import lombok.NonNull; import lombok.NonNull;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.Skill; import net.runelite.api.Skill;
/** /**
* Internal state for the XpTrackerPlugin * Internal state for the XpTrackerPlugin
* * <p>
* Note: This class's operations are not currently synchronized. * Note: This class's operations are not currently synchronized.
* It is intended to be called by the XpTrackerPlugin on the client thread. * It is intended to be called by the XpTrackerPlugin on the client thread.
*/ */
@@ -43,6 +45,9 @@ class XpState
private final Map<Skill, XpStateSingle> xpSkills = new EnumMap<>(Skill.class); private final Map<Skill, XpStateSingle> xpSkills = new EnumMap<>(Skill.class);
private NPC interactedNPC; private NPC interactedNPC;
@Inject
private XpTrackerConfig xpTrackerConfig;
/** /**
* Destroys all internal state, however any XpSnapshotSingle or XpSnapshotTotal remain unaffected. * Destroys all internal state, however any XpSnapshotSingle or XpSnapshotTotal remain unaffected.
*/ */
@@ -53,7 +58,8 @@ class XpState
/** /**
* Resets a single skill * Resets a single skill
* @param skill Skill to reset *
* @param skill Skill to reset
* @param currentXp Current XP to set to, if unknown set to -1 * @param currentXp Current XP to set to, if unknown set to -1
*/ */
void resetSkill(Skill skill, long currentXp) void resetSkill(Skill skill, long currentXp)
@@ -62,15 +68,26 @@ class XpState
xpSkills.put(skill, new XpStateSingle(skill, currentXp)); xpSkills.put(skill, new XpStateSingle(skill, currentXp));
} }
/**
* Resets the per hour rates of a single skill
*
* @param skill Skill to reset per hour rates
*/
void resetSkillPerHour(Skill skill)
{
xpSkills.get(skill).resetPerHour();
}
/** /**
* Updates a skill with the current known XP. * Updates a skill with the current known XP.
* When the result of this operation is XpUpdateResult.UPDATED, the UI should be updated accordingly. * When the result of this operation is XpUpdateResult.UPDATED, the UI should be updated accordingly.
* This is to distinguish events that reload all the skill's current values (such as world hopping) * This is to distinguish events that reload all the skill's current values (such as world hopping)
* and also first-login when the skills are not initialized (the start XP will be -1 in this case). * and also first-login when the skills are not initialized (the start XP will be -1 in this case).
* @param skill Skill to update *
* @param currentXp Current known XP for this skill * @param skill Skill to update
* @param currentXp Current known XP for this skill
* @param goalStartXp Possible XP start goal * @param goalStartXp Possible XP start goal
* @param goalEndXp Possible XP end goal * @param goalEndXp Possible XP end goal
* @return Whether or not the skill has been initialized, there was no change, or it has been updated * @return Whether or not the skill has been initialized, there was no change, or it has been updated
*/ */
XpUpdateResult updateSkill(Skill skill, long currentXp, int goalStartXp, int goalEndXp) XpUpdateResult updateSkill(Skill skill, long currentXp, int goalStartXp, int goalEndXp)
@@ -92,7 +109,7 @@ class XpState
else else
{ {
long startXp = state.getStartXp(); long startXp = state.getStartXp();
int gainedXp = state.getXpGained(); int gainedXp = state.getTotalXpGained();
if (startXp + gainedXp > currentXp) if (startXp + gainedXp > currentXp)
{ {
@@ -119,8 +136,9 @@ class XpState
/** /**
* Updates skill with average actions based on currently interacted NPC. * Updates skill with average actions based on currently interacted NPC.
* @param skill experience gained skill *
* @param npc currently interacted NPC * @param skill experience gained skill
* @param npc currently interacted NPC
* @param npcHealth health of currently interacted NPC * @param npcHealth health of currently interacted NPC
*/ */
void updateNpcExperience(Skill skill, NPC npc, Integer npcHealth, int xpModifier) void updateNpcExperience(Skill skill, NPC npc, Integer npcHealth, int xpModifier)
@@ -146,10 +164,7 @@ class XpState
else else
{ {
// So we have a decent average off the bat, lets populate all values with what we see. // So we have a decent average off the bat, lets populate all values with what we see.
for (int i = 0; i < action.getActionExps().length; i++) Arrays.fill(action.getActionExps(), actionExp);
{
action.getActionExps()[i] = actionExp;
}
action.setActionsHistoryInitialized(true); action.setActionsHistoryInitialized(true);
} }
@@ -161,8 +176,9 @@ class XpState
/** /**
* Update number of actions performed for skill if last interacted NPC died. * Update number of actions performed for skill if last interacted NPC died.
* (eg. amount of kills in this case) * (eg. amount of kills in this case)
* @param skill skill to update actions for *
* @param npc npc that just died * @param skill skill to update actions for
* @param npc npc that just died
* @param npcHealth max health of npc that just died * @param npcHealth max health of npc that just died
* @return UPDATED in case new kill was successfully added * @return UPDATED in case new kill was successfully added
*/ */
@@ -170,25 +186,41 @@ class XpState
{ {
XpStateSingle state = getSkill(skill); XpStateSingle state = getSkill(skill);
if (state.getXpGained() <= 0 || npcHealth == null || npc != interactedNPC) if (state.getXpGainedSinceReset() <= 0 || npcHealth == null || npc != interactedNPC)
{ {
return XpUpdateResult.NO_CHANGE; return XpUpdateResult.NO_CHANGE;
} }
final XpAction xpAction = state.getXpAction(XpActionType.ACTOR_HEALTH); final XpAction xpAction = state.getXpAction(XpActionType.ACTOR_HEALTH);
xpAction.setActions(xpAction.getActions() + 1); xpAction.setActionsSinceReset(xpAction.getActionsSinceReset() + 1);
return xpAction.isActionsHistoryInitialized() ? XpUpdateResult.UPDATED : XpUpdateResult.NO_CHANGE; return xpAction.isActionsHistoryInitialized() ? XpUpdateResult.UPDATED : XpUpdateResult.NO_CHANGE;
} }
void tick(Skill skill, long delta) void tick(Skill skill, long delta)
{ {
getSkill(skill).tick(delta); final XpStateSingle state = getSkill(skill);
state.tick(delta);
int resetAfterMinutes = xpTrackerConfig.resetSkillRateAfter();
if (resetAfterMinutes > 0)
{
final long now = System.currentTimeMillis();
final int resetAfterMillis = resetAfterMinutes * 60 * 1000;
final long lastChangeMillis = state.getLastChangeMillis();
// When pauseSkillAfter is 0, it is effectively disabled
if (lastChangeMillis != 0 && (now - lastChangeMillis) >= resetAfterMillis)
{
state.resetPerHour();
}
}
} }
/** /**
* Forcefully initialize a skill with a known start XP from the current XP. * Forcefully initialize a skill with a known start XP from the current XP.
* This is used in resetAndInitState by the plugin. It should not result in showing the XP in the UI. * This is used in resetAndInitState by the plugin. It should not result in showing the XP in the UI.
* @param skill Skill to initialize *
* @param skill Skill to initialize
* @param currentXp Current known XP for the skill * @param currentXp Current known XP for the skill
*/ */
void initializeSkill(Skill skill, long currentXp) void initializeSkill(Skill skill, long currentXp)
@@ -211,6 +243,7 @@ class XpState
/** /**
* Obtain an immutable snapshot of the provided skill * Obtain an immutable snapshot of the provided skill
* intended for use with the UI which operates on another thread * intended for use with the UI which operates on another thread
*
* @param skill Skill to obtain the snapshot for * @param skill Skill to obtain the snapshot for
* @return An immutable snapshot of the specified skill for this session since first login or last reset * @return An immutable snapshot of the specified skill for this session since first login or last reset
*/ */
@@ -223,6 +256,7 @@ class XpState
/** /**
* Obtain an immutable snapshot of the provided skill * Obtain an immutable snapshot of the provided skill
* intended for use with the UI which operates on another thread * intended for use with the UI which operates on another thread
*
* @return An immutable snapshot of total information for this session since first login or last reset * @return An immutable snapshot of total information for this session since first login or last reset
*/ */
@NonNull @NonNull
@@ -26,7 +26,8 @@
*/ */
package net.runelite.client.plugins.xptracker; package net.runelite.client.plugins.xptracker;
import java.util.HashMap; import java.util.Arrays;
import java.util.EnumMap;
import java.util.Map; import java.util.Map;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -38,19 +39,25 @@ import net.runelite.api.Skill;
class XpStateSingle class XpStateSingle
{ {
private final Skill skill; private final Skill skill;
private final Map<XpActionType, XpAction> actions = new HashMap<>(); private final Map<XpActionType, XpAction> actions = new EnumMap<>(XpActionType.class);
@Getter @Getter
@Setter @Setter
private long startXp; private long startXp;
@Getter @Getter
private int xpGained = 0; private int xpGainedSinceReset = 0;
private int xpGainedBeforeReset = 0;
@Setter @Setter
private XpActionType actionType = XpActionType.EXPERIENCE; private XpActionType actionType = XpActionType.EXPERIENCE;
@Setter
private long skillTime = 0; private long skillTime = 0;
@Getter
private long lastChangeMillis;
private int startLevelExp = 0; private int startLevelExp = 0;
private int endLevelExp = 0; private int endLevelExp = 0;
@@ -62,18 +69,28 @@ class XpStateSingle
XpAction getXpAction(final XpActionType type) XpAction getXpAction(final XpActionType type)
{ {
actions.putIfAbsent(type, new XpAction()); return actions.computeIfAbsent(type, k -> new XpAction());
return actions.get(type);
} }
long getCurrentXp() long getCurrentXp()
{ {
return startXp + xpGained; return startXp + getTotalXpGained();
}
void setXpGainedSinceReset(int xpGainedSinceReset)
{
this.xpGainedSinceReset = xpGainedSinceReset;
lastChangeMillis = System.currentTimeMillis();
}
int getTotalXpGained()
{
return xpGainedBeforeReset + xpGainedSinceReset;
} }
private int getActionsHr() private int getActionsHr()
{ {
return toHourly(getXpAction(actionType).getActions()); return toHourly(getXpAction(actionType).getActionsSinceReset());
} }
private int toHourly(int value) private int toHourly(int value)
@@ -131,12 +148,9 @@ class XpStateSingle
private long getSecondsTillLevel() private long getSecondsTillLevel()
{ {
// Java 8 doesn't have good duration / period objects to represent spans of time that can be formatted
// Rather than importing another dependency like joda time (which is practically built into java 10)
// below will be a custom formatter that handles spans larger than 1 day
long seconds = getTimeElapsedInSeconds(); long seconds = getTimeElapsedInSeconds();
if (seconds <= 0 || xpGained <= 0) if (seconds <= 0 || xpGainedSinceReset <= 0)
{ {
return -1; return -1;
} }
@@ -144,7 +158,7 @@ class XpStateSingle
// formula is xpRemaining / xpPerSecond // formula is xpRemaining / xpPerSecond
// xpPerSecond being xpGained / seconds // xpPerSecond being xpGained / seconds
// This can be simplified so division is only done once and we can work in whole numbers! // This can be simplified so division is only done once and we can work in whole numbers!
return (getXpRemaining() * seconds) / xpGained; return (getXpRemaining() * seconds) / xpGainedSinceReset;
} }
private String getTimeTillLevel(XpGoalTimeType goalTimeType) private String getTimeTillLevel(XpGoalTimeType goalTimeType)
@@ -155,6 +169,9 @@ class XpStateSingle
return "\u221e"; return "\u221e";
} }
// Java 8 doesn't have good duration / period objects to represent spans of time that can be formatted
// Rather than importing another dependency like joda time (which is practically built into java 10)
// below will be a custom formatter that handles spans larger than 1 day
long durationDays = remainingSeconds / (24 * 60 * 60); long durationDays = remainingSeconds / (24 * 60 * 60);
long durationHours = (remainingSeconds % (24 * 60 * 60)) / (60 * 60); long durationHours = (remainingSeconds % (24 * 60 * 60)) / (60 * 60);
long durationHoursTotal = remainingSeconds / (60 * 60); long durationHoursTotal = remainingSeconds / (60 * 60);
@@ -197,18 +214,33 @@ class XpStateSingle
int getXpHr() int getXpHr()
{ {
return toHourly(xpGained); return toHourly(xpGainedSinceReset);
}
void resetPerHour()
{
//reset actions per hour
for (XpAction action : actions.values())
{
action.setActions(action.getActions() + action.getActionsSinceReset());
action.setActionsSinceReset(0);
}
//reset xp per hour
xpGainedBeforeReset += xpGainedSinceReset;
setXpGainedSinceReset(0);
setSkillTime(0);
} }
boolean update(long currentXp, int goalStartXp, int goalEndXp) boolean update(long currentXp, int goalStartXp, int goalEndXp)
{ {
if (startXp == -1) if (startXp == -1)
{ {
log.warn("Attempted to update skill state " + skill + " but was not initialized with current xp"); log.warn("Attempted to update skill state {} but was not initialized with current xp", skill);
return false; return false;
} }
long originalXp = xpGained + startXp; long originalXp = getTotalXpGained() + startXp;
int actionExp = (int) (currentXp - originalXp); int actionExp = (int) (currentXp - originalXp);
// No experience gained // No experience gained
@@ -228,19 +260,16 @@ class XpStateSingle
{ {
// populate all values in our action history array with this first value that we see // populate all values in our action history array with this first value that we see
// so the average value of our action history starts out as this first value we see // so the average value of our action history starts out as this first value we see
for (int i = 0; i < action.getActionExps().length; i++) Arrays.fill(action.getActionExps(), actionExp);
{
action.getActionExps()[i] = actionExp;
}
action.setActionsHistoryInitialized(true); action.setActionsHistoryInitialized(true);
} }
action.setActionExpIndex((action.getActionExpIndex() + 1) % action.getActionExps().length); action.setActionExpIndex((action.getActionExpIndex() + 1) % action.getActionExps().length);
action.setActions(action.getActions() + 1); action.setActionsSinceReset(action.getActionsSinceReset() + 1);
// Calculate experience gained // Calculate experience gained
xpGained = (int) (currentXp - startXp); setXpGainedSinceReset((int) (currentXp - (startXp + xpGainedBeforeReset)));
// Determine XP goals, overall has no goals // Determine XP goals, overall has no goals
if (skill != Skill.OVERALL) if (skill != Skill.OVERALL)
@@ -273,7 +302,7 @@ class XpStateSingle
public void tick(long delta) public void tick(long delta)
{ {
// Don't tick skills that have not gained XP or have been reset. // Don't tick skills that have not gained XP or have been reset.
if (xpGained <= 0) if (xpGainedSinceReset <= 0)
{ {
return; return;
} }
@@ -285,12 +314,12 @@ class XpStateSingle
return XpSnapshotSingle.builder() return XpSnapshotSingle.builder()
.startLevel(Experience.getLevelForXp(startLevelExp)) .startLevel(Experience.getLevelForXp(startLevelExp))
.endLevel(Experience.getLevelForXp(endLevelExp)) .endLevel(Experience.getLevelForXp(endLevelExp))
.xpGainedInSession(xpGained) .xpGainedInSession(getTotalXpGained())
.xpRemainingToGoal(getXpRemaining()) .xpRemainingToGoal(getXpRemaining())
.xpPerHour(getXpHr()) .xpPerHour(getXpHr())
.skillProgressToGoal(getSkillProgress()) .skillProgressToGoal(getSkillProgress())
.actionType(actionType) .actionType(actionType)
.actionsInSession(getXpAction(actionType).getActions()) .actionsInSession(getXpAction(actionType).getActions() + getXpAction(actionType).getActionsSinceReset())
.actionsRemainingToGoal(getActionsRemaining()) .actionsRemainingToGoal(getActionsRemaining())
.actionsPerHour(getActionsHr()) .actionsPerHour(getActionsHr())
.timeTillGoal(getTimeTillLevel(XpGoalTimeType.DAYS)) .timeTillGoal(getTimeTillLevel(XpGoalTimeType.DAYS))
@@ -88,6 +88,18 @@ public interface XpTrackerConfig extends Config
@ConfigItem( @ConfigItem(
position = 4, position = 4,
keyName = "resetSkillRateAfter",
name = "Auto reset after",
description = "Configures how many minutes passes before resetting a skill's per hour rates while in game and there's no XP, 0 means disabled"
)
@Units(Units.MINUTES)
default int resetSkillRateAfter()
{
return 0;
}
@ConfigItem(
position = 5,
keyName = "skillTabOverlayMenuOptions", keyName = "skillTabOverlayMenuOptions",
name = "Add skill tab canvas menu option", name = "Add skill tab canvas menu option",
description = "Configures whether a menu option to show/hide canvas XP trackers will be added to skills on the skill tab", description = "Configures whether a menu option to show/hide canvas XP trackers will be added to skills on the skill tab",
@@ -99,7 +111,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 5, position = 6,
keyName = "onScreenDisplayMode", keyName = "onScreenDisplayMode",
name = "On-screen tracker display mode (top)", name = "On-screen tracker display mode (top)",
description = "Configures the information displayed in the first line of on-screen XP overlays", description = "Configures the information displayed in the first line of on-screen XP overlays",
@@ -111,7 +123,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 6, position = 7,
keyName = "onScreenDisplayModeBottom", keyName = "onScreenDisplayModeBottom",
name = "On-screen tracker display mode (bottom)", name = "On-screen tracker display mode (bottom)",
description = "Configures the information displayed in the second line of on-screen XP overlays", description = "Configures the information displayed in the second line of on-screen XP overlays",
@@ -123,7 +135,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 7, position = 8,
keyName = "xpPanelLabel1", keyName = "xpPanelLabel1",
name = "Top-left XP info label", name = "Top-left XP info label",
description = "Configures the information displayed in the top-left of XP info box" description = "Configures the information displayed in the top-left of XP info box"
@@ -134,7 +146,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 8, position = 9,
keyName = "xpPanelLabel2", keyName = "xpPanelLabel2",
name = "Top-right XP info label", name = "Top-right XP info label",
description = "Configures the information displayed in the top-right of XP info box" description = "Configures the information displayed in the top-right of XP info box"
@@ -146,7 +158,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 9, position = 10,
keyName = "xpPanelLabel3", keyName = "xpPanelLabel3",
name = "Bottom-left XP info label", name = "Bottom-left XP info label",
description = "Configures the information displayed in the bottom-left of XP info box" description = "Configures the information displayed in the bottom-left of XP info box"
@@ -157,7 +169,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 10, position = 11,
keyName = "xpPanelLabel4", keyName = "xpPanelLabel4",
name = "Bottom-right XP info label", name = "Bottom-right XP info label",
description = "Configures the information displayed in the bottom-right of XP info box" description = "Configures the information displayed in the bottom-right of XP info box"
@@ -168,7 +180,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 11, position = 12,
keyName = "progressBarLabel", keyName = "progressBarLabel",
name = "Progress bar label", name = "Progress bar label",
description = "Configures the info box progress bar to show Time to goal or percentage complete" description = "Configures the info box progress bar to show Time to goal or percentage complete"
@@ -179,7 +191,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 12, position = 13,
keyName = "progressBarTooltipLabel", keyName = "progressBarTooltipLabel",
name = "Tooltip label", name = "Tooltip label",
description = "Configures the info box progress bar tooltip to show Time to goal or percentage complete" description = "Configures the info box progress bar tooltip to show Time to goal or percentage complete"
@@ -190,7 +202,7 @@ public interface XpTrackerConfig extends Config
} }
@ConfigItem( @ConfigItem(
position = 13, position = 14,
keyName = "prioritizeRecentXpSkills", keyName = "prioritizeRecentXpSkills",
name = "Move recently trained skills to top", name = "Move recently trained skills to top",
description = "Configures whether skills should be organized by most recently gained xp" description = "Configures whether skills should be organized by most recently gained xp"
@@ -120,6 +120,9 @@ public class XpTrackerPlugin extends Plugin
@Inject @Inject
private XpClient xpClient; private XpClient xpClient;
@Inject
private XpState xpState;
private NavigationButton navButton; private NavigationButton navButton;
@Setter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE)
@VisibleForTesting @VisibleForTesting
@@ -131,7 +134,6 @@ public class XpTrackerPlugin extends Plugin
private long lastXp = 0; private long lastXp = 0;
private boolean initializeTracker; private boolean initializeTracker;
private final XpState xpState = new XpState();
private final XpPauseState xpPauseState = new XpPauseState(); private final XpPauseState xpPauseState = new XpPauseState();
@Provides @Provides
@@ -323,6 +325,7 @@ public class XpTrackerPlugin extends Plugin
/** /**
* Reset an individual skill with the client's current known state of the skill * Reset an individual skill with the client's current known state of the skill
* Will also clear the skill from the UI. * Will also clear the skill from the UI.
*
* @param skill Skill to reset * @param skill Skill to reset
*/ */
void resetSkillState(Skill skill) void resetSkillState(Skill skill)
@@ -335,6 +338,7 @@ public class XpTrackerPlugin extends Plugin
/** /**
* Reset all skills except for the one provided * Reset all skills except for the one provided
*
* @param skill Skill to ignore during reset * @param skill Skill to ignore during reset
*/ */
void resetOtherSkillState(Skill skill) void resetOtherSkillState(Skill skill)
@@ -349,6 +353,29 @@ public class XpTrackerPlugin extends Plugin
} }
} }
/**
* Reset the xp gained since last reset of the skill
* Does not clear the skill from the UI.
*
* @param skill Skill to reset per hour rate
*/
void resetSkillPerHourState(Skill skill)
{
xpState.resetSkillPerHour(skill);
}
/**
* Reset the xp gained since last reset of all skills including OVERALL
* Does not clear the UI.
*/
void resetAllSkillsPerHourState()
{
for (Skill skill : Skill.values())
{
resetSkillPerHourState(skill);
}
}
@Subscribe @Subscribe
public void onStatChanged(StatChanged statChanged) public void onStatChanged(StatChanged statChanged)
{ {
@@ -377,7 +404,7 @@ public class XpTrackerPlugin extends Plugin
final Actor interacting = client.getLocalPlayer().getInteracting(); final Actor interacting = client.getLocalPlayer().getInteracting();
if (interacting instanceof NPC && COMBAT.contains(skill)) if (interacting instanceof NPC && COMBAT.contains(skill))
{ {
final int xpModifier = worldSetToType(client.getWorldType()).modifier(client);; final int xpModifier = worldSetToType(client.getWorldType()).modifier(client);
final NPC npc = (NPC) interacting; final NPC npc = (NPC) interacting;
xpState.updateNpcExperience(skill, npc, npcManager.getHealth(npc.getId()), xpModifier); xpState.updateNpcExperience(skill, npc, npcManager.getHealth(npc.getId()), xpModifier);
} }
@@ -3323,11 +3323,14 @@
7104, 7104,
7105, 7105,
7106, 7106,
7107 7107,
25708
], ],
"stool": [ "stool": [
3893, 3893,
5732 5732,
25710,
25711
], ],
"wilderness sword": [ "wilderness sword": [
3981, 3981,
@@ -9770,5 +9773,25 @@
"ornate lockbox": [ "ornate lockbox": [
25650, 25650,
25651 25651
],
"clan cloak": [
25712,
25714,
25715,
25716,
25717,
25718,
25719,
25720
],
"clan vexillum": [
25721,
25723,
25724,
25725,
25726,
25727,
25728,
25729
] ]
} }
@@ -25,7 +25,7 @@
#version 330 #version 330
uniform sampler2DArray textures; uniform sampler2DArray textures;
uniform vec2 textureOffsets[64]; uniform vec2 textureOffsets[128];
uniform float brightness; uniform float brightness;
uniform float smoothBanding; uniform float smoothBanding;
uniform vec4 fogColor; uniform vec4 fogColor;
@@ -1 +1 @@
D32D30CB1B79698A15B3314C3782659FF25382008857E7CEB07CA17C1CD5E62A 90076B6F48BDA11B9905808D70A53D53F894350AD46B7ED3AF75C7C60BB304D1
@@ -794,7 +794,7 @@ LABEL703:
sconst "setSearchBankInputTextFound" ; load event name sconst "setSearchBankInputTextFound" ; load event name
runelite_callback ; invoke callback runelite_callback ; invoke callback
pop_int ; pop number of matches pop_int ; pop number of matches
iconst 10616876 iconst 10616873
if_settext if_settext
LABEL710: LABEL710:
jump LABEL725 jump LABEL725
@@ -814,7 +814,7 @@ LABEL722:
sconst "Show items whose names contain the following text:" sconst "Show items whose names contain the following text:"
sconst "setSearchBankInputText" ; load event name sconst "setSearchBankInputText" ; load event name
runelite_callback ; invoke callback runelite_callback ; invoke callback
iconst 10616876 iconst 10616873
if_settext if_settext
LABEL725: LABEL725:
jump LABEL729 jump LABEL729
@@ -1 +1 @@
E5BD8C9AD501548FDE7AA21B76E6186E5E2B30B7824959D09E517989EFE30687 4AEE5325C78CB639C5CB3DC6838082DBD926696CEBDE6DEE0D84D7CD929B8197
File diff suppressed because it is too large Load Diff
@@ -1 +1 @@
C8549F688E1AEF9A485BFA552D7FEA8E0C9FDFAC006A879883320FFD82F5786B 574EDB2E12BB45156BFCF57D301C12AD82DF34648A95478E666FA97F09065C22
@@ -2,7 +2,7 @@
.int_stack_count 1 .int_stack_count 1
.string_stack_count 0 .string_stack_count 0
.int_var_count 18 .int_var_count 18
.string_var_count 4 .string_var_count 6
iconst 0 iconst 0
istore 1 istore 1
iconst 2 iconst 2
@@ -187,24 +187,33 @@ LABEL156:
istore 15 istore 15
iconst 0 iconst 0
istore 16 istore 16
sconst "<col=00ffff>"
sstore 4
sconst "<col=ffff00>"
sstore 5
sload 4
sload 5
invoke 4485
sstore 5
sstore 4
get_varc_int 55 get_varc_int 55
get_varc_int 202 get_varc_int 202
if_icmpge LABEL176 if_icmpge LABEL185
jump LABEL299 jump LABEL311
LABEL176: LABEL185:
get_varc_int 55 get_varc_int 55
clientclock clientclock
iconst 3000 iconst 3000
sub sub
if_icmpgt LABEL182 if_icmpgt LABEL191
jump LABEL299 jump LABEL311
LABEL182: LABEL191:
iconst 14 iconst 14
chat_gethistorylength chat_gethistorylength
iconst 0 iconst 0
if_icmpgt LABEL187 if_icmpgt LABEL196
jump LABEL299 jump LABEL311
LABEL187: LABEL196:
iconst 14 iconst 14
iconst 0 iconst 0
chat_gethistory_bytypeandline chat_gethistory_bytypeandline
@@ -216,9 +225,9 @@ LABEL187:
istore 12 istore 12
iload 12 iload 12
iconst -1 iconst -1
if_icmpne LABEL200 if_icmpne LABEL209
jump LABEL299 jump LABEL311
LABEL200: LABEL209:
sload 0 sload 0
invoke 2066 invoke 2066
istore 15 istore 15
@@ -226,14 +235,17 @@ LABEL200:
sstore 0 sstore 0
iload 15 iload 15
iconst 4 iconst 4
if_icmpne LABEL212 if_icmpne LABEL221
reboottimer reboottimer
iconst 0 iconst 0
if_icmple LABEL212 if_icmple LABEL221
jump LABEL299 jump LABEL311
LABEL212: LABEL221:
iload 7 iload 7
sload 5
sload 0 sload 0
sconst "</col>"
join_string 3
iload 9 iload 9
iload 10 iload 10
iconst 10682368 iconst 10682368
@@ -253,14 +265,14 @@ LABEL212:
sload 3 sload 3
string_length string_length
iconst 0 iconst 0
if_icmpgt LABEL235 if_icmpgt LABEL247
jump LABEL264 jump LABEL276
LABEL235: LABEL247:
iload 15 iload 15
iconst -1 iconst -1
if_icmpne LABEL239 if_icmpne LABEL251
jump LABEL264 jump LABEL276
LABEL239: LABEL251:
iconst 6 iconst 6
sconst "Open" sconst "Open"
iload 10 iload 10
@@ -285,8 +297,8 @@ LABEL239:
sconst "Iii" sconst "Iii"
iload 10 iload 10
if_setonmouseleave if_setonmouseleave
jump LABEL272 jump LABEL284
LABEL264: LABEL276:
iconst -1 iconst -1
sconst "" sconst ""
iload 10 iload 10
@@ -295,7 +307,7 @@ LABEL264:
sconst "" sconst ""
iload 10 iload 10
if_setonmouseleave if_setonmouseleave
LABEL272: LABEL284:
iconst 9 iconst 9
sconst "Clear history" sconst "Clear history"
iload 10 iload 10
@@ -323,41 +335,41 @@ LABEL272:
iload 9 iload 9
enum enum
istore 10 istore 10
LABEL299: LABEL311:
iload 0 iload 0
istore 12 istore 12
iconst 0 iconst 0
istore 17 istore 17
get_varp 287 get_varp 287
iconst 1 iconst 1
if_icmpeq LABEL307 if_icmpeq LABEL319
jump LABEL496 jump LABEL534
LABEL307: LABEL319:
get_varc_int 41 get_varc_int 41
iconst 1337 iconst 1337
if_icmpne LABEL314 if_icmpne LABEL326
get_varbit 4089 get_varbit 4089
iconst 0 iconst 0
if_icmpeq LABEL314 if_icmpeq LABEL326
jump LABEL496 jump LABEL534
LABEL314: LABEL326:
iload 12 iload 12
iconst -1 iconst -1
if_icmpne LABEL318 if_icmpne LABEL330
jump LABEL496 jump LABEL534
LABEL318: LABEL330:
iload 10 iload 10
iconst -1 iconst -1
if_icmpne LABEL322 if_icmpne LABEL334
jump LABEL496 jump LABEL534
LABEL322: LABEL334:
iload 7 iload 7
iload 4 iload 4
sub sub
iconst 57 iconst 57
if_icmplt LABEL328 if_icmplt LABEL340
jump LABEL496 jump LABEL534
LABEL328: LABEL340:
iload 12 iload 12
chat_gethistory_byuid chat_gethistory_byuid
istore 14 istore 14
@@ -373,7 +385,7 @@ LABEL328:
invoke 91 invoke 91
iconst 1 iconst 1
if_icmpeq CHAT_FILTER ; Jump to our new label instead if_icmpeq CHAT_FILTER ; Jump to our new label instead
jump LABEL492 jump LABEL530
CHAT_FILTER: CHAT_FILTER:
sload 0 ; Load the message sload 0 ; Load the message
iconst 1 ; Gets changed to 0 if message is blocked iconst 1 ; Gets changed to 0 if message is blocked
@@ -385,29 +397,35 @@ CHAT_FILTER:
pop_int ; Pop the messageType pop_int ; Pop the messageType
iconst 1 ; 2nd half of conditional iconst 1 ; 2nd half of conditional
sstore 0 ; Override the message with our filtered message sstore 0 ; Override the message with our filtered message
if_icmpeq LABEL344 ; Check if we are building this message if_icmpeq LABEL356 ; Check if we are building this message
jump LABEL492 jump LABEL530
LABEL344: LABEL356:
iload 17 iload 17
switch switch
3: LABEL347 3: LABEL359
6: LABEL368 5: LABEL411
7: LABEL347 6: LABEL385
jump LABEL389 7: LABEL359
LABEL347: jump LABEL446
LABEL359:
iload 7 iload 7
iload 12 ; Load the id of the messageNode iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode pop_int ; Pop the id of the messageNode
sload 4
sconst "From " sconst "From "
sload 1 sload 1
sconst ":" sconst ":"
sconst "privateChatSplitFrom" sconst "privateChatSplitFrom"
runelite_callback runelite_callback
join_string 4 ; Add the timestamp to the message sconst "</col>"
join_string 6 ; Add the timestamp to the message
sload 4
sload 0 sload 0
sconst "</col>"
join_string 3
iload 9 iload 9
iload 10 iload 10
iconst 10682368 iconst 10682368
@@ -422,21 +440,26 @@ LABEL347:
invoke 203 invoke 203
add add
istore 7 istore 7
jump LABEL424 jump LABEL462
LABEL368: LABEL385:
iload 7 iload 7
iload 12 ; Load the id of the messageNode iload 12 ; Load the id of the messageNode
sconst "" ; Push container for the timestamp sconst "" ; Push container for the timestamp
sconst "addTimestamp" ; Push event name sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode pop_int ; Pop the id of the messageNode
sload 4
sconst "To " sconst "To "
sload 1 sload 1
sconst ":" sconst ":"
sconst "privateChatSplitTo" sconst "privateChatSplitTo"
runelite_callback runelite_callback
join_string 4 ; Add the timestamp to the message sconst "</col>"
join_string 6 ; Add the timestamp to the message
sload 4
sload 0 sload 0
sconst "</col>"
join_string 3
iload 9 iload 9
iload 10 iload 10
iconst 10682368 iconst 10682368
@@ -451,16 +474,18 @@ LABEL368:
invoke 203 invoke 203
add add
istore 7 istore 7
jump LABEL424 jump LABEL462
LABEL389: LABEL411:
iload 7 iload 7
iload 12 ; Load the id of the messageNode iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode pop_int ; Pop the id of the messageNode
sload 0 ; Load the log in/out message sload 4 ; Load the log in/out message
join_string 2 ; Add the timestamp to the message sload 0
sconst "</col>"
join_string 4
iload 9 iload 9
iload 10 iload 10
iconst 10682368 iconst 10682368
@@ -475,16 +500,11 @@ LABEL389:
invoke 199 invoke 199
add add
istore 7 istore 7
iload 17
iconst 5
if_icmpeq LABEL409
jump LABEL424
LABEL409:
get_varbit 1627 get_varbit 1627
iconst 0 iconst 0
if_icmpeq LABEL413 if_icmpeq LABEL434
jump LABEL424 jump LABEL445
LABEL413: LABEL434:
iload 13 iload 13
iconst 500 iconst 500
add add
@@ -496,31 +516,50 @@ LABEL413:
sconst "1" sconst "1"
iconst 10616832 iconst 10616832
if_setontimer if_setontimer
LABEL424: LABEL445:
jump LABEL462
LABEL446:
iload 7
sload 0
iload 9
iload 10
iconst 10682368
iload 8
iload 1
iconst 13
iload 7
iload 2
iload 3
iconst 65535
iconst 1
invoke 199
add
istore 7
LABEL462:
iload 10 iload 10
if_clearops if_clearops
iload 17 iload 17
iconst 3 iconst 3
if_icmpeq LABEL436 if_icmpeq LABEL474
iload 17 iload 17
iconst 6 iconst 6
if_icmpeq LABEL436 if_icmpeq LABEL474
iload 17 iload 17
iconst 7 iconst 7
if_icmpeq LABEL436 if_icmpeq LABEL474
jump LABEL470 jump LABEL508
LABEL436: LABEL474:
iload 14 iload 14
iconst 1 iconst 1
if_icmpeq LABEL440 if_icmpeq LABEL478
jump LABEL445 jump LABEL483
LABEL440: LABEL478:
iconst 8 iconst 8
sconst "Message" sconst "Message"
iload 10 iload 10
if_setop if_setop
jump LABEL453 jump LABEL491
LABEL445: LABEL483:
iconst 8 iconst 8
sconst "Add friend" sconst "Add friend"
iload 10 iload 10
@@ -529,7 +568,7 @@ LABEL445:
sconst "Add ignore" sconst "Add ignore"
iload 10 iload 10
if_setop if_setop
LABEL453: LABEL491:
iconst 10 iconst 10
sconst "Report" sconst "Report"
iload 10 iload 10
@@ -546,13 +585,13 @@ LABEL453:
sconst "is" sconst "is"
iload 10 iload 10
if_setonop if_setonop
jump LABEL474 jump LABEL512
LABEL470: LABEL508:
iconst -1 iconst -1
sconst "" sconst ""
iload 10 iload 10
if_setonop if_setonop
LABEL474: LABEL512:
iconst -1 iconst -1
sconst "" sconst ""
iload 10 iload 10
@@ -571,17 +610,17 @@ LABEL474:
iload 9 iload 9
enum enum
istore 10 istore 10
LABEL492: LABEL530:
iload 12 iload 12
chat_getprevuid chat_getprevuid
istore 12 istore 12
jump LABEL314 jump LABEL326
LABEL496: LABEL534:
iload 10 iload 10
iconst -1 iconst -1
if_icmpne LABEL500 if_icmpne LABEL538
jump LABEL557 jump LABEL621
LABEL500: LABEL538:
iload 10 iload 10
if_clearops if_clearops
iconst -1 iconst -1
@@ -604,34 +643,64 @@ LABEL500:
if_setsize if_setsize
iconst 10682368 iconst 10682368
iload 9 iload 9
iconst 2 iconst 4
multiply multiply
cc_find cc_find
iconst 1 iconst 1
if_icmpeq LABEL528 if_icmpeq LABEL566
jump LABEL532 jump LABEL570
LABEL528: LABEL566:
sconst "" sconst ""
cc_settext cc_settext
iconst 1 iconst 1
cc_sethide cc_sethide
LABEL532: LABEL570:
iconst 10682368 iconst 10682368
iload 9 iload 9
iconst 2 iconst 4
multiply multiply
iconst 1 iconst 1
add add
cc_find cc_find
iconst 1 iconst 1
if_icmpeq LABEL542 if_icmpeq LABEL580
jump LABEL546 jump LABEL584
LABEL542: LABEL580:
sconst "" sconst ""
cc_settext cc_settext
iconst 1 iconst 1
cc_sethide cc_sethide
LABEL546: LABEL584:
iconst 10682368
iload 9
iconst 4
multiply
iconst 2
add
cc_find
iconst 1
if_icmpeq LABEL594
jump LABEL598
LABEL594:
sconst ""
cc_settext
iconst 1
cc_sethide
LABEL598:
iconst 10682368
iload 9
iconst 4
multiply
iconst 3
add
cc_find
iconst 1
if_icmpeq LABEL608
jump LABEL610
LABEL608:
iconst 1
cc_sethide
LABEL610:
iload 9 iload 9
iconst 1 iconst 1
add add
@@ -642,6 +711,6 @@ LABEL546:
iload 9 iload 9
enum enum
istore 10 istore 10
jump LABEL496 jump LABEL534
LABEL557: LABEL621:
return return
@@ -1 +1 @@
7D172258726F2B866D2EFFB0F2E401D0551A377DCA7F72CCD8839AC88B3EA6A2 F7D45F13B835E5F5B889D4ECF3A4A61829794BAB447B7FFE676B19659238DAA9
@@ -40,12 +40,26 @@ LABEL16:
join_string 5 join_string 5
mes mes
LABEL23: LABEL23:
jump LABEL27 jump LABEL39
LABEL24: LABEL24:
iload 0
iconst 3
if_icmpeq LABEL31
iload 0
iconst 4
if_icmpeq LABEL31
jump LABEL36
LABEL31:
sload 0
iload 0
iconst 0
5010
jump LABEL39
LABEL36:
sload 0 sload 0
iload 0 iload 0
chat_sendpublic chat_sendpublic
LABEL27: LABEL39:
clientclock clientclock
set_varc_int 61 set_varc_int 61
return return
@@ -1 +1 @@
7AA081A68C6157F9B74DDB6B04F00B1691113941EED8996A4DEABF643F45EA25 F62AC1D5CB6A0C94DFCAEB8E4DC62E3513D0A757CADFDE2B1FF4418AF18AE841
@@ -21,16 +21,16 @@ LABEL10:
istore 0 istore 0
sstore 0 sstore 0
iconst 1 iconst 1
iconst 10616890 iconst 10616887
if_settextshadow if_settextshadow
jump LABEL23 jump LABEL23
LABEL20: LABEL20:
iconst 0 iconst 0
iconst 10616890 iconst 10616887
if_settextshadow if_settextshadow
LABEL23: LABEL23:
iload 0 iload 0
iconst 10616890 iconst 10616887
if_setcolour if_setcolour
get_varc_string 335 get_varc_string 335
string_length string_length
@@ -118,13 +118,13 @@ LABEL95:
iconst 30 iconst 30
iconst 0 iconst 0
iconst 0 iconst 0
iconst 10616871 iconst 10616868
if_setsize if_setsize
iconst 0 iconst 0
iconst 0 iconst 0
iconst 0 iconst 0
iconst 2 iconst 2
iconst 10616871 iconst 10616868
if_setposition if_setposition
jump LABEL124 jump LABEL124
LABEL112: LABEL112:
@@ -132,17 +132,17 @@ LABEL112:
iconst 30 iconst 30
iconst 0 iconst 0
iconst 1 iconst 1
iconst 10616871 iconst 10616868
if_setsize if_setsize
iconst 0 iconst 0
iconst 0 iconst 0
iconst 0 iconst 0
iconst 2 iconst 2
iconst 10616871 iconst 10616868
if_setposition if_setposition
LABEL124: LABEL124:
iload 3 iload 3
iconst 10616890 iconst 10616887
if_getwidth if_getwidth
if_icmpgt LABEL129 if_icmpgt LABEL129
jump LABEL135 jump LABEL135
@@ -150,29 +150,29 @@ LABEL129:
iconst 2 iconst 2
iconst 2 iconst 2
iconst 0 iconst 0
iconst 10616890 iconst 10616887
if_settextalign if_settextalign
jump LABEL140 jump LABEL140
LABEL135: LABEL135:
iconst 0 iconst 0
iconst 2 iconst 2
iconst 0 iconst 0
iconst 10616890 iconst 10616887
if_settextalign if_settextalign
LABEL140: LABEL140:
iconst 10616890 iconst 10616887
if_clearops if_clearops
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616890 iconst 10616887
if_setonmouserepeat if_setonmouserepeat
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616890 iconst 10616887
if_setonmouseleave if_setonmouseleave
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616890 iconst 10616887
if_setonop if_setonop
jump LABEL205 jump LABEL205
LABEL155: LABEL155:
@@ -199,39 +199,39 @@ LABEL172:
iconst 1 iconst 1
iconst 2 iconst 2
iconst 0 iconst 0
iconst 10616890 iconst 10616887
if_settextalign if_settextalign
iconst 10 iconst 10
sconst "Configure" sconst "Configure"
iconst 10616890 iconst 10616887
if_setop if_setop
sconst "<col=ff9040>" sconst "<col=ff9040>"
sconst "Display name" sconst "Display name"
sconst "</col>" sconst "</col>"
join_string 3 join_string 3
iconst 10616890 iconst 10616887
if_setopbase if_setopbase
iconst 45 iconst 45
iconst -2147483645 iconst -2147483645
iload 1 iload 1
sconst "Ii" sconst "Ii"
iconst 10616890 iconst 10616887
if_setonmouserepeat if_setonmouserepeat
iconst 45 iconst 45
iconst -2147483645 iconst -2147483645
iload 0 iload 0
sconst "Ii" sconst "Ii"
iconst 10616890 iconst 10616887
if_setonmouseleave if_setonmouseleave
iconst 489 iconst 489
iconst -2147483644 iconst -2147483644
iconst 1024 iconst 1024
sconst "ii" sconst "ii"
iconst 10616890 iconst 10616887
if_setonop if_setonop
LABEL205: LABEL205:
sload 2 sload 2
iconst 10616890 iconst 10616887
if_settext if_settext
sconst "setChatboxInput" sconst "setChatboxInput"
runelite_callback runelite_callback
@@ -239,6 +239,6 @@ LABEL205:
iconst 16 iconst 16
iconst 1 iconst 1
iconst 0 iconst 0
iconst 10616890 iconst 10616887
if_setsize if_setsize
return return
@@ -1 +1 @@
49F71301DDB45F2010BA8EFCA9D32D08C2CEF0A5F4F441A1CC1F1FE2CCFD7C36 2FE66C1A3B63EEF10142A955C927054613F59A34C4A929C8AC79DBE0F1B06C30
@@ -1,13 +1,13 @@
.id 73 .id 73
.int_stack_count 2 .int_stack_count 2
.string_stack_count 0 .string_stack_count 0
.int_var_count 5 .int_var_count 8
.string_var_count 0 .string_var_count 0
iconst 10616888 iconst 10616885
if_gethide if_gethide
iconst 1 iconst 1
if_icmpeq LABEL9 if_icmpeq LABEL9
iconst 10616889 iconst 10616886
if_gethide if_gethide
iconst 1 iconst 1
if_icmpeq LABEL9 if_icmpeq LABEL9
@@ -32,193 +32,465 @@ LABEL20:
istore 2 istore 2
iconst 0 iconst 0
istore 3 istore 3
iconst 0
istore 4
invoke 1972
iconst 1
if_icmpeq LABEL31
iconst 0 ; Modified to enable clanchat input
sconst "friendsChatInput"
runelite_callback
iconst 1
if_icmpeq LABEL31 ; Compare to 1
jump LABEL37
LABEL31:
get_varc_int 41
iconst 4
if_icmpeq LABEL35
jump LABEL37
LABEL35:
iconst 1
istore 4
LABEL37:
staffmodlevel staffmodlevel
iconst 0 iconst 0
if_icmpgt LABEL41 if_icmpgt LABEL29
jump LABEL43 jump LABEL60
LABEL41: LABEL29:
iconst 1 iconst 1
istore 3 istore 3
LABEL43:
iload 3
iconst 1
if_icmpeq LABEL47
jump LABEL58
LABEL47:
sconst "`" sconst "`"
iload 1 iload 1
string_indexof_char string_indexof_char
iconst -1 iconst -1
if_icmpne LABEL53 if_icmpne LABEL37
jump LABEL58 jump LABEL42
LABEL53: LABEL37:
iload 2 iload 2
iconst 0 iconst 0
if_icmpeq LABEL57 if_icmpeq LABEL41
jump LABEL58 jump LABEL42
LABEL57: LABEL41:
return return
LABEL58: LABEL42:
iload 0 sconst ":"
iconst 84 iload 1
if_icmpeq LABEL62 string_indexof_char
jump LABEL194 iconst -1
LABEL62: if_icmpne LABEL48
invoke 1984 jump LABEL60
iload 2 LABEL48:
iconst 0
if_icmpgt LABEL67
jump LABEL193
LABEL67:
get_varc_string 335
sconst "/"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL77
iload 4
iconst 1
if_icmpeq LABEL77
jump LABEL112
LABEL77:
clan_getchatcount
iconst 0
if_icmpgt LABEL81
jump LABEL108
LABEL81:
iload 2
iconst 1
if_icmple LABEL85
jump LABEL90
LABEL85:
iload 4
iconst 0
if_icmpeq LABEL89
jump LABEL90
LABEL89:
return
LABEL90:
get_varbit 4394
iconst 1
if_icmpeq LABEL94
jump LABEL96
LABEL94:
clan_leavechat
jump LABEL107
LABEL96:
iload 4
iconst 1
if_icmpeq LABEL100
jump LABEL104
LABEL100:
sconst "/"
get_varc_string 335
append
set_varc_string 335
LABEL104:
get_varc_string 335
iconst 2
invoke 96
LABEL107:
jump LABEL111
LABEL108:
get_varc_string 335
iconst 0
invoke 96
LABEL111:
jump LABEL189
LABEL112:
get_varc_string 335 get_varc_string 335
sconst "::" sconst "::"
iconst 0 iconst 0
string_indexof_string string_indexof_string
iconst 0 iconst 0
if_icmpeq LABEL119 if_icmpeq LABEL55
jump LABEL186 jump LABEL60
LABEL119: LABEL55:
iload 2 iload 2
iconst 2 iconst 2
if_icmpgt LABEL123 if_icmpeq LABEL59
jump LABEL182 jump LABEL60
LABEL123: LABEL59:
return
LABEL60:
iconst 0
istore 4
iconst -1
istore 5
iconst 0
istore 6
iconst -1
istore 7
iload 0
iconst 84
if_icmpeq LABEL72
jump LABEL421
LABEL72:
invoke 1984
iload 2
iconst 0
if_icmpgt LABEL77
jump LABEL420
LABEL77:
iload 3
iconst 1
if_icmpeq LABEL81
jump LABEL148
LABEL81:
sconst "give"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL87
jump LABEL91
LABEL87:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL91:
sconst "set"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL97
jump LABEL101
LABEL97:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL101:
sconst "get"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL107
jump LABEL111
LABEL107:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL111:
sconst "tele"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL117
jump LABEL121
LABEL117:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL121:
sconst "~"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL127
jump LABEL131
LABEL127:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL131:
get_varc_string 335
sconst "::"
iconst 0
string_indexof_string
istore 7
iload 7
iconst 0
if_icmpgt LABEL140
jump LABEL148
LABEL140:
get_varc_string 335
iload 7
iload 2
substring
set_varc_string 335
get_varc_string 335
string_length
istore 2
LABEL148:
get_varc_string 335
sconst "::"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL155
jump LABEL158
LABEL155:
iconst 1
istore 4
jump LABEL171
LABEL158:
get_varc_int 41
iconst 5
if_icmpeq LABEL162
jump LABEL165
LABEL162:
iconst 41
istore 5
jump LABEL171
LABEL165:
get_varc_int 41
iconst 4
if_icmpeq LABEL169
jump LABEL171
LABEL169:
iconst 9
istore 5
LABEL171:
get_varc_string 335
sconst "///"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL185
get_varc_string 335
lowercase
sconst "/g "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL185
jump LABEL190
LABEL185:
iconst 3
iconst 44
istore 5
istore 6
jump LABEL226
LABEL190:
get_varc_string 335
sconst "//"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL197
jump LABEL202
LABEL197:
iconst 2
iconst 41
istore 5
istore 6
jump LABEL226
LABEL202:
get_varc_string 335
lowercase
sconst "/c "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL210
jump LABEL215
LABEL210:
iconst 3
iconst 41
istore 5
istore 6
jump LABEL226
LABEL215:
get_varc_string 335
sconst "/"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL222
jump LABEL226
LABEL222:
iconst 1
iconst 9
istore 5
istore 6
LABEL226:
iload 5
iconst 44
if_icmpeq LABEL230
jump LABEL260
LABEL230:
3800
iconst 1
if_icmpeq LABEL234
jump LABEL257
LABEL234:
3850
iconst 1
if_icmpeq LABEL238
jump LABEL257
LABEL238:
iload 2
iload 6
if_icmple LABEL242
jump LABEL243
LABEL242:
return
LABEL243:
3803
iconst 1
if_icmpeq LABEL247
jump LABEL254
LABEL247:
get_varc_string 335
iload 6
iload 2
substring
iconst 4
invoke 96
jump LABEL256
LABEL254:
sconst "Guests are not invited to speak in this clan's channel."
mes
LABEL256:
jump LABEL259
LABEL257:
sconst "You are not chatting as a guest in a clan channel at the moment."
mes
LABEL259:
jump LABEL416
LABEL260:
iload 5
iconst 41
if_icmpeq LABEL264
jump LABEL307
LABEL264:
iconst 0
3851
iconst 1
if_icmpeq LABEL269
jump LABEL304
LABEL269:
get_varbit 931
iconst 0
if_icmpeq LABEL273
jump LABEL301
LABEL273:
iload 2
iload 6
if_icmple LABEL277
jump LABEL278
LABEL277:
return
LABEL278:
chat_playername
removetags
3860
istore 7
iload 7
iconst -1
if_icmpne LABEL286
jump LABEL298
LABEL286:
iload 7
3857
3854
if_icmpge LABEL291
jump LABEL298
LABEL291:
get_varc_string 335
iload 6
iload 2
substring
iconst 3
invoke 96
jump LABEL300
LABEL298:
sconst "You do not have the required rank to talk in the clan's channel."
mes
LABEL300:
jump LABEL303
LABEL301:
sconst "You have muted your clan's channel. Unmute it if you wish to talk in it."
mes
LABEL303:
jump LABEL306
LABEL304:
sconst "You are not chatting in the channel of your own clan at the moment."
mes
LABEL306:
jump LABEL416
LABEL307:
iload 5
iconst 9
if_icmpeq LABEL311
jump LABEL342
LABEL311:
clan_getchatcount
iconst 0
if_icmpgt LABEL315
jump LABEL338
LABEL315:
iload 2
iload 6
if_icmple LABEL319
jump LABEL320
LABEL319:
return
LABEL320:
get_varbit 4394
iconst 1
if_icmpeq LABEL324
jump LABEL326
LABEL324:
clan_leavechat
jump LABEL337
LABEL326:
iload 6
iconst 1
if_icmplt LABEL330
jump LABEL334
LABEL330:
sconst "/"
get_varc_string 335
append
set_varc_string 335
LABEL334:
get_varc_string 335
iconst 2
invoke 96
LABEL337:
jump LABEL341
LABEL338:
get_varc_string 335
iconst 0
invoke 96
LABEL341:
jump LABEL416
LABEL342:
iload 4
iconst 1
if_icmpeq LABEL346
jump LABEL413
LABEL346:
iload 2
iconst 2
if_icmpgt LABEL350
jump LABEL409
LABEL350:
get_varc_string 335 get_varc_string 335
sconst "::toggleroof" sconst "::toggleroof"
iconst 0 iconst 0
string_indexof_string string_indexof_string
iconst 0 iconst 0
if_icmpeq LABEL130 if_icmpeq LABEL357
jump LABEL144 jump LABEL371
LABEL130: LABEL357:
getremoveroofs getremoveroofs
iconst 1 iconst 1
if_icmpeq LABEL134 if_icmpeq LABEL361
jump LABEL139 jump LABEL366
LABEL134: LABEL361:
iconst 0 iconst 0
setremoveroofs setremoveroofs
sconst "Roofs will only be removed selectively." sconst "Roofs will only be removed selectively."
mes mes
jump LABEL143 jump LABEL370
LABEL139: LABEL366:
iconst 1 iconst 1
setremoveroofs setremoveroofs
sconst "Roofs are now all hidden." sconst "Roofs are now all hidden."
mes mes
LABEL143: LABEL370:
jump LABEL181 jump LABEL408
LABEL144: LABEL371:
get_varc_string 335 get_varc_string 335
sconst "::wiki " sconst "::wiki "
iconst 0 iconst 0
string_indexof_string string_indexof_string
iconst 0 iconst 0
if_icmpeq LABEL156 if_icmpeq LABEL383
get_varc_string 335 get_varc_string 335
sconst "::wiki" sconst "::wiki"
compare compare
iconst 0 iconst 0
if_icmpeq LABEL156 if_icmpeq LABEL383
sconst "runeliteCommand" ; load callback name sconst "runeliteCommand" ; load callback name
runelite_callback ; invoke callback runelite_callback ; invoke callback
jump LABEL159 jump LABEL386
LABEL156: LABEL383:
get_varc_string 335 get_varc_string 335
invoke 3299 invoke 3299
jump LABEL181 jump LABEL408
LABEL159: LABEL386:
get_varc_string 335 get_varc_string 335
sconst "::bank" sconst "::bank"
iconst 0 iconst 0
string_indexof_string string_indexof_string
iconst 0 iconst 0
if_icmpeq LABEL166 if_icmpeq LABEL393
jump LABEL170 jump LABEL397
LABEL166: LABEL393:
sconst "Hey, everyone, I just tried to do something very silly!" sconst "Hey, everyone, I just tried to do something very silly!"
iconst 0 iconst 0
invoke 96 invoke 96
jump LABEL181 jump LABEL408
LABEL170: LABEL397:
get_varc_string 335 get_varc_string 335
invoke 224 invoke 224
set_varc_string 335 set_varc_string 335
@@ -230,91 +502,91 @@ LABEL170:
iload 2 iload 2
substring substring
docheat docheat
LABEL181: LABEL408:
jump LABEL185 jump LABEL412
LABEL182: LABEL409:
get_varc_string 335 get_varc_string 335
iconst 0 iconst 0
invoke 96 invoke 96
LABEL185: LABEL412:
jump LABEL189 jump LABEL416
LABEL186: LABEL413:
get_varc_string 335 get_varc_string 335
iconst 0 iconst 0
invoke 96 invoke 96
LABEL189: LABEL416:
get_varc_string 335 get_varc_string 335
invoke 77 invoke 77
sconst "" sconst ""
set_varc_string 335 set_varc_string 335
LABEL193: LABEL420:
jump LABEL269 jump LABEL496
LABEL194: LABEL421:
iload 0 iload 0
iconst 104 iconst 104
if_icmpeq LABEL198 if_icmpeq LABEL425
jump LABEL204 jump LABEL431
LABEL198: LABEL425:
iload 3 iload 3
iconst 1 iconst 1
if_icmpeq LABEL202 if_icmpeq LABEL429
jump LABEL203 jump LABEL430
LABEL202: LABEL429:
invoke 75 invoke 75
LABEL203: LABEL430:
jump LABEL269 jump LABEL496
LABEL204: LABEL431:
iload 0 iload 0
iconst 105 iconst 105
if_icmpeq LABEL208 if_icmpeq LABEL435
jump LABEL214 jump LABEL441
LABEL208: LABEL435:
iload 3 iload 3
iconst 1 iconst 1
if_icmpeq LABEL212 if_icmpeq LABEL439
jump LABEL213 jump LABEL440
LABEL212: LABEL439:
invoke 76 invoke 76
LABEL213: LABEL440:
jump LABEL269 jump LABEL496
LABEL214: LABEL441:
iload 0 iload 0
iconst 80 iconst 80
if_icmpeq LABEL218 if_icmpeq LABEL445
jump LABEL263 jump LABEL490
LABEL218: LABEL445:
iconst 40697935 iconst 40697935
iconst 1 iconst 1
cc_find cc_find
iconst 1 iconst 1
if_icmpeq LABEL224 if_icmpeq LABEL451
jump LABEL225 jump LABEL452
LABEL224: LABEL451:
return return
LABEL225: LABEL452:
get_varc_string 356 get_varc_string 356
string_length string_length
iconst 0 iconst 0
if_icmpgt LABEL230 if_icmpgt LABEL457
jump LABEL250 jump LABEL477
LABEL230: LABEL457:
get_varc_string 356 get_varc_string 356
friend_test friend_test
iconst 1 iconst 1
if_icmpeq LABEL235 if_icmpeq LABEL462
jump LABEL238 jump LABEL465
LABEL235: LABEL462:
get_varc_string 356 get_varc_string 356
invoke 107 invoke 107
return return
LABEL238: LABEL465:
get_varc_int 60 get_varc_int 60
clientclock clientclock
if_icmpgt LABEL242 if_icmpgt LABEL469
jump LABEL243 jump LABEL470
LABEL242: LABEL469:
return return
LABEL243: LABEL470:
clientclock clientclock
iconst 50 iconst 50
add add
@@ -322,14 +594,14 @@ LABEL243:
sconst "That player was not found on your Friends list." sconst "That player was not found on your Friends list."
mes mes
return return
LABEL250: LABEL477:
get_varc_int 60 get_varc_int 60
clientclock clientclock
if_icmpgt LABEL254 if_icmpgt LABEL481
jump LABEL255 jump LABEL482
LABEL254: LABEL481:
return return
LABEL255: LABEL482:
clientclock clientclock
iconst 50 iconst 50
add add
@@ -337,8 +609,8 @@ LABEL255:
sconst "You haven't received any messages to which you can reply." sconst "You haven't received any messages to which you can reply."
mes mes
return return
jump LABEL269 jump LABEL496
LABEL263: LABEL490:
get_varc_string 335 get_varc_string 335
iconst 0 iconst 0
iload 0 iload 0
@@ -350,9 +622,9 @@ LABEL263:
runelite_callback ; runelite_callback ;
if_icmpeq SKIPSETVARC ; skip setting varc with input if_icmpeq SKIPSETVARC ; skip setting varc with input
set_varc_string 335 set_varc_string 335
jump LABEL269 ; jump over SKIPSETVARC jump LABEL496 ; jump over SKIPSETVARC
SKIPSETVARC: SKIPSETVARC:
pop_string ; pop message pop_string ; pop message
LABEL269: LABEL496:
invoke 223 invoke 223
return return
@@ -1 +1 @@
9B3B448D76D57F6D63C9CDA06E58695F6DEBE91F9EDF2D2C4876E064D1067FD6 5A68D15CBC52892CD84A0961CC0D5A84B653B4320F0AA3B11E80EE0D2126B584
@@ -12,23 +12,23 @@
jump CONFIRM_KICK ; Jump to our new label instead jump CONFIRM_KICK ; Jump to our new label instead
LABEL4: LABEL4:
sconst "You can't kick players from your team during Wilderness Wars." sconst "You can't kick players from your team during Wilderness Wars."
mes mes
return return
LABEL7: LABEL7:
sconst "-Attempting to kick player from friends chat..." sconst "-Attempting to kick player from chat-channel..."
iconst 2 iconst 2
invoke 96 invoke 96
sload 0 sload 0
clan_kickuser clan_kickuser
jump LABEL73 jump LABEL73
LABEL73: LABEL73:
return return
CONFIRM_KICK: CONFIRM_KICK:
sload 0 ; Username we are trying to kick sload 0 ; Username we are trying to kick
iconst 0 ; Modified if we are confirming the kick inside the plugin iconst 0 ; Modified if we are confirming the kick inside the plugin
sconst "confirmFriendsChatKick" sconst "confirmFriendsChatKick"
runelite_callback runelite_callback
pop_string ; Pop username pop_string ; Pop username
iconst 0 ; Compare against zero iconst 0 ; Compare against zero
if_icmpgt LABEL73 ; Early return for chatbox panel confirmation if_icmpgt LABEL73 ; Early return for chatbox panel confirmation
jump LABEL7 jump LABEL7
@@ -1 +1 @@
D503F0A0BDEC3DDA9719AB601F5EF294FBBE2747BA4B13529E61806FC65DDF77 1DEBBDF2928F79FE6BDEC5FB3BBF52A18A111D16CF7E079F51B349C6F6DB654A
@@ -15,7 +15,7 @@ LABEL5:
sconst "Show items whose names contain the following text:" sconst "Show items whose names contain the following text:"
sconst "setSearchBankInputText" ; load event name sconst "setSearchBankInputText" ; load event name
runelite_callback ; invoke callback runelite_callback ; invoke callback
iconst 10616876 iconst 10616873
if_settext if_settext
sconst "" sconst ""
invoke 222 invoke 222
@@ -26,11 +26,11 @@ LABEL5:
iconst -2147483639 iconst -2147483639
sload 0 sload 0
sconst "izs" sconst "izs"
iconst 10616877 iconst 10616874
if_setonkey if_setonkey
iconst 138 iconst 138
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_setondialogabort if_setondialogabort
invoke 1972 invoke 1972
iconst 1 iconst 1
@@ -1 +1 @@
12B91B740FE760F73A23EF34E1D4F53EA00F829EF7FC33E648F6FF5EA17417A0 559DA005256EF939AA48F2B0B2B8C5D05168D50D378253DF81B0B68C20331A95
@@ -25,7 +25,7 @@ LABEL10:
iload 1 iload 1
iconst 0 iconst 0
if_icmpgt LABEL21 if_icmpgt LABEL21
jump LABEL187 jump LABEL255
LABEL21: LABEL21:
get_varc_int 5 get_varc_int 5
switch switch
@@ -36,18 +36,22 @@ LABEL21:
5: LABEL26 5: LABEL26
6: LABEL47 6: LABEL47
7: LABEL110 7: LABEL110
8: LABEL114 8: LABEL116
9: LABEL120 9: LABEL124
10: LABEL123 10: LABEL191
11: LABEL179 11: LABEL247
12: LABEL139 12: LABEL207
13: LABEL157 13: LABEL225
15: LABEL120 15: LABEL124
16: LABEL184 16: LABEL252
jump LABEL186 18: LABEL247
19: LABEL110
20: LABEL124
21: LABEL124
jump LABEL254
LABEL24: LABEL24:
return return
jump LABEL186 jump LABEL254
LABEL26: LABEL26:
ignore_count ignore_count
iconst 0 iconst 0
@@ -75,7 +79,7 @@ LABEL44:
get_varc_string 359 get_varc_string 359
ignore_del ignore_del
LABEL46: LABEL46:
jump LABEL186 jump LABEL254
LABEL47: LABEL47:
friend_count friend_count
iconst 0 iconst 0
@@ -159,77 +163,149 @@ LABEL107:
clientclock clientclock
set_varc_int 61 set_varc_int 61
LABEL109: LABEL109:
jump LABEL186 jump LABEL254
LABEL110: LABEL110:
get_varc_string 359 get_varc_string 359
invoke 212 invoke 212
resume_countdialog resume_countdialog
jump LABEL186 iconst 0
LABEL114: set_varc_int 5
jump LABEL254
LABEL116:
get_varc_string 359 get_varc_string 359
removetags removetags
set_varc_string 361 set_varc_string 361
get_varc_string 359 get_varc_string 359
resume_namedialog resume_namedialog
iconst 0
set_varc_int 5
jump LABEL254
LABEL124:
get_varc_int 5
iconst 20
if_icmpeq LABEL128
jump LABEL132
LABEL128:
get_varc_string 359
removetags
invoke 4394
jump LABEL186 jump LABEL186
LABEL120: LABEL132:
get_varc_int 5
iconst 21
if_icmpeq LABEL136
jump LABEL186
LABEL136:
get_varc_string 359
sconst "jagex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jaqex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jagx"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jgex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jgx"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "admin"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "staff"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "-"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "_"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst " "
sconst " "
invoke 4191
set_varc_string 359
LABEL186:
get_varc_string 359 get_varc_string 359
resume_stringdialog resume_stringdialog
jump LABEL186 iconst 0
LABEL123: set_varc_int 5
jump LABEL254
LABEL191:
get_varbit 8119 get_varbit 8119
iconst 0 iconst 0
if_icmpeq LABEL127 if_icmpeq LABEL195
jump LABEL133 jump LABEL201
LABEL127: LABEL195:
iconst 1 iconst 1
iconst 1 iconst 1
invoke 299 invoke 299
sconst "You must set a name before you can chat." sconst "You must set a name before you can chat."
mes mes
return return
LABEL133: LABEL201:
get_varc_string 359 get_varc_string 359
removetags removetags
set_varc_string 362 set_varc_string 362
get_varc_string 359 get_varc_string 359
clan_joinchat clan_joinchat
jump LABEL186 jump LABEL254
LABEL139: LABEL207:
iload 1 iload 1
iconst 10 iconst 10
if_icmpgt LABEL143 if_icmpgt LABEL211
jump LABEL149 jump LABEL217
LABEL143: LABEL211:
get_varc_string 359 get_varc_string 359
iconst 0 iconst 0
iconst 9 iconst 9
substring substring
sstore 0 sstore 0
jump LABEL151 jump LABEL219
LABEL149: LABEL217:
get_varc_string 359 get_varc_string 359
sstore 0 sstore 0
LABEL151: LABEL219:
sload 0 sload 0
lowercase lowercase
chat_setmessagefilter chat_setmessagefilter
invoke 553 invoke 553
invoke 84 invoke 84
jump LABEL186 jump LABEL254
LABEL157: LABEL225:
get_varbit 8119 get_varbit 8119
iconst 0 iconst 0
if_icmpeq LABEL161 if_icmpeq LABEL229
jump LABEL167 jump LABEL235
LABEL161: LABEL229:
iconst 1 iconst 1
iconst 1 iconst 1
invoke 299 invoke 299
sconst "You must set a name before you can chat." sconst "You must set a name before you can chat."
mes mes
return return
LABEL167: LABEL235:
get_varc_string 359 get_varc_string 359
iconst 0 iconst 0
set_varc_int 62 set_varc_int 62
@@ -239,35 +315,37 @@ LABEL167:
iconst -2147483645 iconst -2147483645
iconst 1 iconst 1
sconst "I1" sconst "I1"
iconst 10616845 iconst 10616843
if_setontimer if_setontimer
jump LABEL186 jump LABEL254
LABEL179: LABEL247:
iconst 0 iconst 0
iconst 1 iconst 1
invoke 299 invoke 299
return return
jump LABEL186 jump LABEL254
LABEL184: LABEL252:
get_varc_string 359 get_varc_string 359
invoke 2061 invoke 2061
LABEL186: LABEL254:
jump LABEL193 jump LABEL261
LABEL187: LABEL255:
get_varc_int 5 get_varc_int 5
switch switch
16: LABEL192 16: LABEL260
7: LABEL190 20: LABEL258
8: LABEL190 21: LABEL258
9: LABEL190 7: LABEL258
15: LABEL190 8: LABEL258
jump LABEL193 9: LABEL258
LABEL190: 15: LABEL258
jump LABEL261
LABEL258:
return return
jump LABEL193 jump LABEL261
LABEL192: LABEL260:
return return
LABEL193: LABEL261:
iconst 1 iconst 1
iconst 1 iconst 1
invoke 299 invoke 299
@@ -1 +1 @@
A9577B60999F586BCC424D2312B2D4A5D033DB0A3228719B9BA1DFD9742B92E7 FDFF71BAC7D5E10C1E88F445D60100552D0C5B14A66F8648FFEC39573ECFBE8E
@@ -6,10 +6,10 @@
sconst "resetChatboxInput" sconst "resetChatboxInput"
runelite_callback runelite_callback
iconst 1 iconst 1
iconst 10616872 iconst 10616869
if_sethide if_sethide
iconst 0 iconst 0
iconst 10616888 iconst 10616885
if_sethide if_sethide
invoke 923 invoke 923
iconst 0 iconst 0
@@ -42,206 +42,228 @@ LABEL27:
LABEL31: LABEL31:
invoke 2581 invoke 2581
LABEL32: LABEL32:
get_varc_int 5
switch
19: LABEL35
20: LABEL41
21: LABEL41
7: LABEL35
8: LABEL38
9: LABEL41
15: LABEL41
jump LABEL43
LABEL35:
sconst "0"
resume_countdialog
jump LABEL43
LABEL38:
sconst ""
resume_namedialog
jump LABEL43
LABEL41:
sconst ""
resume_stringdialog
LABEL43:
iconst 0 iconst 0
set_varc_int 5 set_varc_int 5
iload 0 iload 0
iconst 1 iconst 1
if_icmpeq LABEL38 if_icmpeq LABEL49
jump LABEL40 jump LABEL51
LABEL38: LABEL49:
sconst "" sconst ""
set_varc_string 359 set_varc_string 359
LABEL40: LABEL51:
iconst 0 iconst 0
iconst -8 iconst -8
iconst 1 iconst 1
iconst 1 iconst 1
iconst 10616876 iconst 10616873
if_setposition if_setposition
iconst 0 iconst 0
iconst 40 iconst 40
iconst 1 iconst 1
iconst 0 iconst 0
iconst 10616876 iconst 10616873
if_setsize if_setsize
iconst 0 iconst 0
iconst 22 iconst 22
iconst 1 iconst 1
iconst 1 iconst 1
iconst 10616877 iconst 10616874
if_setposition if_setposition
iconst 0 iconst 0
iconst 20 iconst 20
iconst 1 iconst 1
iconst 0 iconst 0
iconst 10616877 iconst 10616874
if_setsize if_setsize
iconst 0 iconst 0
iconst 10616876 iconst 10616873
if_sethide if_sethide
iconst 0 iconst 0
iconst 10616877 iconst 10616874
if_sethide if_sethide
iconst 1 iconst 1
iconst 10616881 iconst 10616878
if_sethide if_sethide
iconst 1 iconst 1
iconst 10616887 iconst 10616884
if_sethide if_sethide
iconst 0 iconst 0
iconst 0 iconst 0
iconst 10616885 iconst 10616882
if_setscrollpos if_setscrollpos
iconst 10616885 iconst 10616882
cc_deleteall cc_deleteall
iconst 10616886 iconst 10616883
cc_deleteall cc_deleteall
iconst 0 iconst 0
iconst -8 iconst -8
iconst 1 iconst 1
iconst 1 iconst 1
iconst 10616876 iconst 10616873
if_setposition if_setposition
iconst 0 iconst 0
iconst 40 iconst 40
iconst 1 iconst 1
iconst 0 iconst 0
iconst 10616876 iconst 10616873
if_setsize if_setsize
iconst 1 iconst 1
iconst 1 iconst 1
iconst 0 iconst 0
iconst 10616876 iconst 10616873
if_settextalign if_settextalign
iconst 496 iconst 496
iconst 10616876 iconst 10616873
if_settextfont if_settextfont
iconst 496 iconst 496
iconst 10616877 iconst 10616874
if_settextfont if_settextfont
iconst 128 iconst 128
iconst 10616877 iconst 10616874
if_setcolour if_setcolour
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_setonmouseover if_setonmouseover
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_setonmouseleave if_setonmouseleave
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_settext if_settext
iconst 0 iconst 0
iconst 22 iconst 22
iconst 1 iconst 1
iconst 1 iconst 1
iconst 10616877 iconst 10616874
if_setposition if_setposition
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616872 iconst 10616869
if_setonclick if_setonclick
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_setonclick if_setonclick
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616877 iconst 10616874
if_setonkey if_setonkey
iconst 1 iconst 1
iconst 10616874 iconst 10616871
if_sethide if_sethide
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616872 iconst 10616869
if_setonclick if_setonclick
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616872 iconst 10616869
if_setontimer if_setontimer
iconst 10616872 iconst 10616869
cc_deleteall cc_deleteall
iconst 10616878 iconst 10616875
cc_deleteall cc_deleteall
iconst 10616879 iconst 10616876
cc_deleteall cc_deleteall
iconst 10616880 iconst 10616877
cc_deleteall cc_deleteall
iconst 1 iconst 1
iconst 10616878 iconst 10616875
if_sethide if_sethide
iconst 1 iconst 1
iconst 10616879 iconst 10616876
if_sethide if_sethide
iconst 1 iconst 1
iconst 10616880 iconst 10616877
if_sethide if_sethide
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616878 iconst 10616875
if_setonmouserepeat if_setonmouserepeat
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616879 iconst 10616876
if_setonmouserepeat if_setonmouserepeat
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616880 iconst 10616877
if_setonmouserepeat if_setonmouserepeat
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616878 iconst 10616875
if_setonmouseleave if_setonmouseleave
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616879 iconst 10616876
if_setonmouseleave if_setonmouseleave
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616880 iconst 10616877
if_setonmouseleave if_setonmouseleave
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616878 iconst 10616875
if_setontimer if_setontimer
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616879 iconst 10616876
if_setontimer if_setontimer
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616880 iconst 10616877
if_setontimer if_setontimer
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616878 iconst 10616875
if_setonclick if_setonclick
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616879 iconst 10616876
if_setonclick if_setonclick
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616880 iconst 10616877
if_setonclick if_setonclick
get_varc_int 41 get_varc_int 41
iconst 1337 iconst 1337
if_icmpeq LABEL219 if_icmpeq LABEL230
jump LABEL223 jump LABEL234
LABEL219: LABEL230:
invoke 2526 invoke 2526
pop_int pop_int
clientclock clientclock
set_varc_int 384 set_varc_int 384
LABEL223: LABEL234:
invoke 1972 invoke 1972
iconst 1 iconst 1
if_icmpeq LABEL227 if_icmpeq LABEL238
jump LABEL228 jump LABEL239
LABEL227: LABEL238:
invoke 2581 invoke 2581
LABEL228: LABEL239:
return return
@@ -1 +1 @@
8567736DBA2A2558DBD5883204C10FF794768C18DB4D85FE44C0959EB7F40885 1CEB4F2F85A8FECA9D9CB80DCAF0CB6A1FB3670607C6CDE80363BC40E95CA1E3
@@ -45,7 +45,7 @@ LABEL26:
invoke 183 invoke 183
LABEL31: LABEL31:
iload 0 iload 0
iconst 10616869 iconst 10616866
if_sethide if_sethide
get_varbit 6374 get_varbit 6374
iconst 1 iconst 1
@@ -61,13 +61,13 @@ LABEL42:
iconst 0 iconst 0
iconst 2 iconst 2
iconst 0 iconst 0
iconst 10616891 iconst 10616888
if_setposition if_setposition
iconst -1 iconst -1
iconst 0 iconst 0
iconst 0 iconst 0
iconst 0 iconst 0
iconst 10617392 iconst 10617389
if_setposition if_setposition
jump LABEL67 jump LABEL67
LABEL55: LABEL55:
@@ -75,18 +75,18 @@ LABEL55:
iconst 0 iconst 0
iconst 0 iconst 0
iconst 0 iconst 0
iconst 10616891 iconst 10616888
if_setposition if_setposition
iconst 0 iconst 0
iconst 0 iconst 0
iconst 2 iconst 2
iconst 0 iconst 0
iconst 10617392 iconst 10617389
if_setposition if_setposition
LABEL67: LABEL67:
iconst 10616870 iconst 10616867
cc_deleteall cc_deleteall
iconst 10616889 iconst 10616886
cc_deleteall cc_deleteall
iconst 0 iconst 0
istore 1 istore 1
@@ -105,13 +105,13 @@ LABEL81:
iconst 2155 iconst 2155
get_varc_int 223 get_varc_int 223
sconst "i" sconst "i"
iconst 10616870 iconst 10616867
if_setontimer if_setontimer
jump LABEL93 jump LABEL93
LABEL89: LABEL89:
iconst -1 iconst -1
sconst "" sconst ""
iconst 10616870 iconst 10616867
if_setontimer if_setontimer
LABEL93: LABEL93:
invoke 921 invoke 921
@@ -120,14 +120,14 @@ LABEL93:
jump LABEL163 jump LABEL163
LABEL97: LABEL97:
iconst 1 iconst 1
iconst 10616870 iconst 10616867
if_setnoclickthrough if_setnoclickthrough
iload 1 iload 1
iconst 0 iconst 0
if_icmpeq LABEL104 if_icmpeq LABEL104
jump LABEL142 jump LABEL142
LABEL104: LABEL104:
iconst 10616870 iconst 10616867
iconst 5 iconst 5
iconst 0 iconst 0
cc_create cc_create
@@ -147,7 +147,7 @@ LABEL104:
cc_settiling cc_settiling
iconst 0 iconst 0
cc_settrans cc_settrans
iconst 10616889 iconst 10616886
iconst 3 iconst 3
iconst 0 iconst 0
cc_create cc_create
@@ -166,7 +166,7 @@ LABEL104:
iconst 1 iconst 1
cc_setfill cc_setfill
LABEL142: LABEL142:
iconst 10617392 iconst 10617389
iconst 792 iconst 792
iconst 789 iconst 789
iconst 790 iconst 790
@@ -203,15 +203,15 @@ LABEL163:
jump LABEL177 jump LABEL177
LABEL173: LABEL173:
iconst 1 iconst 1
iconst 10616870 iconst 10616867
if_setnoclickthrough if_setnoclickthrough
jump LABEL183 jump LABEL183
LABEL177: LABEL177:
iconst 0 iconst 0
iconst 10616870 iconst 10616867
if_setnoclickthrough if_setnoclickthrough
iconst 1 iconst 1
iconst 10616870 iconst 10616867
2006 2006
LABEL183: LABEL183:
iconst 0 iconst 0
@@ -231,7 +231,7 @@ LABEL193:
if_icmplt LABEL197 if_icmplt LABEL197
jump LABEL272 jump LABEL272
LABEL197: LABEL197:
iconst 10616870 iconst 10616867
iconst 3 iconst 3
iload 4 iload 4
cc_create cc_create
@@ -251,13 +251,13 @@ LABEL197:
cc_setfill cc_setfill
iconst 254 iconst 254
cc_settrans cc_settrans
iconst 10616889 iconst 10616886
iconst 3 iconst 3
iload 4 iload 4
iconst 2 iconst 2
multiply multiply
cc_create cc_create
iconst 10616889 iconst 10616886
iconst 3 iconst 3
iload 4 iload 4
iconst 2 iconst 2
@@ -311,7 +311,7 @@ LABEL272:
runelite_callback runelite_callback
jump LABEL339 jump LABEL339
LABEL273: LABEL273:
iconst 10616870 iconst 10616867
iconst 3 iconst 3
iload 4 iload 4
cc_create cc_create
@@ -331,13 +331,13 @@ LABEL273:
cc_setfill cc_setfill
iconst 225 iconst 225
cc_settrans cc_settrans
iconst 10616889 iconst 10616886
iconst 3 iconst 3
iload 4 iload 4
iconst 2 iconst 2
multiply multiply
cc_create cc_create
iconst 10616889 iconst 10616886
iconst 3 iconst 3
iload 4 iload 4
iconst 2 iconst 2
@@ -378,7 +378,7 @@ LABEL273:
iconst 130 iconst 130
cc_settrans 1 cc_settrans 1
LABEL339: LABEL339:
iconst 10617392 iconst 10617389
iconst 1190 iconst 1190
iconst 1187 iconst 1187
iconst 1188 iconst 1188