From 6d554aae1b6d0a7fdb3397d9b131d6a3505aace4 Mon Sep 17 00:00:00 2001 From: dekvall Date: Fri, 26 Jul 2019 22:27:40 +0200 Subject: [PATCH 01/29] Add wilderness canoe icon to world map The wilderness canoe works like a portal teleport as it is a one way transportation. I opted to use the normal transportation icon in order to stay consistent with the other canoe stations, though with a clarifying tooltip that no departures are to be made. --- .../plugins/worldmap/TeleportLocationData.java | 3 ++- .../plugins/worldmap/transportation_icon.png | Bin 0 -> 335 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/transportation_icon.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java index 8e03a1d651..ffa60d1bfb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportLocationData.java @@ -150,7 +150,8 @@ enum TeleportLocationData OBELISK_44(TeleportType.OTHER, "Obelisk", "44", new WorldPoint(2980, 3866, 0), "obelisk_icon.png"), OBELISK_50(TeleportType.OTHER, "Obelisk", "50", new WorldPoint(3307, 3916, 0), "obelisk_icon.png"), WILDERNESS_CRABS_TELEPORT(TeleportType.OTHER, "Wilderness crabs teleport", new WorldPoint(3348, 3783, 0), "wilderness_crabs_teleport_icon.png"), - + CANOE_WILDERNESS(TeleportType.OTHER, "Canoe (No departure)", "35", new WorldPoint(3141, 3796, 0), "transportation_icon.png"), + // Achievement Diary ARDOUGNE_CLOAK_MONASTERY(TeleportType.OTHER, "Ardougne Cloak", "Monastery", new WorldPoint(2606, 3222, 0), "ardougne_cloak_icon.png"), ARDOUGNE_CLOAK_FARM(TeleportType.OTHER, "Ardougne Cloak", "Farm", new WorldPoint(2673, 3375, 0), "ardougne_cloak_icon.png"), diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/transportation_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/transportation_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b5648c0ca1c2f71ad5933dfa924b24f7a445960e GIT binary patch literal 335 zcmV-V0kHmwP)+lc8?IFc5}+M-3>9#wJZNh%~stkbsQ!4F*D5vX>~# zON0;f4aOD_Qd(GP;G{`mRiu)F01r6v&b_$mA-W;71rwwrVYDmw~1(k hfWU4`5x?ZG`U8WLYu1jQFkt`y002ovPDHLkV1k>0i&g*t literal 0 HcmV?d00001 From 33f75c49176fa58a2c05ef781ad5fbd5aafeda45 Mon Sep 17 00:00:00 2001 From: dekvall Date: Mon, 4 Nov 2019 21:28:02 +0100 Subject: [PATCH 02/29] inventorygrid: use mouse dragged distance to determine if overlay should show Replace the time dependant showing of the inventory overlay with a distance based one. An item sprite only follows the mouse if the mouse is held down and dragged ~5 pixels. Thus, the overlay will only show when you are certain to be dragging an item and the time-delay is unnecessary. Original PR by Jbleezy. --- .../inventorygrid/InventoryGridConfig.java | 12 ------------ .../inventorygrid/InventoryGridOverlay.java | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridConfig.java index 33c6868c4d..eda6b7cbb8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridConfig.java @@ -27,7 +27,6 @@ package net.runelite.client.plugins.inventorygrid; import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; -import net.runelite.client.config.Range; @ConfigGroup("inventorygrid") public interface InventoryGridConfig extends Config @@ -61,15 +60,4 @@ public interface InventoryGridConfig extends Config { return true; } - - @ConfigItem( - keyName = "dragDelay", - name = "Drag Delay", - description = "Time in ms to wait after item press before showing grid" - ) - @Range(min = 100) - default int dragDelay() - { - return 100; - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridOverlay.java index ad1e01ceed..a179c3f5f2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridOverlay.java @@ -34,7 +34,6 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.image.BufferedImage; import net.runelite.api.Client; -import net.runelite.api.Constants; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; @@ -46,6 +45,7 @@ import net.runelite.client.ui.overlay.OverlayPosition; class InventoryGridOverlay extends Overlay { private static final int INVENTORY_SIZE = 28; + private static final int DISTANCE_TO_ACTIVATE_HOVER = 5; private static final Color HIGHLIGHT = new Color(0, 255, 0, 45); private static final Color GRID = new Color(255, 255, 255, 45); @@ -54,6 +54,9 @@ class InventoryGridOverlay extends Overlay private final Client client; private final ItemManager itemManager; + private Point initialMousePoint; + private boolean hoverActive = false; + @Inject private InventoryGridOverlay(InventoryGridConfig config, Client client, ItemManager itemManager) { @@ -71,9 +74,10 @@ class InventoryGridOverlay extends Overlay final Widget if1DraggingWidget = client.getIf1DraggedWidget(); final Widget inventoryWidget = client.getWidget(WidgetInfo.INVENTORY); - if (if1DraggingWidget == null || if1DraggingWidget != inventoryWidget - || client.getItemPressedDuration() < config.dragDelay() / Constants.CLIENT_TICK_LENGTH) + if (if1DraggingWidget == null || if1DraggingWidget != inventoryWidget) { + initialMousePoint = null; + hoverActive = false; return null; } @@ -84,11 +88,18 @@ class InventoryGridOverlay extends Overlay final int itemId = draggedItem.getId(); final Rectangle initialBounds = draggedItem.getCanvasBounds(); - if (itemId == -1) + if (initialMousePoint == null) + { + initialMousePoint = mousePoint; + } + + if (itemId == -1 || !hoverActive && initialMousePoint.distance(mousePoint) < DISTANCE_TO_ACTIVATE_HOVER) { return null; } + hoverActive = true; + for (int i = 0; i < INVENTORY_SIZE; ++i) { WidgetItem widgetItem = inventoryWidget.getWidgetItem(i); From 4f2df0440b43d7b60e718d95ad75bdbaad2eb348 Mon Sep 17 00:00:00 2001 From: dekvall Date: Wed, 6 Nov 2019 11:49:54 +0100 Subject: [PATCH 03/29] emojis: reduce file size of emoji icons By stripping metadata from the images and compressing them by running `optipng -o7 -strip all ` the file sizes went from 15kb or 1.1kb to around 0.2-0.5kb. --- .../runelite/client/plugins/emojis/blush.png | Bin 1323 -> 386 bytes .../client/plugins/emojis/broken_heart.png | Bin 16185 -> 135 bytes .../runelite/client/plugins/emojis/cat.png | Bin 1501 -> 558 bytes .../client/plugins/emojis/confused.png | Bin 1225 -> 278 bytes .../client/plugins/emojis/cooking.png | Bin 1320 -> 375 bytes .../runelite/client/plugins/emojis/cowboy.png | Bin 1371 -> 428 bytes .../runelite/client/plugins/emojis/crab.png | Bin 15828 -> 348 bytes .../runelite/client/plugins/emojis/cry.png | Bin 312 -> 262 bytes .../runelite/client/plugins/emojis/dancer.png | Bin 15813 -> 341 bytes .../runelite/client/plugins/emojis/dog.png | Bin 1457 -> 517 bytes .../client/plugins/emojis/expressionless.png | Bin 1154 -> 216 bytes .../runelite/client/plugins/emojis/eyes.png | Bin 1406 -> 456 bytes .../runelite/client/plugins/emojis/fish.png | Bin 1280 -> 329 bytes .../client/plugins/emojis/flushed.png | Bin 1434 -> 489 bytes .../client/plugins/emojis/fork_and_knife.png | Bin 16173 -> 116 bytes .../client/plugins/emojis/frowning2.png | Bin 1215 -> 270 bytes .../client/plugins/emojis/grinning.png | Bin 1348 -> 404 bytes .../runelite/client/plugins/emojis/hearts.png | Bin 16179 -> 123 bytes .../client/plugins/emojis/hugging.png | Bin 1374 -> 433 bytes .../runelite/client/plugins/emojis/hushed.png | Bin 1285 -> 341 bytes .../client/plugins/emojis/innocent.png | Bin 1439 -> 496 bytes .../runelite/client/plugins/emojis/joy.png | Bin 1444 -> 500 bytes .../client/plugins/emojis/kissing.png | Bin 1181 -> 240 bytes .../client/plugins/emojis/neutral_face.png | Bin 1196 -> 253 bytes .../client/plugins/emojis/ok_hand.png | Bin 16210 -> 203 bytes .../client/plugins/emojis/open_mouth.png | Bin 1229 -> 281 bytes .../client/plugins/emojis/party_popper.png | Bin 1403 -> 456 bytes .../client/plugins/emojis/persevere.png | Bin 1366 -> 414 bytes .../client/plugins/emojis/pile_of_poo.png | Bin 1286 -> 349 bytes .../runelite/client/plugins/emojis/rage.png | Bin 1233 -> 295 bytes .../runelite/client/plugins/emojis/scream.png | Bin 1413 -> 475 bytes .../client/plugins/emojis/see_no_evil.png | Bin 1483 -> 540 bytes .../client/plugins/emojis/slight_frown.png | Bin 1243 -> 299 bytes .../client/plugins/emojis/slight_smile.png | Bin 1253 -> 307 bytes .../runelite/client/plugins/emojis/smile.png | Bin 1321 -> 383 bytes .../client/plugins/emojis/smiling_imp.png | Bin 1250 -> 304 bytes .../runelite/client/plugins/emojis/sob.png | Bin 1349 -> 405 bytes .../plugins/emojis/stuck_out_tongue.png | Bin 1314 -> 367 bytes .../emojis/stuck_out_tongue_closed_eyes.png | Bin 1344 -> 398 bytes .../client/plugins/emojis/sunglasses.png | Bin 1311 -> 363 bytes .../runelite/client/plugins/emojis/sweat.png | Bin 1081 -> 133 bytes .../client/plugins/emojis/thinking.png | Bin 15849 -> 380 bytes .../client/plugins/emojis/thumbsdown.png | Bin 1223 -> 285 bytes .../client/plugins/emojis/thumbsup.png | Bin 1218 -> 278 bytes .../client/plugins/emojis/triumph.png | Bin 1433 -> 490 bytes .../client/plugins/emojis/unamused.png | Bin 16276 -> 352 bytes .../runelite/client/plugins/emojis/wink.png | Bin 1303 -> 353 bytes .../runelite/client/plugins/emojis/yum.png | Bin 1318 -> 372 bytes .../client/plugins/emojis/zipper_mouth.png | Bin 1296 -> 350 bytes .../runelite/client/plugins/emojis/zzz.png | Bin 16185 -> 135 bytes 50 files changed, 0 insertions(+), 0 deletions(-) diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/blush.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/blush.png index 7024942ef0f45b10647ef71ec21a477b4b4f0d1a..ed24b9dbd537a82844b89755cf4e5e81144c3f4f 100644 GIT binary patch delta 45 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 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/confused.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/confused.png index 0d3275a23660e27b81ce51dd679b08be5d17e1bc..d959e8398c19d892b2b378ada52643399e0899f7 100644 GIT binary patch delta 105 zcmV-v0G9vB36=toB$LYnlwL_mL_t&t9R^xG*lI|V*r91Z5CVyZ!~rhA=eFr~sHzD|_V@7b z_y7H$$BTu%8`p1NPY}e$T)$ij*5GXq;jhAX7VxqSDMM%wR#07a0g*DG2FRSH4ucX< zjmEJXpqC&*V`g~>4dn+U9a>>Ez=VCv!EA!)P5O?ij{rn!VA!-1)XOVV6lod>>JXo2 z^G*g-&Hiy042~Dd`uK=08dP!*+3QQ#fCZ3B`c}>MBtJnd*p=`;xMnDF0fI&n)S^>E z`68KtE+F}EjMllHI4Ou>ju+#R=x#E?axsP#87@k*oWzO}%aKbDh1Fc6B9-Lqk`_KC zs47B^#4z=GJzVbzLwA_rL{Vhe2os6W7(sgt8>v2RdtFTnGVpZQbdU*cGO(y>a1bM@2t|l4h zZgrsmh`o^xxF#-&T9ctZY5^PN0LRCLSVg0G(NJlv5{=Vp571~s7X?ia zbU}>>O*<>`SuPdj<%}RiBN>iU#CTSS#Fea);>EO(meWmc&i0UM>!7J^V(levY*nt5 zae<1UTZXXK?1EwyBIs42LuN8T)dh0bA=5Ts-TN{q(_+*zaLqAbWL;>H3wf5z6@2)A z@h|d?Pt6~LonnG!`A_pSuW&~O+vQQfhvi`cHl83CkBSNBx8N~5QXD8NA7=CKuJ3y_ zrM#NTRutmx^?k3Wv-i(Q-|L&7U&-8_nleP8}YyMp0-tqgU|5?{P*LpIorDr#6craPqk(}5a3Vpuz zm%p!V>h6B`aK6z72Fj xK*U>P_ITD25cqR7nguTj0m@Luk23xwzWnnJupBV>n*aa+07*qoLB-6 literal 1320 zcmbVLeQ4Zd7>^FLwodwoB9oyZ6j#>mkR;SuTIh5g7vkLwt_SP&EYkVp1ci6gLR$PFzXm$ahDO2eM zGElUEt!F_qf~?wR!#0+c0UxJpNwP>v^PmTzLB_o56%$4H7N=_pRo0>ujyjV>(=dUG{hkj2&| zU+@&iioWj%Bv~$(iE@On-CmOBd7h*gl3{SDfqMg%uLQW|HB>E#z*Akr@eSKTLyJnm zF8Of`GOdJQI+@I}Var=e6igWzC=N*z6lt1aT#MSCFN42ntf=kf1{^@jz_UxP3hSXa zRKYNJ*LD;tLN>xC*MLP)`bAqUnZWW>VjP1ngl1?$tU&9W#__n$@;t8T(HLG}V+>A5 z02k3CG{-ivRXZ!;sRY*|aZ!qkMj4ux_$HcW6B5UZ49!R_5>v&dEYDXg6;yp2(02tJ zX}u;^NV-7rZ8vAz{najLFWSEC6>SGiCc~<8=(^2@rP*b#F)ULhY7w}`HlVe-wuvt0 zSuj@M@bBWU;I;poKN6B6!)EzM^Hi^3M~2(wQGkc#VFDJMAQz6x;M%Wmgk$!6dpajI zl99P9zw4!)>#1nsA-R!?cBy@Tp4hVEnHM^GiWh&JT^Nl#`k4Fj8^;o9`H%7Kb8|mm zJyYH_G<;=d{G&6Ujl6PXi*Ap9F*$!}>b0X|>CW!b&Zi$X+`0LA-P?Zb{SWt!9QuCt z@=uq4eNfKNT>RnnqhsC^dlruK)8Aflc08Nu>i+GkcMlwX3(^_or-q>*d^y{(@Lv|P zd!N?{kwHpq$pv2)CN5k6$aRm@Bg5z9+Qa7`KUaU}hJCdS4M%G3*^s|&=s=#n*VXqRSAV(XouNcc9pr$dq^x*6(X;z6BJk&v diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/cowboy.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/cowboy.png index 9c255c613b6081abcbb7602d27361d8717b7399b..ed6f1f03637e1b7020537915fdb1c48a97ac961f 100644 GIT binary patch delta 152 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 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/cry.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/cry.png index dda95de8f96a1f27e1893d854b1af7f022d26e55..d13487b948f46db2a0fb1f6497e482097fb3f49c 100644 GIT binary patch delta 120 zcmV-;0Ehp$0)_&RB#}vUZdpl0K~xAG1;K{_!ypg@Fg;-7mY&@HqehY>KoSXnM7SL| zZba;3FSU+UXtN4cvw>}5Zh&=^8Y|%aLMyKf9-6D13O#|9>&N*72r20t^6S W69gzVoSv}&0000|Q!~hv28< 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 E0?*VvHUIzs diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/expressionless.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/expressionless.png index 4d6904de0622e2954c7ec4e765cc0540c0759818..1796dfd73e4e44ddc5e19995d82f249a5edfe8d7 100644 GIT binary patch delta 99 zcmV-p0G$7V3D^OUB$LYnTv$U%L_t&t9c{r!4uCKW0KtWX-uC~m#Xdxl5HlD^29!pT zPNb8ssg#Aal!vs{x^vfh@nag(K@jF4ogmVQ(kKR!;RWh*0-s9xRe}Hj002ovPDHLk FV1g%*DlY&4 literal 1154 zcmbVLO-K|`93M5p1j8Vr^58I17&JQ{`{hi#sXMc)3+}e83+~akGf$m#=1ntCceF#6 z1Vz_^_D}|0ODK>I9!#i1g&iq89tsR;uKC6aUUAQW#B-nOGhP0r%f;f^APA0SKh!FMb(WPg(5Cy zdSwln0pRNdJkusgkaj4%pS4j?k0+) zjProa2?3rnO+T(}Z5QX^Z#VYUb_)|Wl(B)7BgiDgBvj9So)nG_uB|XZsx~7S|4#E*ZD^+>+!wX?Cs05SI zXh>89At_0Gm#QR$lprM%!AK%m#ilJ6151Nd+Xk_{i;WzJl@$j9jGO{Oqt!0R4I_-) zVPw;a;#WONxAhyAj>_&izf3z(tI#pVp`LP(NpI&_Humx1-{RlF>;IcSjyT2n&GJX{ zRIf-!`rExxAcwtSf)<$|hm6XPk4J8jF$?B;3(22Lndi68u0D%@n(KUgwdMQk^u~*> zFZ0UgLULs`Hg~6OYcciy$%VHMgRky$TZ`QUH{E}2orq&NpY8kk*P_lmt(3@PDy?=E zyya38ReQLJ3O*XGpQ%}_ao%|wQ}-&B2iK=7m6oLsI#?^MYG4h%tSweLrq0tqC>2GhiCTZ@XO4rv`?Q?H{*o1{sTUJwF~+otePO$aR6 z=i=}C|L?!O-4cGja__;t2!d1w8@Y(JTJJ-9;MebdJPeluhCgPss_jOS*8oy4s&Rk@ zWxfMM051;oj)EEl+0!pYV@530#0aWv=PiugloODRAT@Pnf)~1hfyP0Hr1-Ghmsc=U z5`EY)cZdijSkNgo4r-uvFdP*Iy9HXr>T1y%lYs_gVDP9Z_b57J`mjyA4BT7SIEHRQ zjBX#cB`OwbL0MG;sM}821k&k6J+z&4(_V+`S=2$06i(1M>9P?dL(mLCqT3G!y=h`Q z6X62ezTnA+bs9#3!SQ4=X-_)ss@8#%G)?1#19v!V5Mk2?6oWTyie6Q=zyV#*q=X@< z3Tj#8<7%Jb!=Tcw5adKCv}0J&w-W_ZhMRl>C+!3-%T`>QXx)f_zh&%-)}sRnfJcC? z_GtpFM|)M740CsXM-~vOVVX4w7KQKORH07>iV@^|82n=wC6VzuMOq|*$L91>z($cS z(&nW^r_C*r4$v-8Zcp4@wzC^QK(Q{5hjw}>%1@Ghx*-todr68Vhz5#g32&JjRCI$^ z1W@)ZLEqb4$9=gBs{!6nwWzB0l)Ip%Q#Dk*Q%#^OYgOHYRv(iTQBCSctTJsy%>hm7 z2Vy`|Wpp#ojI@h}e;5B2U;MB6!=WhLYLqh5ot3qXSiCD!D5Y~N!)HI7Tg;hnoMIXp$8O%fGnewza+!Sb ztE=M+nZgm=>0)XF%`d$eJwBVt@^b&=-Pz06#Z9h*O{e`&d`DEU!>&-|V0)Typ39vW>HX{@>hrm^kw?ZJ<{G}R9YPPd4)+Yn zmzItrL+`q$>L2~O?Hu=g*Y&3+?k0seTU9l(ebQL1eLVZL zaU))+RMZYM3IYb&m>}ZT4IvFpLWs+d*hPbumpydjVOjwp?TYvZD93G6c&Mg{BiY}% ze81m!pHYf^?QM^>Q54ml@0Uw~48F~q$Unz#EfVo4&JE!*s^YrlLMmgR3Z(OvHVjKp zGbZ+(gDHyIG;XRxc&IQS>c|RdflkP`9D=5(RJZSF`Uu2y1rD3G#Qgd7NrpBJiP^;$ z!UZP_Yi57Lh2=(3)f*$aU@+ZjI^~Omz=Bw#eQVVAL|4XphypW8b+vE~|8u_X7d*&-*2 zsbTDh99OT`L-l9~xx*X~1c3`jxJZO08mu>AW6fu6Z+nYDhMw-44mOcZ2aH+;jbVu) zp00*qIfcSHvF)uTilmJ5HHQPCFlSjoTr1ihF2R4@*ihS3CmhI?pohj>oz$bcy#*$@ zyS1S}k$58xx+W=#HYy{1%z`$~%MwFgLWXIGdLk-RV}iy)L$9zxEC$$Q8~_%?t41=) zS9HL`7SBd_9whl(k{1%OC=WnRAmEHFLSxU2_~7y)Lrol{|~)20q+g z{Hu85|K^V)PH{oA{HJ+ZSEM6@?fNK?!}>5mn@o^PMrHHdSd)yIs|={Q=RUjHHT{En z?1p;uT6ylO^3flunNx!w{@yb?pW1)A`@oNd!xzMtzkl|~r7r(t0_u5fK5o4uOr4b9 zKA)ZbR(j=3W_CXE;)%kc#q!Z>`8OBTxvPD%XZzk=l=h!_m`y9qrOfLK=~vGVHkWd5 zohJ+*(CT#}I&i62UcQ}0ebRX88-j51az^!kF%DdOU{bkX9{j0e`q#-%-*5ITFF$hQ z?kD=MXNQZC_qOhSaQUe(noDo|eIdVXq2s*l@S@|NS~p5G3F zar@`5xHfdmL4+jmS2+&NWN4s{*ek-pNo_l|q0slVEv7cVxB6WdfiSCl{B H`NHHs6Ys^i diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/flushed.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/flushed.png index 2ca84e2af01239b489b3d1be13169caddddb8b18..9afe0d14885af56163ddb6d8c54d15a9f667e0f6 100644 GIT binary patch delta 162 zcmV;T0A2r@3+V%pB(uu{FadvnNkl&xhMeLYDvH`*;#W7 zVqB(-owQJx%;Mfv@;!!P-(5j?5EyXAR@p4iUpdo>& z2Qk2KEiVp$G6Y$(kB=v`M7WY-CBe)XI_9(>Lo|Yv?M%xI+Xyr?3F>*#gH82b#!#N~ zVAYPWB`o_v17F^%fU4F=oNaAnNe+x3!Xe!gQm$8j;B&7bIN9xlzN;XNfNhMajVq?HB4%Ys4;1isBSAT&_HDsUez40^g0f*^;(E5xF@oG6$wJk7{BVYc9cV8pekt!gpww;QW!tML{Y;4z>| z%?b}2kc&_gQVRqyUk4y0n!%;+DW&~XZMkIzngRyupv>^ z7?A}9+dQnYcQX3>0_4|#gyU?eqd6AP+>UN_{OHtE6 z;r9V9s7M03m}iP##fN_v{}P`2uld8FQ@GJA|7f1V73@f3yD|#!urf?QgcGE|QE_(F z4#P1UidM!0`Zr-c-F2{bqyEYf{aRG-IJhuanY)wGdu#MdHTqyAbJ3q0|1Cc{oXt(= zrf)60^`U-_)dzRC*A%^4yRln-_^Lf4h`RTsk!uRzvSAv<$_}!oP&y9Voe~~zrdc3PGtoO&~ zZohx}om4hA`$uM=oqf8iEwV6Fmz$c^KWZ31@0}m%ke}O}%l@97xic{__U&=|r15b|_o=H}!4uj=uZY@f%4#+BWujU+Fw5%w2f$m};gej7+Jl?3?(|7Uo*-M|aTllF9R x4B?PXo?+FTxQd0twCQ3ZXWMfJ6J}mUhR@1;eO=P#*MQ0xJYD@<);T3K0RT?|983TJ literal 16173 zcmeI3WmFr@8prpRDlK)_G<6A^jgmB^r34CXLn+V}s%(-CY)P_dvOu8j?(XjH?(XjH z?ykJEfsk|vdpP&JAMUwla}FfW{OAA7%x`4(%M6cAT zClNGHMpjEd-*)l5XkQ!)e5!NU?PzWOScix=@Bvd^d!B)z;CMdRXLO(ftjFj zp2KXi*p-ezzB8{9{AP+#KF?W&P734)F%9x!wUNAF%0}>{{xX3c69@3*3V%$h2oOmc z^F%^Sh6)uZCJ_iRrBI<1V!W&mU+oKiscZ(LGD;Jg)f|Wd`H3`bRibEWYN~&#*q^c` zpqN6TK!qYyBocrc0(+W;#vKBSy;f!tR~`*v*V{-dO;Q#flNZ-f$#fu}&oq?%$r_j0 zs?}yUWwB?`0~}EYZbdPFA!;_G-kf$iig0(*tJ5BnW+l)l!cHaI^aQA0%X^}b6wte@ z(dHphND5)0y`}_8 zg$~CQ27yc-U=&Ei5~)CEG|B{+fgtpHnNf=CL@G4bH11WE)s&Ye0z$+=BAF;yE|Fju z7NQ6U4VH(7U{bk4D3*!j8drJ`YmT(x7CVhw^h8$ANzij#giED5y+k0x6?%a|D!~K_ zTqqMLga)BdV$dlt%-~AxVb76TL)gd^!Vqes%+3vC#cg(iS-gRK*XqsQVOdn2%U?<6 z>{H%o=CHf_1R79f%7*`Tu5#Gj*pKq>=ESRo+@fgTr& z19X@iBSd0Xeh+)@ZKNg=7Bx7v6#}7DfQe$jsV$NzC0HY&NGTM$QaNkop2SWW=~UcC z1SNnCr_Ov#M7mB5UT`q;SdjDTcOWeWD%IY=mGy61?&g{{xyy3bPXHMrd%FfcA(`t`x~#q_dM`)`W6sDFbOt^OEDQ**cnXx%L3Ke^}m=}&r7}4M* zn^4Q7Qn6Hp!o{#7l5`NJSPco@L+s4)kAbt<>462W#<<*!9zvEebE9~?4m(f4%u?{O z4c_z7>=*qUhhz3*=imI{9?`#<70Sgm0s&zUIb7^~AeF-f0bvh0T?@yd?1y>1p#3XIb7^~AeF-f0bvh0T?@yd?1y>1p#3XIb7^~AeF-f0bvh0T?@yd?1y> z1p#3XIb7^~AeF-f0bvh0T?@yd?1y>1p#3XIb7^~ zAeF-f0bvh0T7I0rS6_X#fz6HQKDqYlBG(ODqXsC znKEU{mMvSZT)Fb)%U7sSp<=~~l`2)LT)A?UDpjghty-;Gwd&QY*Qikg46|mv4{{H?bih`>Y;2xq#Bod3o z5{X1AmC9r?xm+F)5CE>&DwWD6O`51ws=&ZNwOZY@Y13xSngs;~HE-TLI5=3N(S(GA zgocK;Xwf1pEG#@cyk*Olty;Be-MY0_tBr_=Xw#-mWMpL9wr!)LqN1atV`5_3wQJYD zeftg_I>g4t#>K^T?AWnWr%s(acka@qOV_SlyLIapA0Ln7xK5|j>-7c$xOYhyjmCt8 zgv7)|k|eu#@1B&DWHOn|X0yd&p(x5~wf5-I!)CMD?RJ``larHEQc}Q0VTZ$!mX?;D zp5C)(&tAQH_3qufPoF-0`}XbEuV4TE{Ra#fFmT|&L4yVj9z1x+kRd~d4jndZ*zn=Q zM~oOTa^%QSqehJ$J$lTTF=NM$9XD>=`0?W>Oqein;>1alCQY6^dCHV2Q>RXyHf`GU z>CHEY+dUAJ!C`t|EKY}l}IK79Ddkt0Ws z9zAyK*zx1XPnAmsE?vHS`O1|m zSFc{ZcJ12r>(_7GxN-C5&0Du_-M)SM&Ye4V@7}$4@813U_a8iX@bKZoM~@yoe*E~! zlP6D~K7ID=+4JYmU%Ytn^5x4{uU@@={rb(DH*ep*efRF&`}glZeE9J3&?&!0aT85u_dmW^dL038((oq;^wDr^a& z2H~2Z7{`rON9X$?JY?UxHyKMyH5-5ojcY%?EOD}nqrQEL$iAX)Wgn#aDJ1@a!V(Qk ONO(wuW=-?>0sjEWP9^{V diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/frowning2.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/frowning2.png index bbc46462e141c3547f1b40c9e77f045834967254..d0de7f47a4620bfa83eb6b5b52ac66e96e83f2c6 100644 GIT binary patch delta 105 zcmV-v0G9v13627gB$LYnj9y7eL_t&t9R$%#KmtIp z**`d40Eh9$;tRO%j%;TD0N}hD-@^xDcrMr1-;2ZqCQ<-O6{z|HxC{jWj?x)f00000 LNkvXXu0mjfnUE;Z literal 1215 zcmbVLOK8(z9FIC0|Uwu31sk z9mL@fFN%sFJBZ-H2cjrL)PnhzAdP@bzU|r-w1bK=M8E`~Cj!p=6?U zC-34&M|Ym-vm>b=V<@K+A5OW{pFXafhIfChr7 z=+`q@l#TBbRcQDW594zU3$qELq0zMzwHF{V2fB4LLVX^6K#{r@p*n(bHf}{hkKR_Y zLAsR4sHI+2(5S{eWP>YW0Rtd~bd5gK5#0zitt;Zacg;}bGz9fVs2QiS@gy0AHXwsO zo>sZ~Fc}hjTu=!61G`8+%kc~=FkFCUIgu4amLq2$3R|u3Ca8Y5_Dz(k5mn@&wxK?06y>lV_XNqUM(4i->^!k*5AU|8|^ zoUrN4CJLvFaTSZSv*YszGtyM+yTKoz%Rs=s?F9b9?$MJv;hxvSc&d;&AJSgkT z$LE@5o(~4Xp@2WiaWa=ffQ%U{h?zQP^pZRbV-ALfP$n0SJ0JSw{jOOD_%>qzd)$iK$pw@>cK%fy#Qt$N$y ziIKqJ&Z;*zBKJo1|8(kWW9_zV?!?#k8|0yzRpH5phXixYk8`KrRV0I3*59cZJoCJJ`{~m6RBJz9 r_4yn({K|M+d8I1x>Gk^;UsiV!cULT3H2Jgr2bL#dazeV++%@+w)sF*Z}Zm6 u?sEMTVK6DBY@dmQTIJjylSmSfBzNV&3=#Rj**^dP literal 1348 zcmbVLZEVzJ9PijXm*EjfjETA|rNcSUzFzNcZSH`(YwJ$#j&VD}8O=hkeYTZd+p~SP zyN$p=O@xF*4Duq7jIn??3{gmkX2CJC3?@sA(L`C|M~%h=^_#{hKHYZH4+}9gX`h$= zf4~3l|8}S&^P<1u=>`nL{K#g2fUyHtS@QDmso`P~7cG}&rtU3UT>2?9&NmK0s zS)l5Jug!u8hSd%jxjf9LQ=(>@l?{Wnz-R4LwTi z45pcMDFJ$o_8|v!4rOxMP@g8~#O6(Sq#_~$6F?QOm_^GKD^X&BS44a7nkMiC6WA9e z7DeUL9eBca03M`5q{ar?@UTF!L7|P~U%)wr4bhB1vpmVLA|r?li!VI{^5*E>VpdX? ze4$g6=!LK((sa38rpf`zc6w-55CodxXpSS11?di2P_2-b+gxRkfU7x12^zMAdyHzq z?uStVDP0V~ETz-S#Fo31D3mg~qLyfuVrbL!;##nFVHW%=V?}E>H&_C67Pxl5qoI0q zH&?+ZcMo>t86q{}Hpf6kQHzqT^_#$gNhwO8Ka_6hA_sVmXY~LX3ThfD6nK^_=vvDyV4y*9MnUb}=R5?Q$U&nramzo7#_U{2DktBc zOLxoIcb6l7%)IpXoz!2Sr|yo6r{OcZ+gJT|L%DFY@5`~!wZpB`C+RB(Tkc*Gubdm6 zImLYQf$-xev7aXrUtb7+`^9HJT-);J?XB}4isJ`}{jd6G&#*U-Q+v9akL}CMO^wf9 zKR;4#935=Bc-(^9AHDRR`|G6q`%H4`7&ZUZ%{!A9?_HPPA71yTNM_T9l!TTL%w{_8Kg@%TzMWwa1M1XRt}9$Dpk91EN+){oRo)i|+; z-+I#L3-$XB9N3o8c*y$_0Gpl(>~Qu6lKT0kM?e%Rv#TbQa4TBzE@YzVBg<(Z0&G7whQ^k Ml5$469N+c&KPTkm`v3p{ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/hearts.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/hearts.png index 4639733791b63f61a3ac9950b347f09b01078b0e..0582043360740fcb9324ac567049c35fcff90c17 100644 GIT binary patch delta 105 zcmdm7S3N-@nUR@+fx$zy%pORw1^9%x-qmyY|NnpDzjMk!5vGzLzu^B2Pq!O*0eMQE zE{-7_vdI?q%?mr58F@_#3}hxGR3seyu(0XjasIab_6&6^Ikzt=W8DT+&EV+_6GcUPx~rel?aai@%*0)jS(n|BY)+;hHM?zQy2tL` z%Q~Q8zrDWp;)$hGO8|fqt1I;l@=HGV9mn4d{gE~NbANB;QUbsO50lR^@Zm>~0`R;a zw6@Z%<^|h}x<$v2TvQx%d$=|L9AEP z?4)VWmZW~aU+k;JDBhN!Wm%G}NQxrj8e*~+rp`bNlheZ><2ZGccyZ86gD4b8T*r-e z(@LR05>1{_zq-9dV7RGjjJe3=Z3;##tt+uzwb?adb@Ea1MPbf>Yy&plVApLE`Z)nlt#%; zv>@d~&LGZ9oCfU$0Ex2D4Gn??ZbTWnWpipc)MX5%*|cAd13dkmPCfE=NxxR>RV)z1n2v|6Jsm&W09t}|g*!z6V=4~<$L;FhbZr9fAaMWf_cqS4k2(S>bQR9#Qg zy|(EqhBXeIbDs%aM{#f!`RC%On=P206DNpF-b!ISdnYSwL^YfKb}-u}-&K+9D4M95 zx*~c$X_KQP5&D{MYARF>Q!Ps~?$b8m1m&UZ|I@LWai2yX4E`=!$LV8lvxN zj_7!R-p~`XJy5f<#AK9T8o1u zQ9JEBFROLk?u79$5Q=~fhVjxrHx zmnrUPG*ov|bZCvpHZ*c;WD;aplZw%d{Gh!z6GO2NjTVWKt4YVeH!#uU1u9fy>PoMO$&21CnvgHi#kz^n}xeymgW`byvSKjPG7tQIN4?g%hF64 zU4M%lJDuIEzNyIgks$dVx#nfs^%C1PFVn75&sV}AC4I{pN)_k4$c1AFV-sJpQPt3O zRWD0)G3~J)3{YpQ9^iXOLbiX1_vXxp7Unu$TI84$MvlXUlDiIPJK(SsU$*f*Uz%L> zXEw*lv2!>7OnY=Uqf)VW5()_0|d?=OUqJXeX zj*HEQQaLUP2;1bi*nB9J|d?=OUqJXeXj*HEQQaLUP2;1bi*nB9J|d?=OUqJXeXCa$IFtFtJ?@5}b_i?P>#v9|F`wSu>@(F9=sNdVq>3xK~4@b7N` z?8*TAei;D!0{~7&@4kBT9013``h`~GcCmhNfNSxG6Zk(8c<1bG@+SK|>BidT0r>R` z`6X;gtM%p9;O9@j|K!-W@`K;KaQn{rlh=ND;>&yAzxmkp<Szszd+) diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/hugging.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/hugging.png index 146af729064b96a972807421cd21d656c164409d..4c3f94b269c7c6969e0d2c3fa3b6a7de8d5cbeda 100644 GIT binary patch delta 153 zcmV;K0A~N*3b6x_B%{j%0e^T&L_t&tTQ$eU0m1+P1i?KBkOX&kcbDtGF&=^W4Ymz{ zZSxN#`vq(anRJ}Zq~k2c5Rgj+M|ShYt$LRSw?900000NkvXX Hu0mjfPB=sc literal 1374 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D72XiEBhjaDG}zd16s2gJVj5QmTSy zZen_BP-lO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl^~9a@C{IK&M!(;Fx4~DO*S;PP%yXDGc>id zFf!3mFfuSS(>JixH#E^TFtjqTv@$SMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}N>@2e7^0=Xz?c(ce=(9}l>FKkE5yj>M!KvA>6${-5@K-7WZas?fjV?(e#|pEq+? zhH<^^S>wl1&llSr|DEu>vC6VPQ}k0G&-Vqg&ziVC_w)We z==i>0@LeDOugyk(kGNb~V)k>jW|}L*lX|Z23*~Oi)Bd$y@B4h2Ii=D+*XjJ;X8O3E z>)&ag&;2~#=14Zj^FP{T_h%2V&|ru(U?>GrRwY4x!T-qx4CV*^gUYWuPZ!6Kid#14 zuJbho2(Vm`bYK6FVdQ&MBb@0IlO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl^~9a@C{IK&M!(;Fx4~DO*S;PP%yXDGc>id zFf!3mFfuSS(>JixH#E^TFtjqTv@$SMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}NOLId5 z%haSKU4uju16|WplVsgQLlbk|L?c7tSm^wL{!Ss6O6_+IDC8xsd&IH;G)oYGdua$FAYGO%#QAmD%4lES} zWaO9R7iZ)bC^$QVV%=OpBRn%NCBM8_6BJDlU%R9hWtOF;xE1B+DuBb;Diezvi1R;0 ze+s$brw??LJ}9vuB_5a%Fhzox@T>sjz%x^79xw+L0kg^}_Y>N{Y*rWG6XN>+jBlDN z!;fR0|IYY+I_SQwM{{eJ`niQBn>*EipYT2~MK{Nbd2yB8%N_fOINxZmyV9+&0yichxKZ|l~$x87!Z zkH*P4M$fl9W_d8JY*53Spz}R;TskoKX z=g!w)z{4Wz^nUO6dH?GL9xEJaoXBrIDOZ<+B~Rmlifq@adx0M;FI}8=M)%^QdyCFq zSocDuJS^Z3vx>6uf#jpf2iGx}tN&2HD<%1&|Cry*leelWeD?gl^5*hqp#%o)2#$nS T!Jpzl3mH6J{an^LB{Ts5HfGJs diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/innocent.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/innocent.png index 01ee7c2f754c917c80a392c4ab59b4abad4c6a0e..a77d4f5ac2dd4a386367d51e52935208e85e23b4 100644 GIT binary patch delta 161 zcmV;S0ABx}3-AMwB(uu{I01iuNklbXYcys5*S>4 zI$J#jj2nNybJI_N3Kf9+XG~@xG#N&Xc9#9OaApatEQ)MIK4%G$fisY}Fc)W>n-1ArrbNvotM36t{~(JozRCOj zJiq7ne7#ZS-I<;Ba2A3f+3s?uPv7-<_a?Zys2nfc9@1R3TD2V1Vw?gHhad+4>JD@D zzy~;?>E$UFywa@fe}GRAl~0<{sOxFjCo_y(Y%0Z=bWcI?K`7>0_1 z9jl={geSs+kXW8jKy||F=MxP)Enp>2p~Z0q0)&Caq498|q%v_kwt~yRv;K@@=!%He zV8>QT)q1K>R#pH?8LbAMG~3W3+DKBg&15M=O$2Gh2^uFY27+V=njuJZZD7!vA_N(q zvuw>4yxFmkrbQSWkHuofnAs>R^*Bk>G)|aslgR)j3~H04adCsB=4B9^K;;!NqKUGE z>WExGj%s!cGF^2c9PxP8fhBb2I1`kNvE_W@Oo zDm=_bFfXGFV|Qmmx*%l3>{3LS6t2-J^U*MnG`G`^!5^a_3Jf2lIJ4PC7|aAA7--&N zHE=;d830dNY-W>%vf`KJ#!MAdg=9@uLvjRVSv~7TXhDrA335z*LQm7G*G`~_ z`+!iU$YFFP&WyMLhkxh)s=n}FKd=CSXmqtHrNuR0szP}_rvGY(UCq2fd z#@lb5srqUn$|tXMH*dQ+UN+EC&|0_k`QD$pp6hU z_s|FSZux!Ky)anXo!ADQ8+uZ?47YO4=dDivKLa^(?Uy=;+3t2a{PC}g-)!5G+Ho)2 zIq(e=3|@uvw{&{;=ftrWp1yo+{&93q?u()5$YXZ}@-F1t6c{(Op51 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/joy.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/joy.png index 6bc95ee669d52efe9836473b180bccf7b1104dc1..2d4ded730a14f61dc01832f0367330f6d2ae5356 100644 GIT binary patch delta 161 zcmV;S0ABy33-kk!B(uu{JOO`yNklDaPwzr6&vT3gGuhH}}5Je4aYJ3#|ub>gMcm)f1 P00000NkvXXu0mjf1fWHD literal 1444 zcmb_beM}o=9KMZzmN_(z?cJ4r-AO5JuSgy3NLxdbDRA7qr6=^RyF1!K zmQ2io7#tX*W9&nguuL)s4EMntStLWo&`mSK#&8S4DI{|Yk|m2FOT_npqJNOZ7%#bd zKkoNDzvuV$QIYS>^z|9*5d=y16fk~m)!ub!@ar~h^ugsN)g4j;Qdmu}GC&->R1Q#2 zl&t`M!16V_hCvR3q{W3`NDX-lX-;hC?73)8l7<9Ppt5K(S|uuU(uOVa(r~X`;~2VV zqE_0lB~c-75$cj;fSUAX9Yu6qq!}kDoHXhPk|rpcAkpOqgWhC5 zO#7MqWnb`Q!y>90qj5ZuNaz#UdP%OpNs6Ly!hjnLI%uI&YDASy>O>_o#lQfClZBWn zNFu5+vgJ~>YQvz?r4XVquXlx5RF)G3Q-&wm7*6U5JQ~&FTC`SFKloe5s@6)dCI)an zP^4;^gY^h!rob?FPj;jkLN)XbS%5`hs~Cx^jsj8jFg6VS(enaNlVNkVndf;OOOQav z@kXVl$(q)JLeilHu-R&@)ywO9~&DWPoB%CrP8fexFNfA2_z6!9}1fy8+$IceyrHfHE!+NyZKaoR%Q1D*Kw<@ z`}5tQrw-MJDvpml8YsBhUpqc1pYLesJQOeKyx$yW1`iP5U#k10_rm3a#IfDz#MqU+ zWzUQrx4hRq`NyDVcDRK9^48Z4TYl-uegDkx)Y-hL$Z%WSR>98@w|2j8R@E10G BKPCVG diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/kissing.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/kissing.png index 5dc6f2ee44280e2d1c64512dbaa88621b06225cd..c4040f250fc238b5c76b2940e223a961dacef9f9 100644 GIT binary patch delta 103 zcmV-t0GR)s3Ge}sB$LYna9l@8L_t&t9RzkjTxaJx1Gee1O&0(F!0@?&!0Wjnf#E$M1&`%Rsp9@q^#?UW1GYA1%tQbH002ov JPDHLkV1m}YC(-}_ literal 1181 zcmbVLPiWIn7|*QA5QjU+aOxpuA_}I-OOv*VtGXr8)va}O)$M4OyslwQUY5MA*$$$+ zh4A-plvkxDn~ZL&qa%it5}KdWJa)F+B`NY&XMvemKL>wv}N9r5vC0R9LoqrhGUs zl`oo8qo!;z`}WeEp+X28hz&Y)DsG^J8D^1JA?N6sW9UT{JepyaoEpmY(<<^IEya_p z2@+{KCC7mzrv-60E$|@8@iGTQmIn$iD?FgGJ^b%Txug9ZcBw>@klmyQ^XVKk024Doa+1jozemWkb< zo+y$sE;Kw2#CgtfqPP~d16+W=-B?jOC{B8iE5HDa`zEPJsiOfVx%<1JNRfD>9QJKe z6r-XcbKHS0&T1Kk{E1t(rKD40N-7x=D{7ZQ2fAhx?r?{wD z{%D@Y6Y0q4xI7BvvOG-CB@^V6QF(jlaWrP#{e4CK=kwg_Yx1W@YUNPu&Y7LJPwgn_ z)Q5Xr-{!K{PcSbpOAA+%AMba6nbAKz(rV|~@AJLqDs4BWJ7&(aU!V36nz0|#4~S^P zh5W$Jl@`_Xs`j2}xL&=*EStLx_!&0HSOCv`3q-{YxHfE0jI1*-mdq68$uAMg<}J@Whg{_m5S^q#d1 z8yg6MSexuovi|D7t84K$E;Og{(t_gss1FuUNp%1b)nOixNmCsFS)l5pM<0Vuf~Xxa za{Z`3)hlbz45~gR=$STV6GUg1XRF#EKx7^a7*>S(Ff&V$h902~3Mn>a$3W5O8FN72 zSURVT4Qi53b?qWMJsAs_0I8&B4q2}3MX0i_jQ9RELy=_&8jMgCr}|SFG6o$$3PF+9 zxKIb#E(JM3>fpmWNS@_HhLspDOtYNKN;1olOAm#uIeJ0PDv2dq_!Oav2-z~jluD&w zDHMdx0K-X=#IQWW^E5`#?x=-SkG9;_s)7Ps%`t3bK#TMh)jS+V5ej=+3Bj~esbyiy zT}l*A8RMxo!v$H!H2t{BXcuL{FE>_1ySY&tFj?TjVMoLDD703|ICpV6paeexY!*P#8|f=g+f(s(sGe%X`pJ`@NHMP++VqJ%mFHbP7cDMY8PaR z5J9&HZ88?~tKLp-J7`!sEVfu;EazD^R`TJW;;-=a|IHtRonriE z`K@`XSGXhn?eZw#!}2fz3r~=PM`iuh0RfNMzD#c}{^LpN^^M5Q@hxwsqaSDEFR$(V zG?#dPPkA>J8`sv^>H5pZHh+J(_v38h&8@C4_xC)%BA0S&3UT7|eBxBG`Rjw^)aa%o zJvCVG(3#shURqE#-S^`U4-p7AOk+?csYG+$i~MP#W>pgrx-_)*aFwwNLwsynTvyUjE?c2m;=Yd31(}{BnPwHx}O^BE7)IUE@1XdB= VR9zdjC>+JwL^7UMu6G|k{u5JajzItb diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/ok_hand.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/ok_hand.png index 677a3f045f18dbef35706fb256debd6cfdeb742f..99c51e94b0cd9a752556c3c0d51a3f1008fdddcd 100644 GIT binary patch delta 116 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 KcCusd%YOkT#tq>B diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/persevere.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/persevere.png index 743a6d40c6e5666a5038cb6d0d9dd09a6d2a30ef..afe426b889cf9bab02dbd73a400e9ba13ee8c1ec 100644 GIT binary patch delta 142 zcmV;90CE4;3Z4UyB$LYn_lO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl^~9a@C{IK&M!(;Fx4~DO*S;PP%yXDGc>id zFf!3mFfuSS(>JixH#E^TFtjqTv@$SMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}N^As~9 z^R(1NT~i~2G~Fai6EoeUq$D%l6l2rGG!rumb7M0Tm^s+=n;97xn^`(KnVT3n8ydP= zT9~@HIk}md8kxDcI5|1H!t{FP6_+IDC8xsd&IH;G)$52?ua$FAYGO%#QAmD%4lES} zWaO9R7iZ)bC^$QVV%=OpBRn%NCBM8_6BJDlU%R9hWtOF;xE1B+DuBb;Diezvi1R;0 ze+s$brw??LJ}9vuB_5a%Fhzox@T>sjz%x^79xw+L0kcY@i}o>KHd_(k6XN>+jPLt> zuFtkP++An$^SIaENje+aR6p!@eX+yo-)Y}@o>>qFRYYnh~d4q!t&fglkZ18 zw{~kh+vYeSOZ3N4&p#)zeGpk6dCW3oO zwS0y<}O}(6Y z!7TMMQ=!UH*Pf-4GeSc}BpPiTC0FnX^RjKQ)cJJE=8yt=L#0s7o>!X|CCsyIo++o! k+$_a@L-)ix77hc3(kPzO{{3z8K$kFhy85}Sb4q9e049g-YXATM diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/pile_of_poo.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/pile_of_poo.png index 9626a3582c6170668c4549747e593d5cfbe2107f..e9e83eda20cc3269a3189e476accea67fb3d3b54 100644 GIT binary patch delta 45 zcmZqUy2~^{W%6m}6C5#~E{-7_GgBweW(g5x+<1-0oAL0>8w^0;>FVdQ&MBb@0B}VQ AdH?_b literal 1286 zcmbVL?{Cy(9B)FF;OU4_Unnv0vAhx4UE8~McWrhfTYGaCcgLl7$qpkMy*|(G%GN%m zeQwu{n5YbJg7Jj}V@w1LkN}AW4H{$2CR1>tWP9O;g7U`j!Z!4CU{K-M;@ zNJj>o*gucD7-rMBRVtHmZa^`y9Wz3kSYW#p%`ja%1J^J|5djrcwVX7&^6d-@ESP2o zr5vAgRaCS3Cp}c0%$Ll`QB#KO&Th~ZD3riP!~lUk=J-mGW}CbU-G|p43z{ZmG|jGx zD(4D7#U27utTSo~i4;i6F+q}3aj^r$d7+czWlj*IyrA&1!V6&SVW~F{jwrg;x8{qU z(rk?oSK+uuqY-N)V%V#4f-K7%ALrunD7A?C6Am$gsN-*IF=)s)J&Blq$dK}{r6aj94BkrIg(HtYDra7@(lZH2y@Sheq= zSVi@aL9kcCc&yb0g&HQCnKv^Iy-A;d4h1ojG&vb2I-zIeX*yq3hGZ z?p*Qi$EUw{%0Hbt!N;XJe`tE2zwqHZm#y+|SLcemU!U1m{QIL%F2P+(%fEkVy>|D{ z+xISfGh7&4{Nc*{!Tme<#GR|N*M9z$3Q=n}{-H|;(euUokNz;%mL5AsaYI?Hrxg4F ze>oC)v#_~s;nrUVR=%S&FP{$<+7=J8TOv0P?>IRd2_^=W>y? z^7^g%fycYw?-yT?pFexH{dQgd0xX`q^G0fG?ycc1fc5%#cX;}K1y1AWdHevDv026jnD*JU&k$ZdzTV!Em_HxR>*be}zXPV5QU$91 Y0pN%Q-N^f1fdBvi07*qoM6N<$g3+rr4FCWD literal 1233 zcmbVLO=#O@7*^J93uPG{^s;paRlT%O`TZnEwxn9gY)N)JYR@<>@mLv=r7wv{q)(B) z)JhJebuMk8?HE0jG4^-aWo)DDQhFHME-m!1?gvU?P{szktlMd)!TKqQ(;h+?6-eKY zp67ku-wUl~ZEW8w`#6ppt4~?&Y|Y-$J?v{M2byeonc7`CP3CCdi7{99NDuS%z?sKw z?0Boow{eN%_MG-RUD|D&&|MPboD7pogNU&?t~8lOj=P8{-^25MXb6AZ{953B&k$ym z25LkmUht>ZVm!Up?6_--uI34o6MQMvnSlUPhfjm0Fws*(*s!a!eRd53zX73(hOp^W zx6$HF5@TM;6+~Cct9((*Ns6Y*;J5_47Fr&x53C8Xy^DS!4(?Sq-U^ieYkiXu-mX8~YLUNyujwogP`ChQK`C z3?YabjcvnWvXv;7GDw{Wq#S}E$l}^SC$x8wT=+BhLAvCHZ)cX&u8Pi$YV=%D#`&VCDC0;}3rH1JmP}dI3M$Iu zp`D%himg;tO|pyQvMEWnR<=#GQZWmtnlH%ZLS@LUhY58;7Z0_4roF|rcIE13j2%ki z4k1g!E@&+fN|FT<@urzoy~rP#@k5XFlcQOgHlwz1?4QP7H6{VSk!RiC!H54B|0dsi z+WY}?3bJN-qIrf_tRu7S_9(E!_Aud)O;F56rTh2bMK)%$trH#lKGcpv{vOo6hw7(L zJ_E*&P`v;X@4;&+lum;BB~%7rT!D!gj$ed{@4&*KFT?S#z+8n=4GJFUQ&4;hw6{Tf z7bb6l`7>1SLiG;VOeDH>rOOtcwwu%c?f!75P96M{Vc)D<(|lsb!jhJM(ff~ua3MV9dfRX-TCDG ue?R;6huIHG>n|Lfx^e8Dc>C4y4%0NB{IkFB`~Cm9d4B8tqvF2kj>RDh#R79$YX@vX zK|jV*I;1!_d-I*{)M}fj(P%8jgFT0^Si>bo%j2|Go}Jx1#pIX@Frm{Zag|?RzbPOJ zT;<3d=!4Xwv*^W=)5GQdh%AqZ9Volc!A|Z-ftZQ{gFHS-GADPHm9Qi4@*P73tT5u( zRn}3B2M54ooB~s8ssz9LeP<7 zBrIr12o6=VK541gZq!vws3lF*YBemY*=Smo z&}9Oq-RyKw$FLfPhfvqH>+PQ1?fIT*^>n{wR@{D)37imGIgh0C6}LbgbS2sGIK_hT z5o0ISBpl3`VA+hN!1Kz^Tj0r2lmu*%JuN%6&fBLvI;BC6vly&O?L?OZQIPOD6<7-d zmzMAvd?=%W<-q(mKRSicYgu!b~eQT diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/see_no_evil.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/see_no_evil.png index 8c24967ce84d07bbbc4580b507144cd6f37ca42a..8ee29a9fb3a08d9a1ac057760c8a3d84dac68ad9 100644 GIT binary patch delta 169 zcmV;a09OCY3!DUyB(uu{TmgTFNkl-QC@N{{NaBAgAsE zNs@pO<6#hg0EVLPh*r=o_Bn~rV%@)IY*tHh>>Og!%6kHX?ky4i<~r~@M2e}I))tW} zsEM3c&7fE0NpSS=>G4mj@v=?{0@<3Xs;2`$5ZG@OMJe@6Ez@OJW#=6>Rp;e;6j2r)Tnd%VTs9{*%Cj@=YXOg$YP9_+&wS% z|NZ{I|J!r^`bUb_-@D#qG8KDknSikx@4B_{>#^Te50?_%)1)`ZVLi#Jz~tiP5J0>l z8vy~p@}2Q1P-!x)O$fmzy~$TcbFye*4I4{JR3O@9s@#%NSS|*1Bm^RYsvvC-AtX*XFr2~&n;9o)oT708S$yb1y4>is_P1kVaa6DlC)Z6HG&ZoMPWFJk)#<~n6*wxXH#ZLD=jcEK;u+F(FIvT z3`RC2cj!(ODqRXeRD8Y_Vo6(06igYGVikFDJDJj4~}n%>Y$M z0KP_*MPxD0w6KbXe;5A}p8v1;!=Nb4XqJC8PvHu7q_JHY1$bB)CLqBHQsJlwt~dJO znEmdr3wp+cz`|?0`1|gDUvEA4f;!zJoO?b#)7QRmIQvnAnLpH<)0+>s`c84xbFXyI z_UqF<(XqCMxdUCJU3@P7_}oy}5iSl z8R7g;I;XWvba7{U+s>pz)7iH3gXyVEli=#J$x66)(ZO5*Cutq4#lw2w<`{9o4 ziF_k-ar@_0rG1xuzsw;sPTFCH!X^3`n1;OLqn(-pns Vk9%Iq{|cp0Dy7(yP1KQ@9u}y%_F*{6rXm)%D(LWo78FEKMDPV1bAs!hw7t#`Ma4k!yyW-$ z|NgIgIp++MOtQ@>Jl?t z##KPC)jr~Z&XH{180j}8lWJW@wv=UTzy?Ss%l3fd%jGyVWmm@g;F_h#DG2J1Q`1g$ zXF5m)dVmy}2yO787#WoqUX)@&cnv9Ve1zpBmJib$FLRR2@#M@yVKvVz$~iSPqlHg# zsuv+wX4z7y#FRn|^m(5Qfp2)0i!A7nfknLl2T`2D zo=%5gyP3?aVaK0I6iyji)?JooIM%jihh4ztfDZ>f1J|S2SRv!w zy^arSn`{LGEGOV0?!%(X3B#$IhAMGn!|_p zi+`GLerWz!>=YX`%Nxy8xxyV8Y-dLSA7+OMICz3QJSx>M79GW7R_sXUlap67#U%0M zSM~49+Uq~kFE4Aie~?dYUvYd}!#`siUR~Mn?0oXaubVC&WX|nv{>J!pbpPrzI~$*0 zNWC1>9{jw%uYKOllhKJY@?V$Qj}F%#DJ|Re)#880)5o?oJRVgZolD#}7Qs?Wzn?dP z7YgOFos;i+h}!Fywqo>`n%b5xPYmqcxab16P&qu5ULLwTd0@3V(R8ihyCaFQ6CXGB z- XRaYxMtf_9^bn1Bhj;8u6*7`fU)06UP@>)z>KzCE*LH_8t1| ei@Os1XgT; diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/slight_smile.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/slight_smile.png index 7fe967d03368e540b42e7ed43bd4ec5827d5af48..d39cf23163eaff2aaed66aa64b401ebc2852832c 100644 GIT binary patch delta 114 zcmV-&0FD3U39|x_B$LYnsAp11L_t&t9R`5)0I@t$q)6{5sJH))B&tA_0#E`# zVzK+=<3g|*zD$QD;4%D|KgWR48v6+V09gHw++Y6?r{nGLeLa)lZ##n&fKmmj-a`Kd UxKUVt^#A|>07*qoM6N<$g4fwGb^rhX literal 1253 zcmbVMTWHi+7!EDUTCB35tW}U06_hpCxizulSd$q$(u`$hu!E>HlblSmo#e#i)S0P> zBEBdn!m{|Hh`Oj05p~&BsG{|u;N?Y8min|P=!594?n_0~P_9wzU$-0?nxH zz6aU}qH&LvFQ9_jDe2H=v_OZc+Ac;DL|dZjYI+|)WD%4sCrMj^s}NpC3LGD0Ig#bVG{;MvC~-VFy(rA)8K#s~Qqx@c6sLL- zawV3nR4Pm*#6Yja@}elRoWKeKjWuY$<{+&~JO0YL1qJxJXSv9N4jEX~im)HWDeUP~ z2)3)LGlm_1I#D=fY*lkvp5a*A4&s{B_E8pma${C)KVNeJn*~1X_jFtjb7dWjbN6MU zKoNT*ZS^c%6s@d4z2627N-J>+e_;&EkOV`B@tjtqO@RkAh=p5eQH+Q*2!mowi~=*l znRPp};iF+i4yW3MSXhvGJ}HWd!YPUzl0$q*P6?4ZHtqOGb97MWwlMcJmj5DFl0Bdy z=;a|S*Snyr7b58QLYI`~pz1MlO}FJ3u;Q-`$}|B9aMA4ayky`{Xlsf<79e0L``Hj+M5TmJq|>dE=o%ilH*9smB1tMNzYqOXVK+P0>P z`&W!VP{&5L{B=9|qy3$mnKS-S9sY^gy>;%hOVSS=4WonNy_3TG;mt38NnpZn|1m#c zu?l4~xrzT?L}6WX@Ne0fR@(E`XXRtv3l4De zU4u&&u6eTP<%XVLxn=2jJC2O?{M<5J3?0rNy*qsRx!O}$`1j)erzdj1yA4-L%U|sq ey192(!+c`X#M~RV8qdDKL_|87Q7&)lIrtII(7Mh5 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/smile.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/smile.png index 547d0c1af61f249a1c16bf5ba0fb67ebdf794b93..557bdb8f129a33d987ee41eaadcd78ce255e3dbb 100644 GIT binary patch delta 130 zcmV-|0Db?d3jYF-B$LYn3lVm? kXbhsTEe(=2COB$_Lu~NDXaZgzG#KOMK|IrTs}BuPPcrkL z%m4lV_uqDA()TT2*0v18u;s~KH5ll>?$Ygb15;F==vSrs@G zCFV%wQyE-wT!8bT2&pq+5f`Ko!%HH|-Gj3<6QO8{VmOj!WLlDG2A^L9^5z;vIji=} z`$DHEF$iHUPr@%3OwC4%g}UeJg}%0 zoC=H*i0NDiRymbgFl>ACi9#u(e636|A)2zRAg)<$4`#vNG#1tNawBCxWr62ZTpiV; z*wFx^++E*MporMW8(k9>MJuU}Ua^1;lWLSeFCoJ;WR_=nO%OFw<5`L102d)eK@dq+ zWQBqd7Q#k^YuH%~FQ`&NjB}j8u?oW^BvFj;i3q1EoDz@6BTNIEv^}WVI%xPdk?(nI z__|nGae)RMH|IE|Mi*oT9q4$2P8nB}py~p?c9UrvPR&~vlxZ$%6}V;<7(K3I;j?*` z%|$r;yZGnu#{bP9g-B6Bv;3oZ8dsT43vz6}2EyQcP?%GvV>yNho`cCrDX!|d3^`1KNbai%Pd)t6i`=D2`P~WH&D}cTwLRl? zA$B`fbo_us7-rM`*Z%XuhWEWWhTy0};yM5G0^QtvV=ERuP+Gdb>0Fb0!M`o`acpAC zL-)s4oxfQxd{fNK?4G&d=M%8*=T2Y#ZTnPbYL&G@c`(kWk4eu>-ZFiVedCYKt+(%4 t9gnRkweNoE?K`LI*l^47dz+eX!gh|ev~Ion*b~ShmQ1A8m%AU?`WN3W+!+7> diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/smiling_imp.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/smiling_imp.png index 988f863b67fe66c11e186488baa644092ad40e5d..63794794d3af682cc2553f0af9e1429b94425a54 100644 GIT binary patch delta 115 zcmV-(0F3|Q39tf?B$LYnq-aw~L_t&t9R9Ib%L4T?{-D-aXHua&YH$WL$WoRLcKfInqSj^Y^c6lKZKHc|RNF)hJl0Qr2 V1z%J?s$l>C002ovPDHLkV1mHID;fX* literal 1250 zcmbVLTWHi+7>d>R@NuosK%iYbH6^86)P$#;uR4UMXiF0h=}aI`6&3fFDu=XPN(`%R175NlJEP!|2o)` zS~06`ZXH1ovl1)Sw7>dq?R5N&i*r(V`3c3ds1@c>Npk_wXuupG6PDHv(m*r1wvK`Z zf|$O|%w$nE*(B@GVl*Galr0Cd38G5Y(Yi6{oVv7BU81 zK#EL=*7-n$3`-0zN)aKrgcLYF#BvhL2WgI%IZ5Vta^j(|nrr0cw7Psk3!fCKfRH1z zY^hXYN&yDC?JO@z63Yp!AkY{=dtElt%Czm(S1qW((_Pa+CbUW4qLzc5NTIN&l@Kf^ znVd9idlQMmDPzl;!}1KrT9zNzINC#L@X3uS(O#y@0c;w0u+!CXJ@WNcGS1zXg?u3P zMs9XZTokRSLcP-hHcF@ph5s;yX~^M-Vem#IM+ZSfqa{8VqNQLS&_O{IL%BQ%>zY`# zGbKM7h=#&}KsYGGcs?#g8+j=j5rwFzsv%Y7s@#O_AS!vt(RK`tJZ!}r>r;W0B?nlkaTzrQ)L_r+>yV8FaO z-1F#wb@N#7Q!_bybmwTBa$t?T@2@@2huqs8%}0ASpWk1+-nIVBpmk$IH8l~em(_8FH>55DTvFaFu@tM%R=>A_1qN~c=K zzWNaPMY|7U_{N0Vm?^(SLv26YC2Q4R&;9f74tR5H{%?hs?1H}GA8V%(v+vd2uG!o7 z{?+1`@`3$1@T3mCo@r+v&pWjK|?lAX18wphubfXj* zrI7fN5I;h&Jlr5@g5Wut$3QEo_JMA0Qi$2@7soZJ;bw59{5W4~WGu|KB{%28!t_;f zb3kCBcWUI#5dsVCPSMQ~(%4o}6y2>ZVgKF}t_n>A5BG@x000019KSj#rEC(}9Ic?9H`=|hdrNak?nsNcQ%lG~C&QzJ}v!!EN3OR^2Hm}(XPp4R1F zkOi_@eti){Fl@tqE!PdZrFKCvbxQUyl&f2ajbV{Jt|cq|0OAGEs~J(^?#v|u*VHJn zmy;ODN`OACZO8^)Lz$d1)UWU=vF8Om;tEKB4xo&?`hejGZj@M-E1*0_JgbmE39)354;0A)#}rAx zaSRWbV1Q*pRXOYNLt!rDXZTPk;7_n@l8>`&C>3VoEFVuLQ~p?$n>HLM8w#lE){yR1 zZt$U8Az=d<(?vT-SJ6SdiRM|&>$ zU`gsZbLaMgK70A-;+5gsQ_<0a@1r-KyLC-Je{AO|g}HyVZK1*(w;IkKYW{mkx_If> zsjl$%laaf#$>|b%t~2r5mDZ1o-0$=0iHbTiw(Igc@uh=3Pn4fxS6>!+WdBX)%^_zbh~`kJb9HmWhG7@tV0BI~Hk@ z-m0w)KJOcwYkT$JQ#+`oh3z#b=D!8}zQ(V(Ez`LdPoK;+-EVL=4#Gd?-fOJ<`1Scp zL#1IN!Yi-UU4MLj^EX?6!0xr&6D*~?CkKb Oo;T@aMx2c2hyMYtwCK+O diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/stuck_out_tongue.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/stuck_out_tongue.png index 3e650a63e6840075b938c930a4611912f4c12c1e..92843ef1e9c53914ceab8cbff1fab82952b60bcb 100644 GIT binary patch delta 130 zcmV-|0Db?W3hx4tB$LYn)OTV@L_t&t9RgQ4`k3Nww kE3MKXktEkn8J&{k3mpsz*%DfaPXGV_07*qoM6N<$f&xr6^Z)<= literal 1314 zcmbVLTWs4@7fd#D83R4zhmS*HmmO@I)BJ%B(HATFC$5Su`39Jfu`Lp2SK zWdG;#fB*mew|#?!%-S`#uc0VvZMI)61~T|M+Q~l^Syv!p15OR&A!Ohta3Ph@Q5n)% z3shhc0)6a>k6NYv)K$a#Sn5UoFL0G$A`Iam?avlH)dntv$ogWvY@E$fg5} zpo|(g&Jd=HAy`g6ziim{mJ&r$#`(bEgb>eJRuI>Mwug)GUm7cFd!;c4az*H&hO3c! z7~L%}$=&rG1&V}?vfVXFQ9xZqTEl`i&Z=>Syo7X9S9lGGnjz|}VMrQl012|P!D}qg zV=@qFb5k_7WIdn1^R6R;>+F{x{YI>W4GA%}}Lf704^|XsDdLhq> zxdMk9i+>TX|KI#^gcKJv%Qel@x*{DJY?nuY9F~U(+GK)UGAhUJdio18X3r1iN~x=- zb3cyQFmuOu>drq;4ZPCWa^8o>CZuz@^3U(3&o_*BUWmNCPnw_UKl9M8ucs2f)Xe=u z@}9@nP@uj%5I zk8@|ektZMR{`AANAuyyVaR(e^Gg(KS); moTm2NciS6JG0(Pjj#78tvihs-KXv>{JX6_JL7nOw-TMzezTP?j diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/stuck_out_tongue_closed_eyes.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/stuck_out_tongue_closed_eyes.png index a92049bb60ad19c5260cf18fac1aeff8a3bbbd1d..380ab6b8e09cccef965393f24ded58d7794a7e3e 100644 GIT binary patch delta 142 zcmV;90CE4o3XTJiB$LYn=zncVL_t&t9Yw)K5(6<11i>0<$;`~m*#G~VrGsNLQ9z^s zi9ZQZ5~3vF-d_Rf)e~jjc}DZ%K#=rajWyY$yGw!EazXT|4hY`vxxJk_ZU%^B(X!k& w;{+j?UM#oo9)tvEn^+wr6f`R~Y%BNysc#F4Kq~yz00000NkvXXt^-0~f~UJZApigX literal 1344 zcmbVLU2GIp6rNIDYYPbvJV-ThG7Sk!x;sC+)7cqzTic!O?%?jyY!})p80P2hcCtHj zr!&*;v=4-ssIe-L@?wIC1%k$ykOK8TsKqLRpwal$m>7`<6#@iIG#bS_ZMXW+5cOte z&b@cecg}bIp6$!0*EP2`V;Hth%7_JD`fpPs`li?oc_cQvsX@0NmfV_b1FTzv3cw{p zE`tJ)wegYjAdX>;V|sDW9n56~6&hjL*9m)uh0qul@A52JtpFESKv_2v#EthpAaGqv z5Cd$E%2`P;tY;={&_9tcsuLBJ*NCo8Jnjj|fB{??_l&CP2ws9%v@4*!e@znjqKaEd z5KE*6bA5Oc+5l(69U+yD#Bh!e(<~ojqU|_C(H$hklXNsh(E`N_6pb%00(rBwl28zP zmwlmAf*5vPOCZTwtro6D!q6_0G|%%S#gGgWLK-1w+;n9xWIAni3nFk-Ten;tnz(OK zR^X_cAQ01~5DY7qTQO`p%ZWlMBR$z7=`ckah9B3Ww&NDS-!xX$c8cQ`APc~Oqqd6b zQEID$QSR>U$X7&cgzdJDiXvA zXW1WyOpt!?_+IjtdFkrAy+6H^x-336WdyH}mcBaP`Rm8qu6y9zVd0On`PoA5_qPhK z?(8`{)_w?XnRzC1^ZoR-ihgE_+q=&p+_pEKkCvr}Zk$P9IuifxWY3k^x?Cx*7Zy`Q}_9e=T(KTrvN{YvN0bD3{7 z1reMs2WTXsZXw@)=f5xP(E$P=yeEm>MQ=f&0&4>6vB-3_>E(vG2K!5I?OK7j^~ltY z=Qg&V{p8~OMLhh`k><-YO;>Mkp=N$;4xU~!{*8TV&!(q$9mOx~leSBb?>;ECR`<8w z*VVT5*wK4h<^#bT{zc~A>ca)!HRlkEIABsL KFP`Yx^WF0` o*E)hRFh2M84ZzscY#hiOepI3fRG7yJE&u=k07*qoM6N<$g5ZQb_W%F@ literal 1311 zcmbVLTWs4@7c6xQvPc59z= z2GS+E*vnj-KO6*wXj ztE8%>K3wqvfTxo@X)-AR&xlDTEeb667|zlRPthX9a3sx0v?$RGzP1SDEwJiRMJ=xR zLMNFRhR~NNs@ZHNo2jH13{i|IiWJRKEK4E{G8}WE5s_}#*|MO5&Ia*RF8UR z3ygAiXGgIjVj~?4Y*ZAZp?c=116-)7GJ#%_mTgHUU^8N>ZjqdjHb|4_>ZF+Fc@mf= zD+oNBN%3sU&PI5?ATq3?6f+#FFib%d)I49zq{Y0*a%#7lYGE}ugobN^mTw#RUc(md zh?SH87|;uJ&ug^0pl{fNUO4RexT3^W&)|CpY}fLd;l8*`t5K^Uu#W(%7;b&AAahfcn0qJcuIlw z?DBlicb{rMeW9H{seJb8BfP+!fL+r^bBN2_J;iP$NLVTN-~JB^J9l&2Ed&fTHLpk4 zYhSl*+I%0DdbhFVowmzuK?0thoe@5N>D-Myvx}oUbuN)eEKgUD@9Es#{sK2u8T@h6 zsgH6?zviAkcKp!9$tSnH|JK0t?w*dx4M^x@J4g zA&B4~;L*G2bq5cE7ZJRwAb6a35d0JLrCq0oGQ>dgeczYw=kxvjq}jMJH+yLo05Dgp z8m&~O@A(<_HI<7ECg!Qxrt73j2X=%($t4{OYregOTiAB@9=ylP0L<)qR-3l#YnnrR z!A@<2#19!7faR4Ww4H5CVFzz{fzJJW{f2{{t8*Jl9o54!?s?Vy2(RxqEN6e)QC)83 z8eC2^M&M&=!^GbSVlC0RA+N^H>9xqgp$XmAxlvHv? zt58N#UPP)W<#;4%NY#)8PackWi`=f(GAbv&n5J_*N<&Q)2ZMny$OT>LVNA4+t-TP7EgX}6G$JkmBQ#)|**teJZ9%0Qhv06F8HYJfo$j*2Qnms~E+#?|@m(#8n;L?T{ zxMUDtN!v8a+Q5;wi`_~@d^oJL=1q#>pYk8!-T$qh$bu5nVfkx###d}2)8pwXFy(Za zaKJVwVyj}_|5jydmT9h8=Dn9c*m24`S7KtCwi@fd!0{2f$uzZQl&s`SXY09{vWaXGg~X diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thinking.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thinking.png index 6be3b18d7fd93e22faa11df3f0a7c3a3f2a8bdba..309caf9c8be80a698568d4f2a167c70af7562115 100644 GIT binary patch delta 162 zcmV;T0A2s-d;9{BBmt9?96FZ_V6D+z0000nbW%=JlQBIjlR!NMlUzLrd}m2SK~xAG z1;GVE0#E=zv3<&Jv0JghcmLD5semfw_3>dFO5FTTHz48r$l?9px!`iW%i9uQ|B16H zVCw|{R@a{=&vzh>KQ4BDu4W{sW3l*p-l|Ln^PcMv_) Q&j0`b07*qoM6N<$f;*Z>6aWAK literal 15849 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 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thumbsdown.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thumbsdown.png index 674b5dd6592c1e3428ca38a76238cbe449963a49..570187cf73bbdd6fd18284861f459945c9f97ff4 100644 GIT binary patch delta 116 zcmV-)0E_>}37rCvB$LYnkZDv&L_t&tTaC>(0)QX@L(x#B*n7+Uujv5jYNovDg9HGC zDaJKj0QcqnSya_p>;97vVlNstV@%U#xkXATMb>;+YsU_$;FMAU0QpwPET(}Zf9U}w Wl?YY&-N~T<0000!EHBU;FLRR2@#OqNVQa3@Dd&{rye)i+Qr!qS zGRu}qC8iW)pxedrk|eQQfDHs_jG(=K8);?Q_8Mvm3h;E-bdU*c(pS_vU>}N7*weWX zEJsxrgl%s=Q8;C6S#wyP;aJP^sH$>3uh7K8z`&AdoZLOwlz>@c~U#7XJ72ukOfRS{eMb73~HW%^X+v1<& z8{eBh7CXiI&GJ?A)UI$x`rCz3z=wrl0ydr?7mvyym|la&Y=1UgNK{|9f4o(g{D1F< zYuTycTxFy<^Rlfv+CKBDt@3c+)Np?MlKTF9diq}L=IF!Q2q{6f0& zXy3cDzm1(~9>19Wc)R7pwLO&w#p#ja_+=H#|0kVXj+ad+m&sR`dWg5{HnwAAYf6a~ z%A?00iOUXitLpBYS(`ijpJskoPHa83qGjjkuYY0_L@JR{t~MP! F@)-sMvlajV diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thumbsup.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/thumbsup.png index e52f8364ff61260b46b4083b7e73098b814d8c95..610c3ee9762a5a07488ba2918701f642c438241c 100644 GIT binary patch delta 113 zcmV-%0FM8{36=toB$LYnjAl_uL_t&tTV>5R0)Q|K1i_O7HaX|}|2rv=8rW{C1xbP$ zND{`s@RbrTav`$8su}>eRl_MF<*MqEbMA<$+=mcqs;w TF{N1{00000NkvXXu0mjfRShmU literal 1218 zcmbVLNodqi7!K$`iVJ8FEs7z%D4I!LnpqM$md<3fqt0|TJ5#mAO!C^sHhD35b*4o@ zdJuZ^=s{6DxE!kD0)n7;P!v=U5x0vTL{P+vZK+jTU)oOfP>L8x-jeV8{(Uf&+`g=; zri!AdW$`8@Zl0mxT$u+3{>^LgAZXnMJ+mH z}5Yt82X;@+A%dI;MZRlYp?@#avI|{purhW%z z`;$4Xzgv@ZreP~xUzUl039(9-%^u5@%VB0(S0;P!nq%l`2<{FuGfou}DLRTANc(*O zRs(e*Iw<*oUkVB07Fyszfa4_&h%66eUXpo0&pr&X=I9-AM%gxNi=4tt7sj^Caivnp zSE}ZAC$WuI3mvHjqVoifR${;xI!zoe9CT6Nx!t z%biUWNf}pGZ4UT&&NRKarqM3Wz&~!xi*|E;HsmtUMZJzj>d{eKA(PxKY{&x=Z{%jj zAVpDo6r}Z<(86&g%#c4m-Oy!G6nP!$0aok?KsLmS0k#N&fE7iZ_p3qOAFR_VI`i=r zMF1f_77U7l0zgcPfSAw-B9X?35)vXoe}x;jT&!9etk^b)?OASML9QHipo)=`L#U_H z1*tBCk=uoAIvVw=9;7$s4NFHQcavA9nWz=$7>A&~%|RwTooCsY$A^E5e}=FBZ~i#q z6z4U|U(HjwA|2^%=SG1X=7tGcWP%(rD#s?%)nv@_sa?6))SLE^%c;p1Z4>wNqgT`4 z@9rMEnfZ1xG4;BACr2x@!Ppy&-Q*jvvcxg+t`it#J&8;Q1jQbJ4dgl z$8KhaPwn{ieBbcN_|&VmpHKD>?QG2vlPv3TCYhaD;GtTNeKlVCveJmBm}SE14n;bLkL(_o#!_2z0m4~`E3#H=F%_l0{X;P}~!Z<@XR zQ+NG2OCQGo!j&t>*%XJal~BR_`zEPK%t}ILW;?ECW?%BINsi1+A2Jj75EwF5h?)QZ N002ovPDHLkV1k54MTh_Z literal 1433 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D72XiEBhjaDG}zd16s2gJVj5QmTSy zZen_BP-lO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl^~9a@C{IK&M!(;Fx4~DO*S;PP%yXDGc>id zFf!3mFfuSS(>JixH#E^TFtjqTv@$SMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}NH1jlF^AwXLBXbK=1B)bMm^s+=JDZzWn!A}hnwuC~8XCG< zI=VUsjz%x^79xw+L0kcZj%J=-hY<4xkC&cyt8Q+I5 z-oD!D^y`H8uM4T454rz2<@4~x>rc04J$dsKhR(tDtJEn%yz$l=%L}wOY>BKfqx0T|gq#`;sEiK@6U*elF{r5}E-07(yBV diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/unamused.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/unamused.png index 342dd80e79b03c82f84b7d81a1017c951daa88df..5dd59bcc018d168c5564d5098300c87146572680 100644 GIT binary patch delta 134 zcmV;10D1qEf8YX;Bmsw$);o&?Z9;4tliof&a9c@4K~xA^W6%Kt1`q%3`=Kufz07*qoM6N<$f?o$Rs{jB1 literal 16276 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 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/wink.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/wink.png index def8b2775ac1aeab2a233be49dede62fc7813ce0..b56b3cd5e0a90d0d6b41b9cd16a1bc056535a737 100644 GIT binary patch delta 124 zcmV-?0E7RR3gH5fB$LYn%yC>vL_t&t9R0rRqJZflUnnR)b4<06{TtTu+EV(K|vU e01`<8lH?C=+zCS+#@!qM0000A8n+QzJ6372yHs^Quk40X7=?GZFZC3@-}G)54n%V@}QlFYeNQw(jHNoHp} zC*(X04O@NVJ{la)7me`|1DH(DRyt8vi2)m7NZ0ME6R7nhGjCTV`|z4)=y?@9l4KT0 zm2v~L=K6?^bKR^VMip8HoEQg+6uX(01hJbJ058T^K~x2x3L?F@7~;)0D{4W{Eczm+ zBr}Y$r}BKQR^w_>&h>|Q5dgpo5-&+C(O`pygJGR@g3hJ|9R-GOdDwCtI_LB>$cVj)tVg?3Km_r06PtAc3>^bCeOtu$A{Ja0t7<-i z*!7F9TWxm1z_5$mVA%C&O$)0o)0=i$j_KBduCPoCQR~RJ#*mruU7McIvuZ8F;orr- zfH(hd{&+%)51Zv5&C|Rh9T{$yMu8lbh6y=jf_yS6;Mv)|WXv8I=r5)(y`TH>lvYVo zzr3y=yZ^?|UR1w0nm9j|`Sp#=*_YI(#;%z@z)jvme|IwV$ISL4dppk@mcM_k_k%;R z1Md1=`4!LIeci>`{%=pF{+#VUKb3y#G5)T;*5BW`?aP-FUmf52$qULW`!`*9J8Si| z9;{va+nbq*#>Tmc_{Wp-tB-U&fA95QpV&4rzL9VlL0hJYU~wTocT&eUVM!1k61rxzDz#elXH!3Gqic@e b($X5CoX=NlAC~Sb61P+~o!5`{-nr*5kDk$y diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/yum.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/yum.png index 29d1bf7761cae8471154e0c3f0f4c8e2c374a225..21bdb0a00f2f4734c1c331318728472d65b2b45a 100644 GIT binary patch delta 131 zcmV-}0DS+Z3iJYyB$LYn*mz?}L_t&t9RwVb{W-_vlA>uDAEE+oF_6 ln9RSM!)_^&Byc{Jk~bn$32bkh2y6fV002ovPDHLkV1hn&ICcO4 literal 1318 zcmbVLZ*0_L81Fa(jJV{`1=%F5>7oI&*Y>XWr{!*JckSSGJ;$xU1;5a1-`h32_APD4 z^`KL|uZ!s0#|lg+o=Zu(&%>YKFB z`{(&R&+qwnyg#?IWnKF^48vNoyM(+i{cmjm{l#c&4v98bEVu)(4I!-b)b+c6qe-uPFjwP;rM+ z#3HGJ)Q@MN4e)3vMygCCfycQJ6Xg!&Ep-A`Q~1nXclIrqkK5AOJ_Tb<5SEiTf6n zA{=&81Y)`vf?-M0vSHI%N)$>N>7BiAfI<$(i-Z57p{ z)Y$-|+&$cpuZY<2FW5RNic%4vI&1*b%?c?3y@WJfp!M3&z!&n& z>nm{hckwUcwf~zx3X!7xX8A|+G_Fub`rGAEK!@dF0w$Uu8;#1u6Vub&Ta|Ru%^`*AvaeJcdh9_p0TW$6V9a%9Q_Luw%c9+ diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/zipper_mouth.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/zipper_mouth.png index 37e137c0c9a370aa227ba71be694e748511fcb23..ecad41ede6d9656229189295c7c84af73fcf2482 100644 GIT binary patch delta 121 zcmV-<0EYjN3f=;cB$LYn%x+mpL_t&t9REX`a8hvG~zu600527aJpY!D};OZ`x-BbqTUF~XL*?%x79%cX#PHt bBp^xt*}Vw0W`=-{00000NkvXXu0mjf&ml5F literal 1296 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D72XiEBhjaDG}zd16s2gJVj5QmTSy zZen_BP-lO)W`O zsL0L9E4HezRRWu91!RMS^_3LBN=mYAl^~9a@C{IK&M!(;Fx4~DO*S;PP%yXDGc>id zFf!3mFfuSS(>JixH#E^TFtjqTv@$SMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}NQ&U6J zG&3`EUE?%MLtRUAlSJJ_bF*aKL^DfEL(`Nb0~1pNm^s+=TNpdK8W>x+nwuCo8ydP= zTDXB?!_v{f$i>Lq&BYO>*E6rUBrz{J6=ruP&~B(+7rc6{oQqNuOY)0C^7C_GsURRD zza+mnBfmhw*%=h;<_a3&nRzMs<;9wyXoC3KCABECEH%ZgC_h&L9L`pmSlmFI{~`KQ z$PGVzpriCbi3KU~z=VJ)62ydO1t15WnNstBIj9JjRnmgOM1a|>J-{c#_5T^)nX9&b zI3Dx)MC7A=aW9W1r@1oBDV4dhId;;Nwq5;NS)NR#K^$kc7XCZ!vwq{eNmDz1p9;LR zCE?zB+j9#|rp@XEaktaVzNpBNLkdgYkkKj`@rS8H*0ua9Z$l?5LO`DIs!Xq0^h3RXjX*E(Ofn zU?b1m+{VFdcHq!KZ58EZM|cd~TZ6r09i~j27%!BgHCbx%q6KqAHtQVHU2|)e6_3U{ c77hc3n|nF7+CCTV2HMBq>FVdQ&MBb@03n#tHvj+t diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/zzz.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/zzz.png index 02fc33fe713d9f0bb2931f94aa5a2e5cb4b1e6ef..3072dfc9f1aef8dace209b1f1c21b9f17bb7d873 100644 GIT binary patch delta 118 zcmdm4*UmUWBA=0&fq}t8wagw!u?6^qxH@$n{Qv*|RKI*Hpa@e*kYDhBhNs&NynsAC zPZ!4!4q4WN3k4et7+5ysG`^AQIi*p$wZiS-AH^SPQoZvpMeEPKclo%W{~C##^$kMj U>`k>c0d+EXy85}Sb4q9e04)V7MgRZ+ literal 16185 zcmeI3O^72!6vs;kWF6g;3yL7LSp-EpUEN71>E0yEOpVhJIcwIz~9t34kuOcj7Jg651MHIn{r?IL#o%B?aVvs$ERzp5s{p-C~ z^{dZIU)$Pz^7Qh9%K(7W8|%$&@=HFamhg8=J+p~_?)KL&g#g@hANkw?-g)-{0M6M? zXE)kyU(hXYkT-14METLc$F%{do*(&!bp=I&iF%G(%l-bzXF0*KYq^VR8@Bxh+H=+q z1GICv*|83ItNpewyvJN#J%EI``)tB+VYG8Nu?dIAz9kyz@ zy(sc^Ng57^`C%dN1wBdDG);nvq$nb;A%+KTWQ;^NJeveb<1|rd1&$v%o-2^JhUx7` zwOo!Qnmprv4g7X{lFALo^e{(hWcZSthtgmm&GQVSZ8UA2LI#p0!WWV7XW-RHcPsrn73CYEFs@tP~nbd8J%b8nWEd zDh0KmzT61#

z{i+m3nX+k<6AzLosW1;Zgk8<5SfXr{6tQd-O|hck9kOUEWz{s1Y?^W!KjXeQ$8Zn1 zb-Zh9B2-0L?kI|0DC-67aj57J y(ajnHcLa!SQjR39m@Pex+$HZ2;YY2@7ITp&o zqZb|5_J-kOY1HFxi^E%chTB7ST}mC(0@|f2k)i85|HhF!*%F=^c)E+z*>Qa2lny>` z6;&_7|Io-K<9U23rt5lk>5^SpZv@D|OSn$=BU6)(fp22A5g8|nlC7JGV_SOH3kF71cLqieNxs{wO4Gtj z&B=+bH@v#*?ob@Wj6t?z$*vj^a-;FX`w?VKSP NH(Hy`4_7b0^fxrFvZ??8 From 61a382299f6bf4fc399997d6dc5713a027335185 Mon Sep 17 00:00:00 2001 From: dekvall Date: Wed, 6 Nov 2019 11:55:29 +0100 Subject: [PATCH 04/29] emojis: add five new emojis Added emojis are: - Fire `(/\)` - Alien `(@.@)` - Eggplant `8=D` - Wave `(^_^)/` - Heart eyes `(*.*)` --- .../net/runelite/client/plugins/emojis/Emoji.java | 7 ++++++- .../net/runelite/client/plugins/emojis/alien.png | Bin 0 -> 329 bytes .../runelite/client/plugins/emojis/eggplant.png | Bin 0 -> 178 bytes .../net/runelite/client/plugins/emojis/fire.png | Bin 0 -> 265 bytes .../runelite/client/plugins/emojis/heart_eyes.png | Bin 0 -> 373 bytes .../net/runelite/client/plugins/emojis/wave.png | Bin 0 -> 361 bytes 6 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/emojis/alien.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/emojis/eggplant.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/emojis/fire.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/emojis/heart_eyes.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/emojis/wave.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java index b0ed60a55e..8d6006856e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java @@ -79,7 +79,12 @@ enum Emoji PARTY_POPPER("@@@"), EYES("O.O"), SWEAT(";;"), - PILE_OF_POO("~@~"); + PILE_OF_POO("~@~"), + FIRE("(/\\)"), + ALIEN("(@.@)"), + EGGPLANT("8=D"), + WAVE("(^_^)/"), + HEART_EYES("(*.*)"); private static final Map emojiMap; diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/alien.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/alien.png new file mode 100644 index 0000000000000000000000000000000000000000..12b5cbca06428f5a993adf8c2213b00932b2a91c GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D4$xfKQ0)nQM17^^Gm;oDIyZ?A^T5 z@`~fqvSU*+Ph7fr;M7I0fKV$3SKp9`O?wWN)irO}d0@(%MH%^})8;K%y><7_Lno)s zTXOK!#m##TZ`^(G$hoTrPF@HIk6pWM@1$7^)ANdTjLf2w(sN3x8an%S9zI#w(6(aZ z4xr6ix*4iKO1&h=FZe%EfT1~T`c0sg7*7|+5Dr<^gYAw?3<3-rZ4%zcb~QC^|KFju z%3&(k0u~2OhL`zYYg>K+BsfNYd=RB2uRI#mgzr`C5 p#tDbczqg#Kwf;PR$SSAM|D1a`m)EXt-wm{f!PC{xWt~$(698$%o>%|? literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/eggplant.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/eggplant.png new file mode 100644 index 0000000000000000000000000000000000000000..f235821f5aa98e7730ede538d8f9f090533ea646 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4xHBpZ(Y^aoOM0X`wFC4Q^QH-(l2FDqXbU%o1) zBxz<@PgzOy{F3lRKqX@P|JMU4u96_X;Quhdu<4A>d7!AJr;B329X>(>3%sOB)gDGnPQ|KH1`ib(-wtO|6 Q1T=)f)78&qol`;+00gE)E&u=k literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/fire.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..6d11acee7a986129c8452514c52f22ae74918d32 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D72SfKQ0)mkB)o&-i|s$ov1a&)2Df zUncQ=n=AEegZ}^1-v5re{X6RV_khE%%|?HATm9K>{dF?`-~IOgPkMfxCiHu!#lIsi zzcv|unhr+H_2DMF`xdT0)_FgV zc7N#P`tOYIr#{b5{hsfeJ!ch3-8FF8H%aGpfyaF_mrn=XpN6{qI^q4q-|f#qpLcs* zfA99Gi{jbYr}Z-3{ns|1zlVHEgE^jsy8&JF@v%oakkT&+@(cb?5@3j0YVjSYHN(@z zF@!@l^`NU5lcRvk!TGjLhY#Pq`|02D#cb1D9xULEJ!uxE_HyG?Bgxv{uvG!U63^UQ z?cRB08BR9Y>0l?n-+#;d-$y6cH*eZ!ZSGY!ZRI6piLNv*a|5=n?5efP6LJnUCOmdH b`jDB`p5xusReH`qI~hD({an^LB{Ts5WgfZ2 literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/wave.png b/runelite-client/src/main/resources/net/runelite/client/plugins/emojis/wave.png new file mode 100644 index 0000000000000000000000000000000000000000..1a747c8fc7d1b83d2497215b6a6c072a5034fe17 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp@Ak4uGBwbBK{D4$@fKQ0)|2wg+ry#CqWD^Xw8_`JQI`}$hmk<$|=@7?p~Y{b87(L0XM z`Mx{o-;L-OR||g~3;TUC?AMXdKbNBZUX8BUdgbq>$e*{8exC_X+wkQ7?bxJs&;Q+w z`F%S4GN{$pNB($ZuuapAP1y$OM?7@|C0b1mcHly3)Gn6>Eal| zA9!#Npu1^%BZ;F3m~KE=m#S{#}3Gvuf2W&!^s{#=WmTzg%OoSgxP%l>f`} zo%Q?ohP}J=?QMSK^wYB^tuBp!%WtiDUivt%rWoG@wTi|wB60Q;GOZYwrg5#RZ~w`g UktHF23}_#Nr>mdKI;Vst01|u1YybcN literal 0 HcmV?d00001 From 3e4b21c8cfff80bd6cbb9a2d8eeecf61aa3e219b Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Sun, 10 Nov 2019 01:01:44 +0000 Subject: [PATCH 05/29] clues: correct direction of Miscellania island coordinate clue --- .../client/plugins/cluescrolls/clues/CoordinateClue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java index e085efc313..6da83f5263 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CoordinateClue.java @@ -127,7 +127,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati .put(new WorldPoint(3058, 3884, 0), "Wilderness. Near runite ore north of Lava Maze.") .put(new WorldPoint(3290, 3889, 0), "Wilderness. Demonic Ruins.") .put(new WorldPoint(3770, 3897, 0), "Small Island north of Fossil Island.") - .put(new WorldPoint(2505, 3899, 0), "Small Island north-east of Miscellania (AJS).") + .put(new WorldPoint(2505, 3899, 0), "Small Island north-west of Miscellania (AJS).") .put(new WorldPoint(3285, 3942, 0), "Wilderness. Rogues' Castle.") .put(new WorldPoint(3159, 3959, 0), "Wilderness. North of Deserted Keep, west of Resource Area.") .put(new WorldPoint(3039, 3960, 0), "Wilderness. Pirates' Hideout.") From 6d8c81f183850eb5e9b75c8028291146e87aad0e Mon Sep 17 00:00:00 2001 From: David Date: Tue, 1 Oct 2019 01:00:40 +0100 Subject: [PATCH 06/29] worldmap: add rc-altar icons to worldmap --- .../worldmap/RunecraftingAltarLocation.java | 62 ++++++++++++++++++ .../worldmap/RunecraftingAltarPoint.java | 39 +++++++++++ .../plugins/worldmap/WorldMapConfig.java | 11 ++++ .../plugins/worldmap/WorldMapPlugin.java | 10 +++ .../plugins/worldmap/air_altar_icon.png | Bin 0 -> 480 bytes .../plugins/worldmap/astral_altar_icon.png | Bin 0 -> 487 bytes .../plugins/worldmap/blood_altar_icon.png | Bin 0 -> 468 bytes .../plugins/worldmap/body_altar_icon.png | Bin 0 -> 504 bytes .../plugins/worldmap/chaos_altar_icon.png | Bin 0 -> 488 bytes .../plugins/worldmap/cosmic_altar_icon.png | Bin 0 -> 487 bytes .../plugins/worldmap/death_altar_icon.png | Bin 0 -> 489 bytes .../plugins/worldmap/earth_altar_icon.png | Bin 0 -> 466 bytes .../plugins/worldmap/fire_altar_icon.png | Bin 0 -> 457 bytes .../plugins/worldmap/law_altar_icon.png | Bin 0 -> 487 bytes .../plugins/worldmap/mind_altar_icon.png | Bin 0 -> 506 bytes .../plugins/worldmap/nature_altar_icon.png | Bin 0 -> 502 bytes .../plugins/worldmap/soul_altar_icon.png | Bin 0 -> 469 bytes .../plugins/worldmap/water_altar_icon.png | Bin 0 -> 470 bytes .../plugins/worldmap/wrath_altar_icon.png | Bin 0 -> 467 bytes 19 files changed, 122 insertions(+) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarLocation.java create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/air_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/astral_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/blood_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/body_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/chaos_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/cosmic_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/death_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/earth_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/fire_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/law_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/mind_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/nature_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/soul_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/water_altar_icon.png create mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/wrath_altar_icon.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarLocation.java new file mode 100644 index 0000000000..c2f8319635 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarLocation.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2019, Dava96 + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.worldmap; + +import lombok.Getter; +import net.runelite.api.coords.WorldPoint; + +@Getter +enum RunecraftingAltarLocation +{ + AIR_ALTAR("Air Altar", 1, new WorldPoint(2985, 3293, 0), "air_altar_icon.png"), + MIND_ALTAR("Mind Altar", 2, new WorldPoint(2982, 3514, 0), "mind_altar_icon.png"), + WATER_ALTAR("Water Altar", 5, new WorldPoint(3185, 3165, 0), "water_altar_icon.png"), + EARTH_ALTAR("Earth Altar", 9, new WorldPoint(3306, 3474, 0), "earth_altar_icon.png"), + FIRE_ALTAR("Fire Altar", 14, new WorldPoint(3313, 3255, 0), "fire_altar_icon.png"), + BODY_ALTAR("Body Altar", 20, new WorldPoint(3053, 3445, 0), "body_altar_icon.png"), + COSMIC_ALTAR("Cosmic Altar", 27, new WorldPoint(2408, 4377, 0), "cosmic_altar_icon.png"), + CHAOS_ALTAR("Chaos Altar", 35, new WorldPoint(3060, 3591, 0), "chaos_altar_icon.png"), + ASTRAL_ALTAR("Astral Altar", 40, new WorldPoint(2158, 3864, 0), "astral_altar_icon.png"), + NATURE_ALTAR("Nature Altar", 44, new WorldPoint(2869, 3019, 0), "nature_altar_icon.png"), + LAW_ALTAR("Law Altar", 54, new WorldPoint(2858, 3381, 0), "law_altar_icon.png"), + DEATH_ALTAR("Death Altar", 65, new WorldPoint(1860, 4639, 0), "death_altar_icon.png"), + BLOOD_ALTAR("Blood Altar", 77, new WorldPoint(1716, 3827, 0), "blood_altar_icon.png"), + SOUL_ALTAR("Soul Altar", 90, new WorldPoint(1814, 3856, 0), "soul_altar_icon.png"), + WRATH_ALTAR("Wrath Altar", 95, new WorldPoint(2446, 2825, 0), "wrath_altar_icon.png"); + + private final String tooltip; + private final WorldPoint location; + private final int levelReq; + private final String iconPath; + + RunecraftingAltarLocation(String description, int level, WorldPoint location, String iconPath) + { + this.tooltip = description + " - Level " + level; + this.location = location; + this.levelReq = level; + this.iconPath = iconPath; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java new file mode 100644 index 0000000000..11cdad457f --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019, Dava96 + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.worldmap; + +import net.runelite.client.ui.overlay.worldmap.WorldMapPoint; +import net.runelite.client.util.ImageUtil; + +class RunecraftingAltarPoint extends WorldMapPoint +{ + RunecraftingAltarPoint(RunecraftingAltarLocation point) + { + super(point.getLocation(), WorldMapPlugin.BLANK_ICON); + setImage(ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, point.getIconPath())); + setTooltip(point.getTooltip()); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java index 7ebe417ef2..4070a77b1a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java @@ -218,4 +218,15 @@ public interface WorldMapConfig extends Config { return true; } + + @ConfigItem( + keyName = WorldMapPlugin.CONFIG_KEY_RUNECRAFTING_ALTAR_ICON, + name = "Show runecrafting altar locations", + description = "Show the icons of runecrafting altars", + position = 18 + ) + default boolean runecraftingAltarIcon() + { + return true; + } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java index 32e34d013b..37ff9a5192 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java @@ -79,6 +79,7 @@ public class WorldMapPlugin extends Plugin static final String CONFIG_KEY_RARE_TREE_TOOLTIPS = "rareTreeTooltips"; static final String CONFIG_KEY_RARE_TREE_LEVEL_ICON = "rareTreeIcon"; static final String CONFIG_KEY_TRANSPORATION_TELEPORT_TOOLTIPS = "transportationTooltips"; + static final String CONFIG_KEY_RUNECRAFTING_ALTAR_ICON = "runecraftingAltarIcon"; static { @@ -151,6 +152,7 @@ public class WorldMapPlugin extends Plugin worldMapPointManager.removeIf(MinigamePoint.class::isInstance); worldMapPointManager.removeIf(FarmingPatchPoint.class::isInstance); worldMapPointManager.removeIf(RareTreePoint.class::isInstance); + worldMapPointManager.removeIf(RunecraftingAltarPoint.class::isInstance); agilityLevel = 0; woodcuttingLevel = 0; } @@ -304,6 +306,14 @@ public class WorldMapPlugin extends Plugin } }).map(TeleportPoint::new) .forEach(worldMapPointManager::add); + + worldMapPointManager.removeIf(RunecraftingAltarPoint.class::isInstance); + if (config.runecraftingAltarIcon()) + { + Arrays.stream(RunecraftingAltarLocation.values()) + .map(RunecraftingAltarPoint::new) + .forEach(worldMapPointManager::add); + } } private void updateQuestStartPointIcons() diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/air_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/air_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ae281d896cb466738dfc2f4f83cc62e932e65f13 GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^{2a;_L4jtLOn}LC`AU(YxBfTgqt0+6WI4i3-8;G*Y^76{^^2_q`s)~xLi;C*X z%IeC>>w&1etiHUwxw^W!x~8SNx~00NqoJV_h#DJuTig0tTl;`yTkGVmF0gf7KpSUF zm;kqQ-n6OnrcGNsYu4h~Ks0;B`~@o(%wMr!!O8^-)-GMTZt0SBOP6k1xpLFWRhw6> z+`MYl_ODl^)$cU9ZXwNPKeTI%>W_62*|-8o{d z7j^BL^Szs!#6>gTe~DWM4f D2oBO< literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/astral_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/astral_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..10b4aecccedb98d561ab2a8fb572db3751f5127d GIT binary patch literal 487 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 IM6N<$f_Kc>TL1t6 literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/fire_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/fire_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f556a54ce9ab3f68b14927ae1cff31f48ec6a612 GIT binary patch literal 457 zcmeAS@N?(olHy`uVBq!ia0vp^{2a;_L4jtLOn}LC`AU(YxBfTgqt0+6WI4i3-8;G*Y^76{^^2_q`s)~xLi;C*X z%InL^>dVWUtE*c;sHU@_p|i1}x3#UWwY9IcZE{x^*!(V_6*DGGfZH-}+SJ9fW-Xo# zM6;L7p0!+2WX1diD;6wRxnRNCB}>;XUAk`Rl66a$Zd$o=)5=wwR;}8+YUSottG2IQ zw|(8ZU7I%T-n4P|rcL{{ZQH+X>;7%q4(-@+Xy?wZy+t2^Ug9hX@(Tvi5Kx>ldm)gu zz|+MsghQ6~prPMk2Z6SW@8?HKM>jD=Etz2VeLvHkMzPM0HYP`*_3335{tRmv!Wk}} zvGl$6r}vRsjoqtrw^Dr9mljWZ9&}Qm>L*9DUEA|(^+wD!wIPPz-FCkEkec$uw)ufk zRziyH!LEb({!*L_4Xct<<}o(hVV8UM$ChEb#=Z4y)&2en{ayl5CNpPOZ!Ui0q_ZW` itafuGM}ug>hJ*I=9o;)EPThSCaa;_L4jtLOn}LB*O7VU{dU`=ddQnzZQFeB5R#tH~5M`I;<(1{-m*wYG6%|z% z71foM)s>akmzUL-mp4~eH&@rRR9ClD*K{;AbOKRhLvL$aZ(CbmYinO?TVGr2~yTRdyl;@Lnnd&T?(D;6wRxnRNCB}>;XUAk`Rl66a$Zd$o= z)5=wwSFPN$b03w`<|{LpWqv4_f;(1qw7=%zwtmo$b_f-bu=Xr?s>5|NbjsQpsyC zE)WyBu<^}Y>&KQ%4*Ufy0zTaS%fjM3*cO&#&s{Ndmd*2k8Eb_uoGnvat#2-|Z2p18 zrc7S-Yby&Yx9+d}z4P?b`HvpwZ&6S%3b46ZXYN+9mUrn@%k5JmK2H!`tXS-S>HTJ@ zqgN-~D7H91;rn7IS=)w-mls~(I<>`K_~~J1fixd0&AWY*cQIUGW>NpaUc~3O>iTI( QL6AQ@UHx3vIVCg!0HfF3YybcN literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/mind_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/mind_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b0aaeecf2a19467fa3c0cb9a6e536c8bde8c0976 GIT binary patch literal 506 zcmeAS@N?(olHy`uVBq!ia0vp^{2a;_L4jtLOn}LDR&6T4dJ-r|!y(lZIC_B42E2}sgh_cJ_^2+k^%kuN8ii)a> zit5VB>dMONfvCK!zP!A-y1Kc#rlq>NrMjl0p`jCq8XJ0BTYFpEdfVFiT3h>C+xpsC zCwFy$?d<|uJ!8TIxb5?%O`SJw+TvNW7S9Hv*-K{6S}}jYiUkW+&R?){!Gg6*mabj8 zbluV=>y|Fvv~uO9RjW3yTDg7gy6x-M?b@_y_oj`zH*MOtZQK5BTla6XBJL g;|gnooWjfp@*91F1ROTmB!Il*>FVdQ&MBb@06ahBDgXcg literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/nature_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/nature_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ee53dbd5a3f753be91715cdda0115ac658ceacfb GIT binary patch literal 502 zcmeAS@N?(olHy`uVBq!ia0vp^{2a;_L4jtLOn}LB*uuG&MJ-r|!y(lZIC_B42E2}sgh_cJ_^2+k^%kuN8ii)a> zit5VB>dMONfvCK!zP!A-y1Kc#rlq>NrMjl0p`jCq8XJ0BTYFpEdfVFiT3h>C+xpsC zCwFy$?d<|uJ!8TIxb5?%O`SJw+TvNW7SEc!c=oKtvu7`vJ!{4M1uGWJU$J1p%J~ac zE?BU3$pfi@LpWqv58C=2b`WT|m|rJT zt*xS>($&$X#;ePIVrwIFfMauu%cX###;tp;H}6qr5NY62*dcX(U0yy<*g-yZ-B;`M z)+dXeT72URYr(bYuQr?upLgZ2t%Jq99N8q?=BZ7`5M^32}s fEt3PIhuIJI57q%qlO89gTe~DWM4fSIXjf literal 0 HcmV?d00001 diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/soul_altar_icon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/worldmap/soul_altar_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..08615a949efc5396ff59522395bf232b9c8b297c GIT binary patch literal 469 zcmeAS@N?(olHy`uVBq!ia0vp^{2a;_L4jtLOn}LC`AU(YxBfTgqt0+6WI4i3-8;G*Y^76{^^2_q`s)~xLi;C*X z%IkrsysWvpx&?%4IvN@}fvB;ex3#smwXLtUwGT+PwNCEp0$bDtv}@|LTQeq1fZI54 z+SGZ|rY)W|Yw>I#n!RN9tQ8C9uUN2P<@^OJ7c5x2Wa-+aOV=%3vTo_pO)FP!TDfY| zs#Tj;t=ztL-S&0sc5T|Ud(+0Ov+wr&5mt^2oaJG5iRp`AO$Q~xUiy~kM+ynO31{{Gutm~Mc zb1-lp;8NHj_1yE$z09_R&#UFG#KzvMk~qG6Ss+X0&Xz;dLbu-ip3QdSlSXksSKt2j z=d**=b!-G*9O67+Rn#gwbaahHT&f8ET32-mj!F<4|zB* rbo?!(%HdukHh14m6P5a;_L4jtLOn}LB*L~40KdU`=ddQnzZQFeB5R#tH~5M`I;<(1{-m*wYG6%|z% z71foM)s>akmzUL-mp4~ew}4PhXG240V?%FiTVHEyACPQoo!r$0wx|ne*Nh1h;MUEX zHg(>#X^UsgT09$wW-pmNYsLHpD;6wRIe)>*1q;?LS-N)V(sfIhtXsNt)5?{bR<7E# zYSrddD>tuNwSDcn?d#U<+O%o+rj5HdZQ8eO+x~4^_ix*FXvdC2J9o;j+x8RaJdJT^CG z+I^YFuz_h0L(8hx;>%I%RPq;onXDHzJM8DF?U(G&wAV&g#IweVLDYcLFI8} zfQtQp5p(|ipOcM^0(6q43O-xT>011jF<~Q*$oDx6XCxdA*PbwXFhga;_L4jtLOn}LDR)WD!1J-r|!y(lZIC_B42E2}sgh_cJ_^2+k^%kuN8ii)a> zit5VB>dMONfvCK!xw^W!x~8SNx~00NqoJX*p`o|6wYRmcueG(WwQX`&7uc>Ypmj4Q zOn}=sZ`#y()21z+HEZ!~Aey~o_N=9%;VTv_SUG>e$^{G7E?v5A>5_Fzmu_0Qa?{FH zn^vvbylUn4wd=O8Teo}D#@(AX?c26(|F*6Bw{1JLW5=PLJJ;~7bOU;fvn0qb7)V1v zamwt4K-LmZ7sn6|S=NJw-pqy)3>UtuW>&ZJ@jY6>*CfK8{(nE0UQ_dwyhmD(l)k)r zDs-RQ;1Hve=gq%bMRk{a71!rqQuFE*>aRW3wtAhr(4$|Q)&50gzkOR;7pY}9ub%nC zhdDY8y0cQ+-d=mxw=AMyqjPGQj`Pp8G0Xnu<`wz6>Z)I!a6W2}{HD Date: Sun, 10 Nov 2019 11:11:07 -0500 Subject: [PATCH 07/29] woodcutting plugin: add arctic pine logs --- .../woodcutting/WoodcuttingPlugin.java | 5 +- .../woodcutting/WoodcuttingPluginTest.java | 130 ++++++++++++++++++ 2 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/test/java/net/runelite/client/plugins/woodcutting/WoodcuttingPluginTest.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java index 04df4a2c11..01ced70693 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java @@ -29,6 +29,7 @@ import java.time.Duration; import java.time.Instant; import java.util.HashSet; import java.util.Set; +import java.util.regex.Pattern; import javax.inject.Inject; import lombok.Getter; import net.runelite.api.ChatMessageType; @@ -63,6 +64,8 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry; @PluginDependency(XpTrackerPlugin.class) public class WoodcuttingPlugin extends Plugin { + private static final Pattern WOOD_CUT_PATTERN = Pattern.compile("You get (?:some|an)[\\w ]+(?:logs?|mushrooms)\\."); + @Inject private Notifier notifier; @@ -148,7 +151,7 @@ public class WoodcuttingPlugin extends Plugin { if (event.getType() == ChatMessageType.SPAM || event.getType() == ChatMessageType.GAMEMESSAGE) { - if (event.getMessage().startsWith("You get some") && (event.getMessage().endsWith("logs.") || event.getMessage().endsWith("mushrooms."))) + if (WOOD_CUT_PATTERN.matcher(event.getMessage()).matches()) { if (session == null) { diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/woodcutting/WoodcuttingPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/woodcutting/WoodcuttingPluginTest.java new file mode 100644 index 0000000000..ed9c6a599a --- /dev/null +++ b/runelite-client/src/test/java/net/runelite/client/plugins/woodcutting/WoodcuttingPluginTest.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2019, Jordan Zomerlei + * Copyright (c) 2019, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.client.plugins.woodcutting; + +import com.google.inject.Guice; +import com.google.inject.testing.fieldbinder.Bind; +import com.google.inject.testing.fieldbinder.BoundFieldModule; +import javax.inject.Inject; +import net.runelite.api.ChatMessageType; +import net.runelite.api.Client; +import net.runelite.api.events.ChatMessage; +import net.runelite.client.Notifier; +import net.runelite.client.ui.overlay.OverlayManager; +import static org.junit.Assert.assertNotNull; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class WoodcuttingPluginTest +{ + private static final String BIRDS_NEST_MESSAGE = "A bird's nest falls out of the tree."; + + @Inject + WoodcuttingPlugin woodcuttingPlugin; + + @Mock + @Bind + WoodcuttingConfig woodcuttingConfig; + + @Mock + @Bind + Notifier notifier; + + @Mock + @Bind + Client client; + + @Mock + @Bind + WoodcuttingOverlay woodcuttingOverlay; + + @Mock + @Bind + WoodcuttingTreesOverlay woodcuttingTreesOverlay; + + @Mock + @Bind + OverlayManager overlayManager; + + @Before + public void before() + { + Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); + } + + @Test + public void testLogs() + { + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", "You get some logs.", "", 0); + woodcuttingPlugin.onChatMessage(chatMessage); + assertNotNull(woodcuttingPlugin.getSession()); + } + + @Test + public void testOakLogs() + { + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", "You get some oak logs.", "", 0); + woodcuttingPlugin.onChatMessage(chatMessage); + assertNotNull(woodcuttingPlugin.getSession()); + } + + @Test + public void testArcticLogs() + { + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", "You get an arctic log.", "", 0); + woodcuttingPlugin.onChatMessage(chatMessage); + assertNotNull(woodcuttingPlugin.getSession()); + } + + @Test + public void testMushrooms() + { + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", "You get some mushrooms.", "", 0); + woodcuttingPlugin.onChatMessage(chatMessage); + assertNotNull(woodcuttingPlugin.getSession()); + } + + @Test + public void testBirdsNest() + { + ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", BIRDS_NEST_MESSAGE, "", 0); + + when(woodcuttingConfig.showNestNotification()).thenReturn(true); + woodcuttingPlugin.onChatMessage(chatMessage); + verify(notifier).notify("A bird nest has spawned!"); + + when(woodcuttingConfig.showNestNotification()).thenReturn(false); + woodcuttingPlugin.onChatMessage(chatMessage); + verifyNoMoreInteractions(notifier); + } +} \ No newline at end of file From 7f68db7362ef1cba3e7a0305a7648beff2c124c5 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 10 Nov 2019 13:38:39 -0500 Subject: [PATCH 08/29] client session manager: fix task crash from being unable to acquire a session id --- .../main/java/net/runelite/client/ClientSessionManager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ClientSessionManager.java b/runelite-client/src/main/java/net/runelite/client/ClientSessionManager.java index f672a0d05e..b206c8464b 100644 --- a/runelite-client/src/main/java/net/runelite/client/ClientSessionManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ClientSessionManager.java @@ -32,6 +32,7 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; +import net.runelite.client.util.RunnableExceptionLogger; @Singleton @Slf4j @@ -62,7 +63,7 @@ public class ClientSessionManager log.warn("error opening session", ex); } - scheduledFuture = executorService.scheduleWithFixedDelay(this::ping, 1, 10, TimeUnit.MINUTES); + scheduledFuture = executorService.scheduleWithFixedDelay(RunnableExceptionLogger.wrap(this::ping), 1, 10, TimeUnit.MINUTES); } public void shutdown() @@ -96,7 +97,8 @@ public class ClientSessionManager } catch (IOException ex) { - log.warn(null, ex); + log.warn("unable to open session", ex); + return; } try From 52c3a1902f8ac0b00c5b2337e9e1b7a32952bbfc Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 10 Nov 2019 14:33:03 -0500 Subject: [PATCH 09/29] api: change LocalPlayerDeath event to PlayerDeath --- .../events/{LocalPlayerDeath.java => PlayerDeath.java} | 9 +++++++-- .../plugins/deathindicator/DeathIndicatorPlugin.java | 6 +++--- .../client/plugins/screenshot/ScreenshotPlugin.java | 6 +++--- .../net/runelite/client/plugins/timers/TimersPlugin.java | 9 ++++++--- 4 files changed, 19 insertions(+), 11 deletions(-) rename runelite-api/src/main/java/net/runelite/api/events/{LocalPlayerDeath.java => PlayerDeath.java} (90%) diff --git a/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java similarity index 90% rename from runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java rename to runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java index e46b815f49..0b048818c8 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java +++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java @@ -24,9 +24,14 @@ */ package net.runelite.api.events; +import lombok.Value; +import net.runelite.api.Player; + /** - * An event when the local player dies. + * An event fired when a player dies. */ -public class LocalPlayerDeath +@Value +public class PlayerDeath { + private final Player player; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java index 4db2cce475..3667439385 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java @@ -40,7 +40,7 @@ import net.runelite.api.coords.WorldPoint; import net.runelite.client.events.ConfigChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; -import net.runelite.api.events.LocalPlayerDeath; +import net.runelite.api.events.PlayerDeath; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.game.ItemManager; @@ -145,9 +145,9 @@ public class DeathIndicatorPlugin extends Plugin } @Subscribe - public void onLocalPlayerDeath(LocalPlayerDeath death) + public void onPlayerDeath(PlayerDeath playerDeath) { - if (client.isInInstancedRegion()) + if (client.isInInstancedRegion() || playerDeath.getPlayer() != client.getLocalPlayer()) { return; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index c32ae795e8..1c4123e795 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -65,7 +65,7 @@ import net.runelite.api.SpriteID; import net.runelite.api.WorldType; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameTick; -import net.runelite.api.events.LocalPlayerDeath; +import net.runelite.api.events.PlayerDeath; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID; @@ -279,9 +279,9 @@ public class ScreenshotPlugin extends Plugin } @Subscribe - public void onLocalPlayerDeath(LocalPlayerDeath death) + public void onPlayerDeath(PlayerDeath playerDeath) { - if (config.screenshotPlayerDeath()) + if (playerDeath.getPlayer() == client.getLocalPlayer() && config.screenshotPlayerDeath()) { takeScreenshot("Death " + format(new Date())); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java index 8408b3b4d4..0a2772f253 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java @@ -53,7 +53,7 @@ import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.GraphicChanged; import net.runelite.api.events.ItemContainerChanged; -import net.runelite.api.events.LocalPlayerDeath; +import net.runelite.api.events.PlayerDeath; import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.VarbitChanged; @@ -886,9 +886,12 @@ public class TimersPlugin extends Plugin } @Subscribe - public void onLocalPlayerDeath(LocalPlayerDeath event) + public void onPlayerDeath(PlayerDeath playerDeath) { - infoBoxManager.removeIf(t -> t instanceof TimerTimer && ((TimerTimer) t).getTimer().isRemovedOnDeath()); + if (playerDeath.getPlayer() == client.getLocalPlayer()) + { + infoBoxManager.removeIf(t -> t instanceof TimerTimer && ((TimerTimer) t).getTimer().isRemovedOnDeath()); + } } private TimerTimer createGameTimer(final GameTimer timer) From 48aee49f5d5c0002f816ae1f54c2e3218ac6f759 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 10 Nov 2019 21:14:52 +0100 Subject: [PATCH 10/29] Add method for attaching clear listener to IconTextField Signed-off-by: Tomas Slusny --- .../net/runelite/client/ui/components/IconTextField.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/components/IconTextField.java b/runelite-client/src/main/java/net/runelite/client/ui/components/IconTextField.java index c02bab2c5a..0408837302 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/components/IconTextField.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/components/IconTextField.java @@ -29,6 +29,7 @@ package net.runelite.client.ui.components; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -222,6 +223,11 @@ public class IconTextField extends JPanel textField.addKeyListener(keyListener); } + public void addClearListener(Consumer actionEventConsumer) + { + clearButton.addActionListener(actionEventConsumer::accept); + } + public void addKeyListener(Consumer keyEventConsumer) { addKeyListener(new net.runelite.client.input.KeyListener() From 56141049008b08d2b27d2df2603eff696d3a15fc Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 10 Nov 2019 21:15:19 +0100 Subject: [PATCH 11/29] Clear skill calculator selection on clear button press Signed-off-by: Tomas Slusny --- .../runelite/client/plugins/skillcalculator/SkillCalculator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java index 7e69b798d2..9c7b92806e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculator.java @@ -88,6 +88,7 @@ class SkillCalculator extends JPanel searchBar.setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH - 20, 30)); searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR); searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR); + searchBar.addClearListener(e -> onSearch()); searchBar.addKeyListener(e -> onSearch()); setLayout(new DynamicGridLayout(0, 1, 0, 5)); From 639006997cac569b1c71c604cc58a7ef014dafa9 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 10 Nov 2019 21:15:37 +0100 Subject: [PATCH 12/29] Clear grand exchange selection on clear button press Signed-off-by: Tomas Slusny --- .../GrandExchangeSearchPanel.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeSearchPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeSearchPanel.java index 90dcf0269d..2200cb234e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeSearchPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeSearchPanel.java @@ -103,6 +103,7 @@ class GrandExchangeSearchPanel extends JPanel searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR); searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR); searchBar.addActionListener(e -> executor.execute(() -> priceLookup(false))); + searchBar.addClearListener(e -> updateSearch()); searchItemsPanel.setLayout(new GridBagLayout()); searchItemsPanel.setBackground(ColorScheme.DARK_GRAY_COLOR); @@ -149,7 +150,7 @@ class GrandExchangeSearchPanel extends JPanel executor.execute(() -> priceLookup(true)); } - private void priceLookup(boolean exactMatch) + private boolean updateSearch() { String lookup = searchBar.getText(); @@ -157,7 +158,7 @@ class GrandExchangeSearchPanel extends JPanel { searchItemsPanel.removeAll(); SwingUtilities.invokeLater(searchItemsPanel::updateUI); - return; + return false; } // Input is not empty, add searching label @@ -165,8 +166,17 @@ class GrandExchangeSearchPanel extends JPanel searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR); searchBar.setEditable(false); searchBar.setIcon(IconTextField.Icon.LOADING); + return true; + } - List result = itemManager.search(lookup); + private void priceLookup(boolean exactMatch) + { + if (!updateSearch()) + { + return; + } + + List result = itemManager.search(searchBar.getText()); if (result.isEmpty()) { searchBar.setIcon(IconTextField.Icon.ERROR); @@ -177,7 +187,7 @@ class GrandExchangeSearchPanel extends JPanel } // move to client thread to lookup item composition - clientThread.invokeLater(() -> processResult(result, lookup, exactMatch)); + clientThread.invokeLater(() -> processResult(result, searchBar.getText(), exactMatch)); } private void processResult(List result, String lookup, boolean exactMatch) From b89528ec4643a586668550229901089665de7fab Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Sun, 10 Nov 2019 21:06:25 +0000 Subject: [PATCH 13/29] clues: fix yew tree Sherlock challenge --- .../client/plugins/cluescrolls/clues/SkillChallengeClue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java index ced104cc30..eb5d246e43 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java @@ -137,7 +137,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll new SkillChallengeClue("Mine a piece of mithril ore.", ANY_PICKAXE), new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)), new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON), - new SkillChallengeClue("Chop a yew tree.", ANY_AXE), + new SkillChallengeClue("Cut a yew log.", ANY_AXE), new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", item(ItemID.LIGHT_ORB)), new SkillChallengeClue("Burn a yew log.", item(ItemID.YEW_LOGS), item(ItemID.TINDERBOX)), new SkillChallengeClue("Cook a swordfish", "cook a swordfish", item(ItemID.RAW_SWORDFISH)), From 6ec3c32d20b24aeb0fb3e4b336bf6843fb2e7efc Mon Sep 17 00:00:00 2001 From: winterdaze <35933468+winterdaze@users.noreply.github.com> Date: Mon, 11 Nov 2019 04:11:55 -0500 Subject: [PATCH 14/29] timers: Do not reset divine potion timers on death (#10235) --- .../runelite/client/plugins/timers/GameTimer.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java index 37ca5e82a3..b2c3aa7289 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java @@ -76,12 +76,12 @@ enum GameTimer HOME_TELEPORT(SpriteID.SPELL_LUMBRIDGE_HOME_TELEPORT, GameTimerImageType.SPRITE, "Home Teleport", 30, ChronoUnit.MINUTES), MINIGAME_TELEPORT(SpriteID.TAB_QUESTS_RED_MINIGAMES, GameTimerImageType.SPRITE, "Minigame Teleport", 20, ChronoUnit.MINUTES), DRAGON_FIRE_SHIELD(ItemID.DRAGONFIRE_SHIELD_11284, GameTimerImageType.ITEM, "Dragonfire Shield Special", 2, ChronoUnit.MINUTES), - DIVINE_SUPER_ATTACK(ItemID.DIVINE_SUPER_ATTACK_POTION4, GameTimerImageType.ITEM, "Divine Super Attack", 5, ChronoUnit.MINUTES, true), - DIVINE_SUPER_STRENGTH(ItemID.DIVINE_SUPER_STRENGTH_POTION4, GameTimerImageType.ITEM, "Divine Super Strength", 5, ChronoUnit.MINUTES, true), - DIVINE_SUPER_DEFENCE(ItemID.DIVINE_SUPER_DEFENCE_POTION4, GameTimerImageType.ITEM, "Divine Super Defence", 5, ChronoUnit.MINUTES, true), - DIVINE_SUPER_COMBAT(ItemID.DIVINE_SUPER_COMBAT_POTION4, GameTimerImageType.ITEM, "Divine Super Combat", 5, ChronoUnit.MINUTES, true), - DIVINE_RANGING(ItemID.DIVINE_RANGING_POTION4, GameTimerImageType.ITEM, "Divine Ranging", 5, ChronoUnit.MINUTES, true), - DIVINE_MAGIC(ItemID.DIVINE_MAGIC_POTION4, GameTimerImageType.ITEM, "Divine Magic", 5, ChronoUnit.MINUTES, true); + DIVINE_SUPER_ATTACK(ItemID.DIVINE_SUPER_ATTACK_POTION4, GameTimerImageType.ITEM, "Divine Super Attack", 5, ChronoUnit.MINUTES), + DIVINE_SUPER_STRENGTH(ItemID.DIVINE_SUPER_STRENGTH_POTION4, GameTimerImageType.ITEM, "Divine Super Strength", 5, ChronoUnit.MINUTES), + DIVINE_SUPER_DEFENCE(ItemID.DIVINE_SUPER_DEFENCE_POTION4, GameTimerImageType.ITEM, "Divine Super Defence", 5, ChronoUnit.MINUTES), + DIVINE_SUPER_COMBAT(ItemID.DIVINE_SUPER_COMBAT_POTION4, GameTimerImageType.ITEM, "Divine Super Combat", 5, ChronoUnit.MINUTES), + DIVINE_RANGING(ItemID.DIVINE_RANGING_POTION4, GameTimerImageType.ITEM, "Divine Ranging", 5, ChronoUnit.MINUTES), + DIVINE_MAGIC(ItemID.DIVINE_MAGIC_POTION4, GameTimerImageType.ITEM, "Divine Magic", 5, ChronoUnit.MINUTES); private final Duration duration; private final Integer graphicId; From e3edc16f869efd0f81fc39ddb02547267587ed7b Mon Sep 17 00:00:00 2001 From: 15987632 Date: Sun, 10 Nov 2019 22:20:24 -0500 Subject: [PATCH 15/29] raids plugin: fix rotation solver --- .../runelite/client/plugins/raids/Raid.java | 19 +++++++++++++++++++ .../client/plugins/raids/RaidsPlugin.java | 4 +++- .../plugins/raids/RotationSolverTest.java | 8 ++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java index a237fc03cd..87181b4085 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java @@ -98,6 +98,25 @@ public class Raid return combatRooms.toArray(new RaidRoom[0]); } + void setCombatRooms(RaidRoom[] combatRooms) + { + int index = 0; + + for (Room room : layout.getRooms()) + { + if (room == null) + { + continue; + } + + if (rooms[room.getPosition()].getType() == RoomType.COMBAT) + { + rooms[room.getPosition()] = combatRooms[index]; + index++; + } + } + } + public String toCode() { StringBuilder builder = new StringBuilder(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java index 5047c4e625..f25ba51534 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/RaidsPlugin.java @@ -320,7 +320,9 @@ public class RaidsPlugin extends Plugin } raid.updateLayout(layout); - RotationSolver.solve(raid.getCombatRooms()); + RaidRoom[] rooms = raid.getCombatRooms(); + RotationSolver.solve(rooms); + raid.setCombatRooms(rooms); overlay.setScoutOverlayShown(true); if (config.layoutMessage()) diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/raids/RotationSolverTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/raids/RotationSolverTest.java index 5c2bba30e6..38039ca832 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/raids/RotationSolverTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/raids/RotationSolverTest.java @@ -69,4 +69,12 @@ public class RotationSolverTest RotationSolver.solve(rooms); assertArrayEquals(new RaidRoom[]{VASA, SHAMANS, VESPULA, GUARDIANS}, rooms); } + + @Test + public void testSolve5() + { + RaidRoom[] rooms = new RaidRoom[]{GUARDIANS, UNKNOWN_COMBAT, SHAMANS, VASA}; + RotationSolver.solve(rooms); + assertArrayEquals(new RaidRoom[]{GUARDIANS, VESPULA, SHAMANS, VASA}, rooms); + } } \ No newline at end of file From 4beb8766abc218152b78977bd5f72bb5de4216d8 Mon Sep 17 00:00:00 2001 From: winterdaze <35933468+winterdaze@users.noreply.github.com> Date: Mon, 11 Nov 2019 19:24:08 -0500 Subject: [PATCH 16/29] Make GWD kill count overlay movable (#10238) --- .../src/main/java/net/runelite/api/widgets/WidgetID.java | 6 ++++++ .../src/main/java/net/runelite/api/widgets/WidgetInfo.java | 2 ++ .../java/net/runelite/client/ui/overlay/WidgetOverlay.java | 1 + 3 files changed, 9 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index f1dbef7b29..3ccaf94371 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -147,6 +147,7 @@ public class WidgetID public static final int SEED_VAULT_GROUP_ID = 631; public static final int EXPLORERS_RING_ALCH_GROUP_ID = 483; public static final int OPTIONS_GROUP_ID = 261; + public static final int GWD_KC_GROUP_ID = 406; static class WorldMap { @@ -589,6 +590,11 @@ public class WidgetID static final int REWARD_TEXT = 57; } + static class GWD + { + static final int CONTAINER = 7; + } + static class LevelUp { static final int SKILL = 1; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index d0fd4a8c5b..fe2e03e720 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -387,6 +387,8 @@ public enum WidgetInfo MOTHERLODE_MINE(WidgetID.MOTHERLODE_MINE_GROUP_ID, 0), + GWD_KC(WidgetID.GWD_KC_GROUP_ID, WidgetID.GWD.CONTAINER), + PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX), LIGHT_BOX(WidgetID.LIGHT_BOX_GROUP_ID, WidgetID.LightBox.LIGHT_BOX), diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java index 87a4de12ac..442df47631 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetOverlay.java @@ -45,6 +45,7 @@ public class WidgetOverlay extends Overlay .put(WidgetInfo.FOSSIL_ISLAND_OXYGENBAR, OverlayPosition.TOP_LEFT) .put(WidgetInfo.EXPERIENCE_TRACKER_WIDGET, OverlayPosition.TOP_RIGHT) .put(WidgetInfo.RAIDS_POINTS_INFOBOX, OverlayPosition.TOP_RIGHT) + .put(WidgetInfo.GWD_KC, OverlayPosition.TOP_RIGHT) .put(WidgetInfo.TITHE_FARM, OverlayPosition.TOP_RIGHT) .put(WidgetInfo.PEST_CONTROL_BOAT_INFO, OverlayPosition.TOP_LEFT) .put(WidgetInfo.PEST_CONTROL_INFO, OverlayPosition.TOP_LEFT) From fd3a235d7f029d9e4c5a241a4b41be3921457d31 Mon Sep 17 00:00:00 2001 From: neeerp Date: Sat, 2 Nov 2019 20:08:01 -0400 Subject: [PATCH 17/29] music plugin: add more area mute options This adds an option to mute your own area sounds, sounds from npcs, and sounds with no source. --- .../client/plugins/music/MusicConfig.java | 38 ++++++++++++++++++- .../client/plugins/music/MusicPlugin.java | 18 ++++++++- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java index e425a10f08..16eea65c9f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java @@ -31,16 +31,50 @@ import net.runelite.client.config.ConfigItem; @ConfigGroup("music") public interface MusicConfig extends Config { + @ConfigItem( + keyName = "muteOwnAreaSounds", + name = "Mute player area sounds", + description = "Mute area sounds caused by yourself", + position = 0 + ) + default boolean muteOwnAreaSounds() + { + return false; + } + @ConfigItem( keyName = "muteOtherAreaSounds", - name = "Mute others' area sounds", - description = "Mute area sounds caused from other players" + name = "Mute other players' area sounds", + description = "Mute area sounds caused by other players", + position = 1 ) default boolean muteOtherAreaSounds() { return false; } + @ConfigItem( + keyName = "muteOtherAreaNPCSounds", + name = "Mute NPCs' area sounds", + description = "Mute area sounds caused by NPCs", + position = 2 + ) + default boolean muteNpcAreaSounds() + { + return false; + } + + @ConfigItem( + keyName = "muteOtherAreaEnvironmentSounds", + name = "Mute environment area sounds", + description = "Mute area sounds caused by neither NPCs nor players", + position = 3 + ) + default boolean muteEnvironmentAreaSounds() + { + return false; + } + @ConfigItem( keyName = "musicVolume", name = "", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java index 02b95e1e44..3aca086669 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java @@ -40,6 +40,7 @@ import lombok.Setter; import net.runelite.api.Actor; import net.runelite.api.Client; import net.runelite.api.GameState; +import net.runelite.api.NPC; import net.runelite.api.Player; import net.runelite.api.ScriptID; import net.runelite.api.SoundEffectID; @@ -557,11 +558,26 @@ public class MusicPlugin extends Plugin public void onAreaSoundEffectPlayed(AreaSoundEffectPlayed areaSoundEffectPlayed) { Actor source = areaSoundEffectPlayed.getSource(); - if (source != client.getLocalPlayer() + if (source == client.getLocalPlayer() + && musicConfig.muteOwnAreaSounds()) + { + areaSoundEffectPlayed.consume(); + } + else if (source != client.getLocalPlayer() && source instanceof Player && musicConfig.muteOtherAreaSounds()) { areaSoundEffectPlayed.consume(); } + else if (source instanceof NPC + && musicConfig.muteNpcAreaSounds()) + { + areaSoundEffectPlayed.consume(); + } + else if (source == null + && musicConfig.muteEnvironmentAreaSounds()) + { + areaSoundEffectPlayed.consume(); + } } } \ No newline at end of file From 3775bdacabe35a6cc369053aae98667604bfc02e Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 8 Nov 2019 10:34:06 -0500 Subject: [PATCH 18/29] api: add fake xp drop event --- .../net/runelite/api/events/FakeXpDrop.java | 35 +++ .../net/runelite/client/callback/Hooks.java | 25 ++ .../src/main/scripts/FakeXpDrop.hash | 1 + .../src/main/scripts/FakeXpDrop.rs2asm | 256 ++++++++++++++++++ 4 files changed, 317 insertions(+) create mode 100644 runelite-api/src/main/java/net/runelite/api/events/FakeXpDrop.java create mode 100644 runelite-client/src/main/scripts/FakeXpDrop.hash create mode 100644 runelite-client/src/main/scripts/FakeXpDrop.rs2asm diff --git a/runelite-api/src/main/java/net/runelite/api/events/FakeXpDrop.java b/runelite-api/src/main/java/net/runelite/api/events/FakeXpDrop.java new file mode 100644 index 0000000000..67cbeea22d --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/events/FakeXpDrop.java @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2019, Adam + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package net.runelite.api.events; + +import lombok.Value; +import net.runelite.api.Skill; + +@Value +public class FakeXpDrop +{ + private final Skill skill; + private final int xp; +} diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index ca2053e446..9954f322dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -47,11 +47,14 @@ import net.runelite.api.MainBufferProvider; import net.runelite.api.NullItemID; import net.runelite.api.RenderOverview; import net.runelite.api.Renderable; +import net.runelite.api.Skill; import net.runelite.api.WorldMapManager; import net.runelite.api.events.BeforeMenuRender; import net.runelite.api.events.BeforeRender; +import net.runelite.api.events.FakeXpDrop; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; +import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.hooks.Callbacks; import net.runelite.api.hooks.DrawCallbacks; import net.runelite.api.widgets.Widget; @@ -550,4 +553,26 @@ public class Hooks implements Callbacks client.getCallbacks().post(event); return event.isConsumed(); } + + @Subscribe + public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent) + { + if (!scriptCallbackEvent.getEventName().equals("fakeXpDrop")) + { + return; + } + + final int[] intStack = client.getIntStack(); + final int intStackSize = client.getIntStackSize(); + + final int statId = intStack[intStackSize - 2]; + final int xp = intStack[intStackSize - 1]; + + Skill skill = Skill.values()[statId]; + FakeXpDrop fakeXpDrop = new FakeXpDrop( + skill, + xp + ); + eventBus.post(fakeXpDrop); + } } diff --git a/runelite-client/src/main/scripts/FakeXpDrop.hash b/runelite-client/src/main/scripts/FakeXpDrop.hash new file mode 100644 index 0000000000..cf5e37e931 --- /dev/null +++ b/runelite-client/src/main/scripts/FakeXpDrop.hash @@ -0,0 +1 @@ +32FBC48F8C6D8E62E02BCF09F444BA036F76133B6596396F0AB9E474687D9F3F \ No newline at end of file diff --git a/runelite-client/src/main/scripts/FakeXpDrop.rs2asm b/runelite-client/src/main/scripts/FakeXpDrop.rs2asm new file mode 100644 index 0000000000..93ac905034 --- /dev/null +++ b/runelite-client/src/main/scripts/FakeXpDrop.rs2asm @@ -0,0 +1,256 @@ +.id 2091 +.int_stack_count 2 +.string_stack_count 0 +.int_var_count 2 +.string_var_count 0 + iload 0 ; stat + iload 1 ; xp + sconst "fakeXpDrop" + runelite_callback + pop_int + pop_int + iconst 105 + iconst 83 + iconst 681 + get_varc_int 207 + coordx + enum + iload 0 + if_icmpeq LABEL9 + jump LABEL16 +LABEL9: + get_varc_int 207 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 207 + jump LABEL216 +LABEL16: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 208 + coordx + enum + iload 0 + if_icmpeq LABEL25 + jump LABEL32 +LABEL25: + get_varc_int 208 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 208 + jump LABEL216 +LABEL32: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 209 + coordx + enum + iload 0 + if_icmpeq LABEL41 + jump LABEL48 +LABEL41: + get_varc_int 209 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 209 + jump LABEL216 +LABEL48: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 210 + coordx + enum + iload 0 + if_icmpeq LABEL57 + jump LABEL64 +LABEL57: + get_varc_int 210 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 210 + jump LABEL216 +LABEL64: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 211 + coordx + enum + iload 0 + if_icmpeq LABEL73 + jump LABEL80 +LABEL73: + get_varc_int 211 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 211 + jump LABEL216 +LABEL80: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 212 + coordx + enum + iload 0 + if_icmpeq LABEL89 + jump LABEL96 +LABEL89: + get_varc_int 212 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 212 + jump LABEL216 +LABEL96: + iconst 105 + iconst 83 + iconst 681 + get_varc_int 213 + coordx + enum + iload 0 + if_icmpeq LABEL105 + jump LABEL112 +LABEL105: + get_varc_int 213 + iconst 0 + iconst 0 + iload 1 + movecoord + set_varc_int 213 + jump LABEL216 +LABEL112: + get_varc_int 207 + iconst -1 + if_icmpeq LABEL116 + jump LABEL127 +LABEL116: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 207 + jump LABEL216 +LABEL127: + get_varc_int 208 + iconst -1 + if_icmpeq LABEL131 + jump LABEL142 +LABEL131: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 208 + jump LABEL216 +LABEL142: + get_varc_int 209 + iconst -1 + if_icmpeq LABEL146 + jump LABEL157 +LABEL146: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 209 + jump LABEL216 +LABEL157: + get_varc_int 210 + iconst -1 + if_icmpeq LABEL161 + jump LABEL172 +LABEL161: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 210 + jump LABEL216 +LABEL172: + get_varc_int 211 + iconst -1 + if_icmpeq LABEL176 + jump LABEL187 +LABEL176: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 211 + jump LABEL216 +LABEL187: + get_varc_int 212 + iconst -1 + if_icmpeq LABEL191 + jump LABEL202 +LABEL191: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 212 + jump LABEL216 +LABEL202: + get_varc_int 213 + iconst -1 + if_icmpeq LABEL206 + jump LABEL216 +LABEL206: + iconst 0 + iconst 83 + iconst 105 + iconst 81 + iload 0 + enum + iconst 0 + iload 1 + movecoord + set_varc_int 213 +LABEL216: + return From e12d0bd23bdda7ebb73b6f9686d1e7b0bee2c29e Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 8 Nov 2019 10:34:20 -0500 Subject: [PATCH 19/29] speccounter: support fake xpdrops --- .../specialcounter/SpecialCounterPlugin.java | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java index 59330554c1..ad45a84565 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java @@ -40,9 +40,11 @@ import net.runelite.api.NPCComposition; import net.runelite.api.Player; import net.runelite.api.Skill; import net.runelite.api.VarPlayer; +import net.runelite.api.events.FakeXpDrop; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.NpcDespawned; +import net.runelite.api.events.StatChanged; import net.runelite.api.events.VarbitChanged; import net.runelite.client.callback.ClientThread; import net.runelite.client.eventbus.Subscribe; @@ -65,6 +67,7 @@ public class SpecialCounterPlugin extends Plugin private int currentWorld = -1; private int specialPercentage = -1; private int specialHitpointsExperience = -1; + private int specialHitpointsGained = -1; private boolean specialUsed; private double modifier = 1d; @@ -138,6 +141,25 @@ public class SpecialCounterPlugin extends Plugin specialUsed = true; specialHitpointsExperience = client.getSkillExperience(Skill.HITPOINTS); + specialHitpointsGained = -1; + } + + @Subscribe + public void onStatChanged(StatChanged statChanged) + { + if (specialUsed && statChanged.getSkill() == Skill.HITPOINTS) + { + specialHitpointsGained = statChanged.getXp() - specialHitpointsExperience; + } + } + + @Subscribe + public void onFakeXpDrop(FakeXpDrop fakeXpDrop) + { + if (specialUsed && fakeXpDrop.getSkill() == Skill.HITPOINTS) + { + specialHitpointsGained = fakeXpDrop.getXp(); + } } @Subscribe @@ -149,13 +171,11 @@ public class SpecialCounterPlugin extends Plugin } int interactingId = checkInteracting(); - - if (interactingId > -1 && specialHitpointsExperience != -1 && specialUsed) + if (interactingId > -1 && specialUsed) { + int deltaExperience = specialHitpointsGained; + specialUsed = false; - int hpXp = client.getSkillExperience(Skill.HITPOINTS); - int deltaExperience = hpXp - specialHitpointsExperience; - specialHitpointsExperience = -1; if (deltaExperience > 0) { From 87c6811819921b17689068be9aa202696df27983 Mon Sep 17 00:00:00 2001 From: BenDol Date: Thu, 6 Sep 2018 10:08:12 +1200 Subject: [PATCH 20/29] defaultworld: add option to use last world as default --- .../defaultworld/DefaultWorldConfig.java | 32 ++++++++++++++++++- .../defaultworld/DefaultWorldPlugin.java | 7 +++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldConfig.java index 480d4c891d..3a750f2e42 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldConfig.java @@ -28,9 +28,11 @@ import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; -@ConfigGroup("defaultworld") +@ConfigGroup(DefaultWorldConfig.GROUP) public interface DefaultWorldConfig extends Config { + final String GROUP = "defaultworld"; + @ConfigItem( keyName = "defaultWorld", name = "Default world", @@ -40,4 +42,32 @@ public interface DefaultWorldConfig extends Config { return 0; } + + @ConfigItem( + keyName = "useLastWorld", + name = "Use Last World", + description = "Use the last world you used as the default" + ) + default boolean useLastWorld() + { + return false; + } + + @ConfigItem( + keyName = "lastWorld", + name = "", + description = "", + hidden = true + ) + default int lastWorld() + { + return 0; + } + + @ConfigItem( + keyName = "lastWorld", + name = "", + description = "" + ) + void lastWorld(int lastWorld); } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java index 279d7abf49..1f97074772 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java @@ -91,6 +91,11 @@ public class DefaultWorldPlugin extends Plugin @Subscribe public void onGameStateChanged(GameStateChanged event) { + if (event.getGameState() == GameState.LOGGED_IN) + { + config.lastWorld(client.getWorld()); + } + applyWorld(); } @@ -155,7 +160,7 @@ public class DefaultWorldPlugin extends Plugin log.debug("Stored old world {}", worldCache); } - final int newWorld = config.getWorld(); + final int newWorld = !config.useLastWorld() ? config.getWorld() : config.lastWorld(); changeWorld(newWorld); } } From 530d05a369971aaca6309fdd3e0fd28d3c7e2b94 Mon Sep 17 00:00:00 2001 From: "Daniel (Danomate)" Date: Wed, 13 Nov 2019 04:13:58 +1030 Subject: [PATCH 21/29] cannon: add cannon spot for trolls at Quidamortem (#10242) --- .../java/net/runelite/client/plugins/cannon/CannonSpots.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonSpots.java b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonSpots.java index 848fd1dcd6..b8b8ddd9c5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonSpots.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonSpots.java @@ -40,7 +40,7 @@ public enum CannonSpots BLACK_DEMONS(new WorldPoint(2859, 9778, 0), new WorldPoint(2841, 9791, 0), new WorldPoint(1421, 10089, 1)), ELVES(new WorldPoint(2044, 4635, 0), new WorldPoint(3278, 6098, 0)), SUQAHS(new WorldPoint(2114, 3943, 0)), - TROLLS(new WorldPoint(2401, 3856, 0)), + TROLLS(new WorldPoint(2401, 3856, 0), new WorldPoint(1242, 3517, 0)), GREATER_DEMONS(new WorldPoint(1435, 10086, 2)), BRINE_RAT(new WorldPoint(2707, 10132, 0)), DAGGANOTH(new WorldPoint(2524, 10020, 0)), From 0ea88f2ecf4c8f18c9953fd7a64df2f14e3d7927 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:35:56 +0000 Subject: [PATCH 22/29] Update Item IDs to 2019-11-14-rev182 --- .../main/java/net/runelite/api/ItemID.java | 29 +++++++++++++++ .../java/net/runelite/api/NullItemID.java | 36 +++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index c460d07ef4..8b955ca420 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -11325,5 +11325,34 @@ public final class ItemID public static final int BOUNTY_HUNTER_HAT_TIER_4 = 24344; public static final int BOUNTY_HUNTER_HAT_TIER_5 = 24346; public static final int BOUNTY_HUNTER_HAT_TIER_6 = 24348; + public static final int SCROLL_BOX_BEGINNER = 24361; + public static final int SCROLL_BOX_EASY = 24362; + public static final int SCROLL_BOX_MEDIUM = 24363; + public static final int SCROLL_BOX_HARD = 24364; + public static final int SCROLL_BOX_ELITE = 24365; + public static final int SCROLL_BOX_MASTER = 24366; + public static final int CABBAGE_24367 = 24367; + public static final int TWISTED_SLAYER_HELMET = 24370; + public static final int TWISTED_LEAGUE_DRAGON_TROPHY = 24372; + public static final int TWISTED_LEAGUE_RUNE_TROPHY = 24374; + public static final int TWISTED_LEAGUE_ADAMANT_TROPHY = 24376; + public static final int TWISTED_LEAGUE_MITHRIL_TROPHY = 24378; + public static final int TWISTED_LEAGUE_STEEL_TROPHY = 24380; + public static final int TWISTED_LEAGUE_IRON_TROPHY = 24382; + public static final int TWISTED_LEAGUE_BRONZE_TROPHY = 24384; + public static final int TWISTED_HAT_T3 = 24387; + public static final int TWISTED_COAT_T3 = 24389; + public static final int TWISTED_TROUSERS_T3 = 24391; + public static final int TWISTED_BOOTS_T3 = 24393; + public static final int TWISTED_CANE = 24395; + public static final int TWISTED_HAT_T2 = 24397; + public static final int TWISTED_COAT_T2 = 24399; + public static final int TWISTED_TROUSERS_T2 = 24401; + public static final int TWISTED_BOOTS_T2 = 24403; + public static final int TWISTED_HAT_T1 = 24405; + public static final int TWISTED_COAT_T1 = 24407; + public static final int TWISTED_TROUSERS_T1 = 24409; + public static final int TWISTED_BOOTS_T1 = 24411; + public static final int TWISTED_LEAGUE_BANNER = 24413; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/NullItemID.java b/runelite-api/src/main/java/net/runelite/api/NullItemID.java index f5a405debc..91f4b15a8d 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java @@ -12814,5 +12814,41 @@ public final class NullItemID public static final int NULL_24345 = 24345; public static final int NULL_24347 = 24347; public static final int NULL_24349 = 24349; + public static final int NULL_24350 = 24350; + public static final int NULL_24351 = 24351; + public static final int NULL_24352 = 24352; + public static final int NULL_24353 = 24353; + public static final int NULL_24354 = 24354; + public static final int NULL_24355 = 24355; + public static final int NULL_24356 = 24356; + public static final int NULL_24357 = 24357; + public static final int NULL_24358 = 24358; + public static final int NULL_24359 = 24359; + public static final int NULL_24360 = 24360; + public static final int NULL_24368 = 24368; + public static final int NULL_24369 = 24369; + public static final int NULL_24371 = 24371; + public static final int NULL_24373 = 24373; + public static final int NULL_24375 = 24375; + public static final int NULL_24377 = 24377; + public static final int NULL_24379 = 24379; + public static final int NULL_24381 = 24381; + public static final int NULL_24383 = 24383; + public static final int NULL_24385 = 24385; + public static final int NULL_24386 = 24386; + public static final int NULL_24388 = 24388; + public static final int NULL_24390 = 24390; + public static final int NULL_24392 = 24392; + public static final int NULL_24394 = 24394; + public static final int NULL_24396 = 24396; + public static final int NULL_24398 = 24398; + public static final int NULL_24400 = 24400; + public static final int NULL_24402 = 24402; + public static final int NULL_24404 = 24404; + public static final int NULL_24406 = 24406; + public static final int NULL_24408 = 24408; + public static final int NULL_24410 = 24410; + public static final int NULL_24412 = 24412; + public static final int NULL_24414 = 24414; /* This file is automatically generated. Do not edit. */ } From 95220a437133087a89b8e811d33c60c08fca1fe8 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:35:56 +0000 Subject: [PATCH 23/29] Update Item variations to 2019-11-14-rev182 --- .../src/main/resources/item_variations.json | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/resources/item_variations.json b/runelite-client/src/main/resources/item_variations.json index 8958eaa923..66ef2d3c50 100644 --- a/runelite-client/src/main/resources/item_variations.json +++ b/runelite-client/src/main/resources/item_variations.json @@ -2456,7 +2456,8 @@ 1965, 1967, 22519, - 22520 + 22520, + 24367 ], "empty cup": [ 1980, @@ -7784,7 +7785,8 @@ 21888, 21890, 23073, - 23075 + 23075, + 24370 ], "slayer ring": [ 11866, @@ -9638,5 +9640,33 @@ 24344, 24346, 24348 + ], + "scroll box": [ + 24361, + 24362, + 24363, + 24364, + 24365, + 24366 + ], + "twisted hat": [ + 24387, + 24397, + 24405 + ], + "twisted coat": [ + 24389, + 24399, + 24407 + ], + "twisted trousers": [ + 24391, + 24401, + 24409 + ], + "twisted boots": [ + 24393, + 24403, + 24411 ] } \ No newline at end of file From 5e96c4db4b53b7bc8e9defa0d8f916375f749c4f Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:35:57 +0000 Subject: [PATCH 24/29] Update Object IDs to 2019-11-14-rev182 --- .../java/net/runelite/api/NullObjectID.java | 18 ++++++++++++++++ .../main/java/net/runelite/api/ObjectID.java | 21 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java index feaf84d503..86b6e4a5bd 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java @@ -18041,6 +18041,8 @@ public final class NullObjectID public static final int NULL_37436 = 37436; public static final int NULL_37437 = 37437; public static final int NULL_37438 = 37438; + public static final int NULL_37439 = 37439; + public static final int NULL_37440 = 37440; public static final int NULL_37446 = 37446; public static final int NULL_37447 = 37447; public static final int NULL_37448 = 37448; @@ -18052,5 +18054,21 @@ public final class NullObjectID public static final int NULL_37455 = 37455; public static final int NULL_37456 = 37456; public static final int NULL_37457 = 37457; + public static final int NULL_37467 = 37467; + public static final int NULL_37468 = 37468; + public static final int NULL_37469 = 37469; + public static final int NULL_37470 = 37470; + public static final int NULL_37471 = 37471; + public static final int NULL_37472 = 37472; + public static final int NULL_37473 = 37473; + public static final int NULL_37474 = 37474; + public static final int NULL_37475 = 37475; + public static final int NULL_37476 = 37476; + public static final int NULL_37477 = 37477; + public static final int NULL_37478 = 37478; + public static final int NULL_37479 = 37479; + public static final int NULL_37480 = 37480; + public static final int NULL_37481 = 37481; + public static final int NULL_37490 = 37490; /* This file is automatically generated. Do not edit. */ } diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectID.java b/runelite-api/src/main/java/net/runelite/api/ObjectID.java index 1b3e52cf3b..3eaebb674f 100644 --- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java +++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java @@ -19385,7 +19385,28 @@ public final class ObjectID public static final int ROUGH_WALL_37431 = 37431; public static final int STREAK_INFO = 37434; public static final int SWAMPY_SINK = 37435; + public static final int SHUTTERED_WINDOW_37441 = 37441; + public static final int DECORATIVE_WINDOW_37442 = 37442; + public static final int STAINEDGLASS_WINDOW_37443 = 37443; public static final int LOG_PILE_37444 = 37444; public static final int HOTSPOT_MARKER = 37445; + public static final int DECORATIVE_WINDOW_37450 = 37450; + public static final int STAINEDGLASS_WINDOW_37458 = 37458; + public static final int DECORATIVE_WINDOW_37459 = 37459; + public static final int STAINEDGLASS_WINDOW_37460 = 37460; + public static final int DECORATIVE_WINDOW_37461 = 37461; + public static final int STAINEDGLASS_WINDOW_37462 = 37462; + public static final int DOOR_37463 = 37463; + public static final int DOOR_37464 = 37464; + public static final int DOOR_37465 = 37465; + public static final int DOOR_37466 = 37466; + public static final int LEAGUE_FIRSTS_BOARD = 37482; + public static final int DRAGON_TROPHY_DISPLAY = 37483; + public static final int DRAGON_TROPHY_DISPLAY_37484 = 37484; + public static final int DRAGON_TROPHY_DISPLAY_37485 = 37485; + public static final int DRAGON_TROPHY_DISPLAY_37486 = 37486; + public static final int DRAGON_TROPHY_DISPLAY_37487 = 37487; + public static final int DRAGON_TROPHY_DISPLAY_37488 = 37488; + public static final int DRAGON_TROPHY_DISPLAY_37489 = 37489; /* This file is automatically generated. Do not edit. */ } From abaaf3a121dd82aa3fed82052fc83cbee34937f5 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:35:57 +0000 Subject: [PATCH 25/29] Update NPC IDs to 2019-11-14-rev182 --- runelite-api/src/main/java/net/runelite/api/NpcID.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/NpcID.java b/runelite-api/src/main/java/net/runelite/api/NpcID.java index fac80584cc..c40eac4e49 100644 --- a/runelite-api/src/main/java/net/runelite/api/NpcID.java +++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java @@ -308,7 +308,8 @@ public final class NpcID public static final int FROG = 312; public static final int REACHER_313 = 313; public static final int DR_JEKYLL_314 = 314; - public static final int PAUL = 317; + public static final int LEAGUES_TUTOR = 315; + public static final int LEAGUES_TUTOR_316 = 316; public static final int DARK_CORE = 318; public static final int CORPOREAL_BEAST = 319; public static final int DARK_ENERGY_CORE = 320; @@ -7160,6 +7161,7 @@ public final class NpcID public static final int REVENANT_DARK_BEAST = 7938; public static final int REVENANT_KNIGHT = 7939; public static final int REVENANT_DRAGON = 7940; + public static final int PAUL = 7941; public static final int EMBLEM_TRADER_7943 = 7943; public static final int FISHING_SPOT_7946 = 7946; public static final int FISHING_SPOT_7947 = 7947; From ab92e56d080c990e96e3a7b92601e4134e4a5e9b Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:36:03 +0000 Subject: [PATCH 26/29] Update Scripts to 2019-11-14-rev182 --- .../src/main/scripts/ChatSplitBuilder.hash | 2 +- .../src/main/scripts/ChatSplitBuilder.rs2asm | 20 +-- .../main/scripts/OptionsPanelRebuilder.hash | 2 +- .../main/scripts/OptionsPanelRebuilder.rs2asm | 26 ++-- .../main/scripts/QuestListShowProgress.hash | 2 +- .../main/scripts/QuestListShowProgress.rs2asm | 144 +++++++++++------- .../src/main/scripts/ResetChatboxInput.hash | 2 +- .../src/main/scripts/ResetChatboxInput.rs2asm | 14 +- 8 files changed, 122 insertions(+), 90 deletions(-) diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.hash b/runelite-client/src/main/scripts/ChatSplitBuilder.hash index 9e67531c83..dae4dd64a2 100644 --- a/runelite-client/src/main/scripts/ChatSplitBuilder.hash +++ b/runelite-client/src/main/scripts/ChatSplitBuilder.hash @@ -1 +1 @@ -5BCAA21926CF079794AAF3DA80E512297DD6F8353741929302FE6490D17DDF8C \ No newline at end of file +2A7509A05B336AC79015C479B39CDB3E1D3F10A57C6B96B2162E87352B4F25A3 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm b/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm index 354aa42e71..ed561e82ef 100644 --- a/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm +++ b/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm @@ -62,7 +62,7 @@ LABEL49: iconst 73 iconst 73 iload 6 - iconst 10551325 + iconst 10551326 enum if_getheight add @@ -361,9 +361,9 @@ CHAT_FILTER: iload 15 ; Load the messageType iload 12 ; Load the id of the messageNode sconst "chatFilterCheck" - runelite_callback - pop_int ; Pop the id of the messageNode - pop_int ; Pop the messageType + runelite_callback + pop_int ; Pop the id of the messageNode + pop_int ; Pop the messageType iconst 1 ; 2nd half of conditional sstore 0 ; Override the message with our filtered message if_icmpeq LABEL327 ; Check if we are building this message @@ -380,8 +380,8 @@ LABEL330: iload 12 ; Load the id of the messageNode sconst "" ; Push a container for the timestamp sconst "addTimestamp" ; Push event name - runelite_callback ; Invoke callback - pop_int ; Pop the id of the messageNode + runelite_callback ; Invoke callback + pop_int ; Pop the id of the messageNode sconst "From " sload 1 sconst ":" @@ -409,8 +409,8 @@ LABEL351: iload 12 ; Load the id of the messageNode sconst "" ; Push container for the timestamp sconst "addTimestamp" ; Push event name - runelite_callback ; Invoke callback - pop_int ; Pop the id of the messageNode + runelite_callback ; Invoke callback + pop_int ; Pop the id of the messageNode sconst "To " sload 1 sconst ":" @@ -438,8 +438,8 @@ LABEL372: iload 12 ; Load the id of the messageNode sconst "" ; Push a container for the timestamp sconst "addTimestamp" ; Push event name - runelite_callback ; Invoke callback - pop_int ; Pop the id of the messageNode + runelite_callback ; Invoke callback + pop_int ; Pop the id of the messageNode sload 0 ; Load the log in/out message join_string 2 ; Add the timestamp to the message iload 9 diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash b/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash index 95e14db861..a90e9082b0 100644 --- a/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash +++ b/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash @@ -1 +1 @@ -1D663B889321070027599B4B8437A321C0C83336C703BBBA34BE22A183E1D7B9 \ No newline at end of file +A55D398EBF2C1CE70F2CFC6BEA21939307B69840DEBF46E0384EC2E7EFBBC58A \ No newline at end of file diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm index afb820ff0f..9a2fbfe92f 100644 --- a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm +++ b/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm @@ -12,19 +12,19 @@ iconst 73 iconst 73 iload 1 - iconst 10551306 + iconst 10551307 enum istore 3 iconst 73 iconst 73 iload 1 - iconst 10551301 + iconst 10551302 enum istore 4 iconst 73 iconst 73 iload 1 - iconst 10551308 + iconst 10551309 enum istore 5 iconst 103 @@ -76,14 +76,14 @@ LABEL70: iconst 0 iload 16 - iconst 39387148 + iconst 39387149 if_getwidth sub invoke 1045 istore 14 iconst 0 iload 17 - iconst 39387148 + iconst 39387149 if_getheight sub invoke 1045 @@ -248,7 +248,7 @@ LABEL163: iconst 73 iconst 73 iload 1 - iconst 10551307 + iconst 10551308 enum iload 5 iload 8 @@ -260,7 +260,7 @@ LABEL242: iconst 73 iconst 73 iload 1 - iconst 10551307 + iconst 10551308 enum iload 3 iconst 0 @@ -386,7 +386,7 @@ LABEL316: iconst 73 iconst 73 iload 1 - iconst 10551307 + iconst 10551308 enum iload 5 iload 8 @@ -398,7 +398,7 @@ LABEL359: iconst 73 iconst 73 iload 1 - iconst 10551307 + iconst 10551308 enum iload 3 iconst 0 @@ -408,7 +408,7 @@ LABEL369: iconst 73 iconst 73 iload 1 - iconst 10551309 + iconst 10551310 enum istore 18 iload 18 @@ -472,7 +472,7 @@ LABEL423: iconst 73 iconst 73 iload 1 - iconst 10551311 + iconst 10551312 enum istore 18 iconst 0 @@ -487,7 +487,7 @@ LABEL437: iconst 73 iconst 73 iload 1 - iconst 10551303 + iconst 10551304 enum if_hassub iconst 1 @@ -542,7 +542,7 @@ LABEL481: iconst 73 iconst 73 iload 1 - iconst 10551303 + iconst 10551304 enum istore 18 iconst 0 diff --git a/runelite-client/src/main/scripts/QuestListShowProgress.hash b/runelite-client/src/main/scripts/QuestListShowProgress.hash index d3899f1431..c235a4ae9b 100644 --- a/runelite-client/src/main/scripts/QuestListShowProgress.hash +++ b/runelite-client/src/main/scripts/QuestListShowProgress.hash @@ -1 +1 @@ -A6B3A7BFE7B688A08F69B91A7FD5C7184D71147D3DAF74B1262369D85DBB3A03 \ No newline at end of file +FC7F8B54745582D6DD530D5458E129B67D6B3CFF61BACD4BBE7BC8C40E26F3C6 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/QuestListShowProgress.rs2asm b/runelite-client/src/main/scripts/QuestListShowProgress.rs2asm index 275080edfc..ca43ff61b9 100644 --- a/runelite-client/src/main/scripts/QuestListShowProgress.rs2asm +++ b/runelite-client/src/main/scripts/QuestListShowProgress.rs2asm @@ -15,39 +15,49 @@ LABEL8: iload 5 iload 6 if_icmplt LABEL12 - jump LABEL56 + jump LABEL64 LABEL12: iload 0 iload 5 cc_find iconst 1 if_icmpeq LABEL18 - jump LABEL51 + jump LABEL59 LABEL18: iload 5 invoke 1357 istore 3 + iload 5 + invoke 3236 + iconst 1 + if_icmpeq LABEL26 + jump LABEL29 +LABEL26: + iconst 10461087 + istore 4 + jump LABEL45 +LABEL29: iload 3 iconst 2 - if_icmpeq LABEL25 - jump LABEL28 -LABEL25: + if_icmpeq LABEL33 + jump LABEL36 +LABEL33: iconst 901389 istore 4 - jump LABEL37 -LABEL28: + jump LABEL45 +LABEL36: iload 3 iconst 0 - if_icmpeq LABEL32 - jump LABEL35 -LABEL32: + if_icmpeq LABEL40 + jump LABEL43 +LABEL40: iconst 16776960 istore 4 - jump LABEL37 -LABEL35: + jump LABEL45 +LABEL43: iconst 16711680 istore 4 -LABEL37: +LABEL45: iload 4 cc_setcolour iconst 85 @@ -62,54 +72,64 @@ LABEL37: iload 4 sconst "Iii" cc_setonmouseleave -LABEL51: +LABEL59: iload 5 iconst 1 add istore 5 jump LABEL8 -LABEL56: +LABEL64: iconst 0 invoke 2245 istore 6 istore 5 -LABEL60: +LABEL68: iload 5 iload 6 - if_icmplt LABEL64 - jump LABEL108 -LABEL64: + if_icmplt LABEL72 + jump LABEL124 +LABEL72: iload 1 iload 5 cc_find iconst 1 - if_icmpeq LABEL70 - jump LABEL103 -LABEL70: + if_icmpeq LABEL78 + jump LABEL119 +LABEL78: iload 5 invoke 1358 istore 3 + iload 5 + invoke 3237 + iconst 1 + if_icmpeq LABEL86 + jump LABEL89 +LABEL86: + iconst 10461087 + istore 4 + jump LABEL105 +LABEL89: iload 3 iconst 2 - if_icmpeq LABEL77 - jump LABEL80 -LABEL77: + if_icmpeq LABEL93 + jump LABEL96 +LABEL93: iconst 901389 istore 4 - jump LABEL89 -LABEL80: + jump LABEL105 +LABEL96: iload 3 iconst 0 - if_icmpeq LABEL84 - jump LABEL87 -LABEL84: + if_icmpeq LABEL100 + jump LABEL103 +LABEL100: iconst 16776960 istore 4 - jump LABEL89 -LABEL87: + jump LABEL105 +LABEL103: iconst 16711680 istore 4 -LABEL89: +LABEL105: iload 4 cc_setcolour iconst 85 @@ -124,54 +144,64 @@ LABEL89: iload 4 sconst "Iii" cc_setonmouseleave -LABEL103: +LABEL119: iload 5 iconst 1 add istore 5 - jump LABEL60 -LABEL108: + jump LABEL68 +LABEL124: iconst 0 invoke 2265 istore 6 istore 5 -LABEL112: +LABEL128: iload 5 iload 6 - if_icmplt LABEL116 - jump LABEL160 -LABEL116: + if_icmplt LABEL132 + jump LABEL184 +LABEL132: iload 2 iload 5 cc_find iconst 1 - if_icmpeq LABEL122 - jump LABEL155 -LABEL122: + if_icmpeq LABEL138 + jump LABEL179 +LABEL138: iload 5 invoke 1359 istore 3 + iload 5 + invoke 3238 + iconst 1 + if_icmpeq LABEL146 + jump LABEL149 +LABEL146: + iconst 10461087 + istore 4 + jump LABEL165 +LABEL149: iload 3 iconst 2 - if_icmpeq LABEL129 - jump LABEL132 -LABEL129: + if_icmpeq LABEL153 + jump LABEL156 +LABEL153: iconst 901389 istore 4 - jump LABEL141 -LABEL132: + jump LABEL165 +LABEL156: iload 3 iconst 0 - if_icmpeq LABEL136 - jump LABEL139 -LABEL136: + if_icmpeq LABEL160 + jump LABEL163 +LABEL160: iconst 16776960 istore 4 - jump LABEL141 -LABEL139: + jump LABEL165 +LABEL163: iconst 16711680 istore 4 -LABEL141: +LABEL165: iload 4 cc_setcolour iconst 85 @@ -186,13 +216,13 @@ LABEL141: iload 4 sconst "Iii" cc_setonmouseleave -LABEL155: +LABEL179: iload 5 iconst 1 add istore 5 - jump LABEL112 -LABEL160: + jump LABEL128 +LABEL184: sconst "questProgressUpdated" runelite_callback return diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.hash b/runelite-client/src/main/scripts/ResetChatboxInput.hash index 12bd3c5bb1..2c90f09832 100644 --- a/runelite-client/src/main/scripts/ResetChatboxInput.hash +++ b/runelite-client/src/main/scripts/ResetChatboxInput.hash @@ -1 +1 @@ -E8B1910003198AB024BADC89831AF1735A2C77256C23551212105F25439E022D \ No newline at end of file +9985AC752BF689CA5353232CF302B41E83EC1901D8615B507EA10DFAA9F5AF9A \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm b/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm index 40f4b02c6f..17070abc16 100644 --- a/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm +++ b/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm @@ -165,16 +165,18 @@ LABEL40: get_varc_int 41 iconst 1337 if_icmpeq LABEL154 - jump LABEL156 + jump LABEL158 LABEL154: invoke 2526 pop_int -LABEL156: + clientclock + set_varc_int 384 +LABEL158: invoke 1972 iconst 1 - if_icmpeq LABEL160 - jump LABEL161 -LABEL160: + if_icmpeq LABEL162 + jump LABEL163 +LABEL162: invoke 2581 -LABEL161: +LABEL163: return From 161447e316113dde9076e1db372e1bfeea6ff87c Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Thu, 14 Nov 2019 10:36:04 +0000 Subject: [PATCH 27/29] Update Widget IDs to 2019-11-14-rev182 Lost widget 629.3 --- .../net/runelite/api/widgets/WidgetID.java | 189 +++++++++--------- .../net/runelite/api/widgets/WidgetInfo.java | 2 - 2 files changed, 91 insertions(+), 100 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index 3ccaf94371..7c27c4fd9e 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -131,7 +131,6 @@ public class WidgetID public static final int FULLSCREEN_MAP_GROUP_ID = 165; public static final int QUESTLIST_GROUP_ID = 399; public static final int SKILLS_GROUP_ID = 320; - public static final int QUESTTAB_GROUP_ID = 629; public static final int MUSIC_GROUP_ID = 239; public static final int BARROWS_PUZZLE_GROUP_ID = 25; public static final int KEPT_ON_DEATH_GROUP_ID = 4; @@ -327,120 +326,120 @@ public class WidgetID static class Viewport { - static final int MINIMAP_RESIZABLE_WIDGET = 17; - static final int MINIMAP_RESIZABLE_CLICKBOX = 18; - static final int MINIMAP_RESIZABLE_DRAW_AREA = 25; - static final int MINIMAP_RESIZABLE_DECORATIONS = 27; - static final int MINIMAP_RESIZABLE_ORB_HOLDER = 28; - static final int MINIMAP_RESIZABLE_LOGOUT_BUTTON = 30; + static final int MINIMAP_RESIZABLE_WIDGET = 18; + static final int MINIMAP_RESIZABLE_CLICKBOX = 19; + static final int MINIMAP_RESIZABLE_DRAW_AREA = 26; + static final int MINIMAP_RESIZABLE_DECORATIONS = 28; + static final int MINIMAP_RESIZABLE_ORB_HOLDER = 29; + static final int MINIMAP_RESIZABLE_LOGOUT_BUTTON = 31; static final int FIXED_VIEWPORT = 17; - static final int RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX = 12; - static final int RESIZABLE_VIEWPORT_BOTTOM_LINE = 12; + static final int RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX = 13; + static final int RESIZABLE_VIEWPORT_BOTTOM_LINE = 13; } static class FixedViewport { static final int MINIMAP = 3; static final int MINIMAP_DRAW_AREA = 8; - static final int CLAN_CHAT_TAB = 31; - static final int FRIENDS_TAB = 33; - static final int IGNORES_TAB = 32; - static final int LOGOUT_TAB = 34; - static final int OPTIONS_TAB = 35; - static final int EMOTES_TAB = 36; - static final int MUSIC_TAB = 37; - static final int CLAN_CHAT_ICON = 38; - static final int FRIENDS_ICON = 40; - static final int IGNORES_ICON = 39; - static final int LOGOUT_ICON = 41; - static final int OPTIONS_ICON = 42; - static final int EMOTES_ICON = 43; - static final int MUSIC_ICON = 44; - static final int COMBAT_TAB = 48; - static final int STATS_TAB = 49; - static final int QUESTS_TAB = 50; - static final int INVENTORY_TAB = 51; - static final int EQUIPMENT_TAB = 52; - static final int PRAYER_TAB = 53; - static final int MAGIC_TAB = 54; - static final int COMBAT_ICON = 55; - static final int STATS_ICON = 56; - static final int QUESTS_ICON = 57; - static final int INVENTORY_ICON = 58; - static final int EQUIPMENT_ICON = 59; - static final int PRAYER_ICON = 60; - static final int MAGIC_ICON = 61; - static final int ROOT_INTERFACE_CONTAINER = 62; - static final int BANK_CONTAINER = 64; - static final int INTERFACE_CONTAINER = 65; - static final int INVENTORY_CONTAINER = 69; + static final int CLAN_CHAT_TAB = 32; + static final int FRIENDS_TAB = 34; + static final int IGNORES_TAB = 33; + static final int LOGOUT_TAB = 35; + static final int OPTIONS_TAB = 36; + static final int EMOTES_TAB = 37; + static final int MUSIC_TAB = 38; + static final int CLAN_CHAT_ICON = 39; + static final int FRIENDS_ICON = 41; + static final int IGNORES_ICON = 40; + static final int LOGOUT_ICON = 42; + static final int OPTIONS_ICON = 43; + static final int EMOTES_ICON = 44; + static final int MUSIC_ICON = 45; + static final int COMBAT_TAB = 49; + static final int STATS_TAB = 50; + static final int QUESTS_TAB = 51; + static final int INVENTORY_TAB = 52; + static final int EQUIPMENT_TAB = 53; + static final int PRAYER_TAB = 54; + static final int MAGIC_TAB = 55; + static final int COMBAT_ICON = 56; + static final int STATS_ICON = 57; + static final int QUESTS_ICON = 58; + static final int INVENTORY_ICON = 59; + static final int EQUIPMENT_ICON = 60; + static final int PRAYER_ICON = 61; + static final int MAGIC_ICON = 62; + static final int ROOT_INTERFACE_CONTAINER = 63; + static final int BANK_CONTAINER = 65; + static final int INTERFACE_CONTAINER = 66; + static final int INVENTORY_CONTAINER = 70; } static class ResizableViewport { - static final int CLAN_CHAT_TAB = 35; - static final int FRIENDS_TAB = 37; - static final int IGNORES_TAB = 36; - static final int LOGOUT_TAB = 38; - static final int OPTIONS_TAB = 39; - static final int EMOTES_TAB = 40; - static final int MUSIC_TAB = 41; - static final int CLAN_CHAT_ICON = 42; - static final int FRIENDS_ICON = 44; - static final int IGNORES_ICON = 43; - static final int LOGOUT_ICON = 45; - static final int OPTIONS_ICON = 46; - static final int EMOTES_ICON = 47; - static final int MUSIC_ICON = 48; - static final int COMBAT_TAB = 51; - static final int STATS_TAB = 52; - static final int QUESTS_TAB = 53; - static final int INVENTORY_TAB = 54; - static final int EQUIPMENT_TAB = 55; - static final int PRAYER_TAB = 56; - static final int MAGIC_TAB = 57; - static final int COMBAT_ICON = 58; - static final int STATS_ICON = 59; - static final int QUESTS_ICON = 60; - static final int INVENTORY_ICON = 61; - static final int EQUIPMENT_ICON = 62; - static final int PRAYER_ICON = 63; - static final int MAGIC_ICON = 64; - static final int INTERFACE_CONTAINER = 65; - static final int INVENTORY_CONTAINER = 71; + static final int CLAN_CHAT_TAB = 36; + static final int FRIENDS_TAB = 38; + static final int IGNORES_TAB = 37; + static final int LOGOUT_TAB = 39; + static final int OPTIONS_TAB = 40; + static final int EMOTES_TAB = 41; + static final int MUSIC_TAB = 42; + static final int CLAN_CHAT_ICON = 43; + static final int FRIENDS_ICON = 45; + static final int IGNORES_ICON = 44; + static final int LOGOUT_ICON = 46; + static final int OPTIONS_ICON = 47; + static final int EMOTES_ICON = 48; + static final int MUSIC_ICON = 49; + static final int COMBAT_TAB = 52; + static final int STATS_TAB = 53; + static final int QUESTS_TAB = 54; + static final int INVENTORY_TAB = 55; + static final int EQUIPMENT_TAB = 56; + static final int PRAYER_TAB = 57; + static final int MAGIC_TAB = 58; + static final int COMBAT_ICON = 59; + static final int STATS_ICON = 60; + static final int QUESTS_ICON = 61; + static final int INVENTORY_ICON = 62; + static final int EQUIPMENT_ICON = 63; + static final int PRAYER_ICON = 64; + static final int MAGIC_ICON = 65; + static final int INTERFACE_CONTAINER = 66; + static final int INVENTORY_CONTAINER = 72; } static class ResizableViewportBottomLine { - static final int LOGOUT_BUTTON_OVERLAY = 29; + static final int LOGOUT_BUTTON_OVERLAY = 30; static final int CMB_TAB = 50; - static final int CMB_ICON = 57; + static final int CMB_ICON = 58; static final int SKILLS_TAB = 51; - static final int SKILLS_ICON = 58; + static final int SKILLS_ICON = 59; static final int QUESTS_TAB = 52; - static final int QUESTS_ICON = 59; - static final int INVENTORY_TAB = 53; - static final int INVENTORY_ICON = 60; + static final int QUESTS_ICON = 60; + static final int INVENTORY_TAB = 54; + static final int INVENTORY_ICON = 61; static final int EQUIP_TAB = 54; - static final int EQUIP_ICON = 61; - static final int PRAYER_TAB = 55; - static final int PRAYER_ICON = 62; + static final int EQUIP_ICON = 62; + static final int PRAYER_TAB = 56; + static final int PRAYER_ICON = 63; static final int SPELL_TAB = 56; static final int SPELL_ICON = 53; static final int FC_TAB = 35; - static final int FC_ICON = 41; + static final int FC_ICON = 42; static final int IGNORE_TAB = 36; static final int IGNORE_ICON = 42; static final int FRIEND_TAB = 37; - static final int FRIEND_ICON = 43; + static final int FRIEND_ICON = 44; static final int SETTINGS_TAB = 38; - static final int SETTINGS_ICON = 44; + static final int SETTINGS_ICON = 45; static final int EMOTE_TAB = 39; - static final int EMOTE_ICON = 45; + static final int EMOTE_ICON = 46; static final int MUSIC_TAB = 40; - static final int MUSIC_ICON = 46; - static final int MAGIC_ICON = 63; - static final int INVENTORY_CONTAINER = 71; + static final int MUSIC_ICON = 47; + static final int MAGIC_ICON = 64; + static final int INVENTORY_CONTAINER = 72; } static class Chatbox @@ -732,22 +731,22 @@ public class WidgetID static class StandardSpellBook { - static final int LUMBRIDGE_HOME_TELEPORT = 4; + static final int LUMBRIDGE_HOME_TELEPORT = 5; } static class AncientSpellBook { - static final int EDGEVILLE_HOME_TELEPORT = 98; + static final int EDGEVILLE_HOME_TELEPORT = 99; } static class LunarSpellBook { - static final int LUNAR_HOME_TELEPORT = 99; + static final int LUNAR_HOME_TELEPORT = 100; } static class ArceuusSpellBook { - static final int ARCEUUS_HOME_TELEPORT = 143; + static final int ARCEUUS_HOME_TELEPORT = 144; } static class Pvp @@ -781,7 +780,7 @@ public class WidgetID static class FullScreenMap { - static final int ROOT = 25; + static final int ROOT = 26; } static class QuestList @@ -793,12 +792,6 @@ public class WidgetID static final int MEMBERS_CONTAINER = 7; static final int MINIQUEST_CONTAINER = 8; } - - static class QuestTab - { - static final int QUEST_TAB = 3; - } - static class Music { static final int CONTAINER = 0; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index fe2e03e720..aa1260990b 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -492,8 +492,6 @@ public enum WidgetInfo QUESTLIST_MEMBERS_CONTAINER(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.MEMBERS_CONTAINER), QUESTLIST_MINIQUEST_CONTAINER(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.MINIQUEST_CONTAINER), - QUESTTAB_QUEST_TAB(WidgetID.QUESTTAB_GROUP_ID, WidgetID.QuestTab.QUEST_TAB), - ITEMS_KEPT_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_TEXT), ITEMS_KEPT_ON_DEATH_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_CONTAINER), ITEMS_LOST_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.LOST_ITEMS_TEXT), From 1d3752cfe859ae78ec542daa4580f2418d6fd9a6 Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Thu, 14 Nov 2019 11:35:31 +0000 Subject: [PATCH 28/29] Release 1.5.40 --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- http-api/pom.xml | 2 +- http-service/pom.xml | 2 +- pom.xml | 4 ++-- protocol-api/pom.xml | 2 +- protocol/pom.xml | 2 +- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index 8daf7f36bd..1755e54ac2 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index c9e352ffc5..c8270dd25c 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index b03f047c6a..58a655421a 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 cache diff --git a/http-api/pom.xml b/http-api/pom.xml index 2da378f990..e11097e2e9 100644 --- a/http-api/pom.xml +++ b/http-api/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 Web API diff --git a/http-service/pom.xml b/http-service/pom.xml index 61d4417e37..7c8946a81d 100644 --- a/http-service/pom.xml +++ b/http-service/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 Web Service diff --git a/pom.xml b/pom.xml index bddc36e7cb..958174b149 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 pom RuneLite @@ -59,7 +59,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - HEAD + runelite-parent-1.5.40 diff --git a/protocol-api/pom.xml b/protocol-api/pom.xml index 48b477fea0..634d21c678 100644 --- a/protocol-api/pom.xml +++ b/protocol-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 protocol-api diff --git a/protocol/pom.xml b/protocol/pom.xml index 0a0b5acf19..4c1cec5091 100644 --- a/protocol/pom.xml +++ b/protocol/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 protocol diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index 1ca34f0020..1d1ceef326 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 858bb1afcf..1dc9664ea9 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 client diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index aee8c1da80..ae26d00710 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40-SNAPSHOT + 1.5.40 script-assembler-plugin From 11e83ac02bc9b560cf3460bddd19a91cbdc76416 Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Thu, 14 Nov 2019 11:35:38 +0000 Subject: [PATCH 29/29] Bump for 1.5.41-SNAPSHOT --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- http-api/pom.xml | 2 +- http-service/pom.xml | 2 +- pom.xml | 4 ++-- protocol-api/pom.xml | 2 +- protocol/pom.xml | 2 +- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index 1755e54ac2..14b78dedc0 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index c8270dd25c..8b1cfbfbce 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index 58a655421a..2d6b2902ba 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT cache diff --git a/http-api/pom.xml b/http-api/pom.xml index e11097e2e9..d6f31c6e57 100644 --- a/http-api/pom.xml +++ b/http-api/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT Web API diff --git a/http-service/pom.xml b/http-service/pom.xml index 7c8946a81d..6a1acf76f9 100644 --- a/http-service/pom.xml +++ b/http-service/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT Web Service diff --git a/pom.xml b/pom.xml index 958174b149..40db9c24b6 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT pom RuneLite @@ -59,7 +59,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - runelite-parent-1.5.40 + HEAD diff --git a/protocol-api/pom.xml b/protocol-api/pom.xml index 634d21c678..18a385b30b 100644 --- a/protocol-api/pom.xml +++ b/protocol-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT protocol-api diff --git a/protocol/pom.xml b/protocol/pom.xml index 4c1cec5091..1de9223e25 100644 --- a/protocol/pom.xml +++ b/protocol/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT protocol diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index 1d1ceef326..f773eb6747 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 1dc9664ea9..557e5b84d4 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT client diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index ae26d00710..632c879b8a 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.5.40 + 1.5.41-SNAPSHOT script-assembler-plugin