Quote from Johny on April 24, 2022, 2:18 pmDONT DO THIS. IT WILL BREAK YOUR MAGIC TAB, PEOPLE ARE OFFERING TO DO THIS FOR MONEY DONT FALL FOR THE SCAM.
[IMG]Click here to view the original image of 1233x772px.[/IMG]
https://www.dropbox.com/s/9qoe2b25vl...20203.rar?dl=0
https://github.com/jessewhitley/ValkyrCacheSuite updated with a javafx libary to load easyer
add this to the buffer class inside the standalone client inside runelite-client
Code:public int method7383() { int var1 = 0; // L: 302 int var2; for (var2 = this.readUShortSmart(); var2 == 32767; var2 = this.readUShortSmart()) { // L: 303 304 306 var1 += 32767; // L: 305 } var1 += var2; // L: 308 return var1; // L: 309 } public int readUShortSmart() { int var1 = this.array[this.offset] & 255; // L: 296 return var1 < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 32768; // L: 297 298 } public void writeShort(int var1) { this.array[++this.offset - 1] = (byte)(var1 >> 8); // L: 75 this.array[++this.offset - 1] = (byte)var1; // L: 76 } public int readShortSmart() { int var1 = this.array[this.offset] & 255; // L: 290 return var1 < 128 ? this.readUnsignedByte() - 64 : this.readUnsignedShort() - 49152; // L: 291 292 }
fine method2209 inside class92 and make sure it match's
Code:while(true) { int var12 = var10.method7383(); if(var12 == 0) { return; } var11 += var12; int var13 = 0; while(true) { int var14 = var10.readUnsignedSmart(); if(var14 == 0) { break; }
replace you itemdef npcdef and object def
Code:package net.runelite.standalone; import java.io.IOException; import java.util.Arrays; import net.runelite.api.events.PostItemDefinition; import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; import net.runelite.rs.api.RSItemDefinition; import net.runelite.rs.api.RSModel; @ObfuscatedName("it") public class ItemDefinition extends DualNode implements RSItemDefinition { @ObfuscatedName("p") @ObfuscatedSignature( signature = "Lhp;" ) static AbstractArchive ItemDefinition_archive; @ObfuscatedName("q") @ObfuscatedSignature( signature = "Lhp;" ) static AbstractArchive ItemDefinition_modelArchive; @ObfuscatedName("b") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable ItemDefinition_cachedSprites; @ObfuscatedName("c") @ObfuscatedSignature( signature = "Lem;" ) static EvictingDualNodeHashTable ItemDefinition_cachedModels; @ObfuscatedName("i") @ObfuscatedSignature( signature = "Lem;" ) static EvictingDualNodeHashTable ItemDefinition_cached; @ObfuscatedName("s") @ObfuscatedGetter( intValue = -1552364581 ) public int zoom2d; @ObfuscatedName("t") short[] recolorFrom; @ObfuscatedName("w") public String name; @ObfuscatedName("x") short[] retextureFrom; @ObfuscatedName("a") @ObfuscatedGetter( intValue = 1164476445 ) public int id; @ObfuscatedName("aa") public String[] groundActions; @ObfuscatedName("ab") @ObfuscatedGetter( intValue = -281574303 ) int shiftClickIndex; @ObfuscatedName("ac") @ObfuscatedGetter( intValue = -1898122861 ) public int isStackable; @ObfuscatedName("ad") @ObfuscatedGetter( intValue = -774987533 ) int femaleModel1; @ObfuscatedName("ae") @ObfuscatedGetter( intValue = -622073101 ) int femaleHeadModel; @ObfuscatedName("af") @ObfuscatedGetter( intValue = 1043908831 ) int resizeY; @ObfuscatedName("ag") int[] countco; @ObfuscatedName("ah") int[] countobj; @ObfuscatedName("ai") @ObfuscatedGetter( intValue = -629230839 ) int maleModel2; @ObfuscatedName("aj") @ObfuscatedGetter( intValue = 2003146835 ) public int note; @ObfuscatedName("ak") @ObfuscatedGetter( intValue = -1320032129 ) int femaleModel2; @ObfuscatedName("al") @ObfuscatedGetter( intValue = -472240431 ) int femaleModel; @ObfuscatedName("am") @ObfuscatedGetter( intValue = 1142570821 ) int maleHeadModel2; @ObfuscatedName("an") @ObfuscatedGetter( intValue = 839022773 ) int femaleOffset; @ObfuscatedName("ao") @ObfuscatedGetter( intValue = 708775895 ) int maleOffset; @ObfuscatedName("ap") public String[] inventoryActions; @ObfuscatedName("aq") @ObfuscatedGetter( intValue = 2070739727 ) int maleHeadModel; @ObfuscatedName("as") @ObfuscatedGetter( intValue = -1653428101 ) int maleModel1; @ObfuscatedName("at") @ObfuscatedGetter( intValue = -251593053 ) int resizeZ; @ObfuscatedName("au") @ObfuscatedGetter( intValue = 146352651 ) int resizeX; @ObfuscatedName("av") @ObfuscatedGetter( intValue = -1870487091 ) int femaleHeadModel2; @ObfuscatedName("aw") public boolean isMembersOnly; @ObfuscatedName("ax") @ObfuscatedGetter( intValue = -1611629547 ) int maleModel; @ObfuscatedName("ay") @ObfuscatedGetter( intValue = -922094347 ) public int noteTemplate; @ObfuscatedName("az") @ObfuscatedGetter( intValue = -187431889 ) public int price; @ObfuscatedName("bc") @ObfuscatedGetter( intValue = -1887741169 ) public int placeholderTemplate; @ObfuscatedName("bd") @ObfuscatedGetter( intValue = 850095651 ) public int team; @ObfuscatedName("bh") @ObfuscatedGetter( intValue = 807356389 ) public int contrast; @ObfuscatedName("bj") @ObfuscatedGetter( intValue = 1578768163 ) int unnotedId; @ObfuscatedName("bm") @ObfuscatedSignature( signature = "Llb;" ) IterableNodeHashTable params; @ObfuscatedName("bs") @ObfuscatedGetter( intValue = -407908075 ) int notedId; @ObfuscatedName("bv") public boolean isTradable; @ObfuscatedName("bx") @ObfuscatedGetter( intValue = 427704773 ) public int ambient; @ObfuscatedName("bz") @ObfuscatedGetter( intValue = -1594376835 ) public int placeholder; public int shiftClickActionIndex; public int modelOverride; @ObfuscatedName("d") @ObfuscatedGetter( intValue = -1211123861 ) public int zan2d; @ObfuscatedName("e") @ObfuscatedGetter( intValue = -512556695 ) int model; @ObfuscatedName("f") @ObfuscatedGetter( intValue = 850273909 ) public int xan2d; @ObfuscatedName("g") short[] recolorTo; @ObfuscatedName("h") short[] retextureTo; @ObfuscatedName("j") @ObfuscatedGetter( intValue = 1701459647 ) public int yan2d; @ObfuscatedName("k") @ObfuscatedGetter( intValue = 992637627 ) public int offsetY2d; @ObfuscatedName("l") @ObfuscatedGetter( intValue = -973833067 ) public int offsetX2d; static { ItemDefinition_cached = new EvictingDualNodeHashTable(64); ItemDefinition_cachedModels = new EvictingDualNodeHashTable(50); ItemDefinition_cachedSprites = new EvictingDualNodeHashTable(200); } ItemDefinition() { this.name = "null"; this.zoom2d = 2000; this.xan2d = 0; this.yan2d = 0; this.zan2d = 0; this.offsetX2d = 0; this.offsetY2d = 0; this.isStackable = 0; this.price = 1; this.isMembersOnly = false; this.groundActions = new String[]{null, null, "Take", null, null}; this.inventoryActions = new String[]{null, null, null, null, "Drop"}; this.shiftClickIndex = -2; this.maleModel = -1; this.maleModel1 = -1; this.maleOffset = 0; this.femaleModel = -1; this.femaleModel1 = -1; this.femaleOffset = 0; this.maleModel2 = -1; this.femaleModel2 = -1; this.maleHeadModel = -1; this.maleHeadModel2 = -1; this.femaleHeadModel = -1; this.femaleHeadModel2 = -1; this.note = -1; this.noteTemplate = -1; this.resizeX = 128; this.resizeY = 128; this.resizeZ = 128; this.ambient = 0; this.contrast = 0; this.team = 0; this.isTradable = false; this.unnotedId = -1; this.notedId = -1; this.placeholder = -1; this.placeholderTemplate = -1; this.rl$$init(); } @ObfuscatedName("p") @ObfuscatedSignature( signature = "(Lit;Lit;B)V", garbageValue = "126" ) void method4552(ItemDefinition var1, ItemDefinition var2) { this.model = var1.model; this.zoom2d = var1.zoom2d; this.xan2d = var1.xan2d; this.yan2d = var1.yan2d; this.zan2d = var1.zan2d; this.offsetX2d = var1.offsetX2d; this.offsetY2d = var1.offsetY2d; this.recolorFrom = var1.recolorFrom; this.recolorTo = var1.recolorTo; this.retextureFrom = var1.retextureFrom; this.retextureTo = var1.retextureTo; this.name = var2.name; this.isMembersOnly = var2.isMembersOnly; this.price = var2.price; this.isStackable = 1; } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(Lit;Lit;S)V", garbageValue = "-15779" ) void method4532(ItemDefinition var1, ItemDefinition var2) { this.model = var1.model; this.zoom2d = var1.zoom2d; this.xan2d = var1.xan2d; this.yan2d = var1.yan2d; this.zan2d = var1.zan2d; this.offsetX2d = var1.offsetX2d; this.offsetY2d = var1.offsetY2d; this.recolorFrom = var2.recolorFrom; this.recolorTo = var2.recolorTo; this.retextureFrom = var2.retextureFrom; this.retextureTo = var2.retextureTo; this.name = var2.name; this.isMembersOnly = var2.isMembersOnly; this.isStackable = var2.isStackable; this.maleModel = var2.maleModel; this.maleModel1 = var2.maleModel1; this.maleModel2 = var2.maleModel2; this.femaleModel = var2.femaleModel; this.femaleModel1 = var2.femaleModel1; this.femaleModel2 = var2.femaleModel2; this.maleHeadModel = var2.maleHeadModel; this.maleHeadModel2 = var2.maleHeadModel2; this.femaleHeadModel = var2.femaleHeadModel; this.femaleHeadModel2 = var2.femaleHeadModel2; this.team = var2.team; this.groundActions = var2.groundActions; this.inventoryActions = new String[5]; if(var2.inventoryActions != null) { for(int var3 = 0; var3 < 4; ++var3) { this.inventoryActions[var3] = var2.inventoryActions[var3]; } } this.inventoryActions[4] = "Discard"; this.price = 0; } @ObfuscatedName("r") @ObfuscatedSignature( signature = "(Lkl;IB)V", garbageValue = "7" ) void method4579(Buffer var1, int var2) { if(var2 == 1) { this.model = var1.readUnsignedShort(); } else if(var2 == 2) { this.name = var1.readString(); } else if(var2 == 4) { this.zoom2d = var1.readUnsignedShort(); } else if(var2 == 5) { this.xan2d = var1.readUnsignedShort(); } else if(var2 == 6) { this.yan2d = var1.readUnsignedShort(); } else if(var2 == 7) { this.offsetX2d = var1.readUnsignedShort(); if(this.offsetX2d > 32767) { this.offsetX2d -= 65536; } } else if(var2 == 8) { this.offsetY2d = var1.readUnsignedShort(); if(this.offsetY2d > 32767) { this.offsetY2d -= 65536; } } else if (var2 == 9) { var1.readString(); } else if(var2 == 11) { this.isStackable = 1; } else if(var2 == 12) { this.price = var1.readInt(); } else if(var2 == 16) { this.isMembersOnly = true; } else if(var2 == 23) { this.maleModel = var1.readUnsignedShort(); this.maleOffset = var1.readUnsignedByte(); } else if(var2 == 24) { this.maleModel1 = var1.readUnsignedShort(); } else if(var2 == 25) { this.femaleModel = var1.readUnsignedShort(); this.femaleOffset = var1.readUnsignedByte(); } else if(var2 == 26) { this.femaleModel1 = var1.readUnsignedShort(); } else if(var2 >= 30 && var2 < 35) { this.groundActions[var2 - 30] = var1.readString(); if(this.groundActions[var2 - 30].equalsIgnoreCase("Hidden")) { this.groundActions[var2 - 30] = null; } } else if(var2 >= 35 && var2 < 40) { this.inventoryActions[var2 - 35] = var1.readString(); } else { int var3; int var4; if(var2 == 40) { var3 = var1.readUnsignedByte(); this.recolorFrom = new short[var3]; this.recolorTo = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.recolorFrom[var4] = (short)var1.readUnsignedShort(); this.recolorTo[var4] = (short)var1.readUnsignedShort(); } } else if(var2 == 41) { var3 = var1.readUnsignedByte(); this.retextureFrom = new short[var3]; this.retextureTo = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.retextureFrom[var4] = (short)var1.readUnsignedShort(); this.retextureTo[var4] = (short)var1.readUnsignedShort(); } } else if(var2 == 42) { this.shiftClickIndex = var1.readByte(); } else if(var2 == 65) { this.isTradable = true; } else if(var2 == 78) { this.maleModel2 = var1.readUnsignedShort(); } else if(var2 == 79) { this.femaleModel2 = var1.readUnsignedShort(); } else if(var2 == 90) { this.maleHeadModel = var1.readUnsignedShort(); } else if(var2 == 91) { this.femaleHeadModel = var1.readUnsignedShort(); } else if(var2 == 92) { this.maleHeadModel2 = var1.readUnsignedShort(); } else if(var2 == 93) { this.femaleHeadModel2 = var1.readUnsignedShort(); } else if (var2 == 94) { var1.readUnsignedShort(); } else if(var2 == 95) { this.zan2d = var1.readUnsignedShort(); } else if(var2 == 97) { this.note = var1.readUnsignedShort(); } else if(var2 == 98) { this.noteTemplate = var1.readUnsignedShort(); } else if(var2 >= 100 && var2 < 110) { if(this.countobj == null) { this.countobj = new int[10]; this.countco = new int[10]; } this.countobj[var2 - 100] = var1.readUnsignedShort(); this.countco[var2 - 100] = var1.readUnsignedShort(); } else if(var2 == 110) { this.resizeX = var1.readUnsignedShort(); } else if(var2 == 111) { this.resizeY = var1.readUnsignedShort(); } else if(var2 == 112) { this.resizeZ = var1.readUnsignedShort(); } else if(var2 == 113) { this.ambient = var1.readByte(); } else if(var2 == 114) { this.contrast = var1.readByte() * 5; } else if(var2 == 115) { this.team = var1.readUnsignedByte(); } else if(var2 == 139) { this.unnotedId = var1.readUnsignedShort(); } else if(var2 == 140) { this.notedId = var1.readUnsignedShort(); } else if(var2 == 148) { this.placeholder = var1.readUnsignedShort(); } else if(var2 == 149) { this.placeholderTemplate = var1.readUnsignedShort(); } else if(var2 == 249) { this.params = UserComparator5.method3374(var1, this.params); } } } @ObfuscatedName("s") @ObfuscatedSignature( signature = "(IIB)I", garbageValue = "59" ) public int getParam(int index, int defaultInt) { return HealthBar.getParam(this.params, index, defaultInt); } @ObfuscatedName("u") @ObfuscatedSignature( signature = "(Lkl;B)V", garbageValue = "32" ) void method4527(Buffer var1) { while(true) { int var2 = var1.readUnsignedByte(); if(var2 == 0) { return; } this.method4579(var1, var2); } } @ObfuscatedName("v") @ObfuscatedSignature( signature = "(B)V", garbageValue = "1" ) void method4528() { this.post(); } @ObfuscatedName("x") @ObfuscatedSignature( signature = "(ZB)Z", garbageValue = "100" ) public final boolean method4556(boolean var1) { int var2 = this.maleHeadModel; int var3 = this.maleHeadModel2; if(var1) { var2 = this.femaleHeadModel; var3 = this.femaleHeadModel2; } if(var2 == -1) { return true; } else { boolean var4 = true; if(!ItemDefinition_modelArchive.method4024(var2, 0)) { var4 = false; } if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) { var4 = false; } return var4; } } @ObfuscatedName("y") @ObfuscatedSignature( signature = "(IB)Ldw;", garbageValue = "-102" ) public final ModelData method4534(int var1) { int var3; if(this.countobj != null && var1 > 1) { int var2 = -1; for(var3 = 0; var3 < 10; ++var3) { if(var1 >= this.countco[var3] && this.countco[var3] != 0) { var2 = this.countobj[var3]; } } if(var2 != -1) { return Occluder.getItemDefinition(var2).method4534(1); } } ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0); if(var4 == null) { return null; } else { if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) { var4.method2773(this.resizeX, this.resizeY, this.resizeZ); } if(this.recolorFrom != null) { for(var3 = 0; var3 < this.recolorFrom.length; ++var3) { var4.method2770(this.recolorFrom[var3], this.recolorTo[var3]); } } if(this.retextureFrom != null) { for(var3 = 0; var3 < this.retextureFrom.length; ++var3) { var4.method2831(this.retextureFrom[var3], this.retextureTo[var3]); } } return var4; } } @ObfuscatedName("a") @ObfuscatedSignature( signature = "(ZI)Z", garbageValue = "-94789059" ) public final boolean method4537(boolean var1) { int var2 = this.maleModel; int var3 = this.maleModel1; int var4 = this.maleModel2; if(var1) { var2 = this.femaleModel; var3 = this.femaleModel1; var4 = this.femaleModel2; } if(var2 == -1) { return true; } else { boolean var5 = true; if(!ItemDefinition_modelArchive.method4024(var2, 0)) { var5 = false; } if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) { var5 = false; } if(var4 != -1 && !ItemDefinition_modelArchive.method4024(var4, 0)) { var5 = false; } return var5; } } @ObfuscatedName("c") @ObfuscatedSignature( signature = "(IB)Lit;", garbageValue = "23" ) public ItemDefinition method4559(int var1) { if(this.countobj != null && var1 > 1) { int var2 = -1; for(int var3 = 0; var3 < 10; ++var3) { if(var1 >= this.countco[var3] && this.countco[var3] != 0) { var2 = this.countobj[var3]; } } if(var2 != -1) { return Occluder.getItemDefinition(var2); } } return this; } public int getIsStackable() { return this.isStackable; } public void post() { PostItemDefinition var1 = new PostItemDefinition(); var1.setItemDefinition(this); ViewportMouse.client.getCallbacks().post(PostItemDefinition.class, var1); } public int copy$getShiftClickIndex(int var1) { return this.shiftClickIndex != -1 && this.inventoryActions != null?(this.shiftClickIndex >= 0?(this.inventoryActions[this.shiftClickIndex] != null?this.shiftClickIndex:-1):("Drop".equalsIgnoreCase(this.inventoryActions[4])?4:-1)):-1; } @ObfuscatedSignature( signature = "(II)Ldh;" ) public final Model copy$getModel(int var1, int var2) { if(this.countobj != null && var1 > 1) { int var3 = -1; for(int var4 = 0; var4 < 10; ++var4) { if(var1 >= this.countco[var4] && this.countco[var4] != 0) { var3 = this.countobj[var4]; } } if(var3 != -1) { return Occluder.getItemDefinition(var3).method4575(1, 1336448754); } } Model var6 = (Model)ItemDefinition_cachedModels.method3032((long)this.id); if(var6 != null) { return var6; } else { ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0); if(var7 == null) { return null; } else { if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) { var7.method2773(this.resizeX, this.resizeY, this.resizeZ); } int var5; if(this.recolorFrom != null) { for(var5 = 0; var5 < this.recolorFrom.length; ++var5) { var7.method2770(this.recolorFrom[var5], this.recolorTo[var5]); } } if(this.retextureFrom != null) { for(var5 = 0; var5 < this.retextureFrom.length; ++var5) { var7.method2831(this.retextureFrom[var5], this.retextureTo[var5]); } } var6 = var7.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50); var6.isSingleTile = true; ItemDefinition_cachedModels.method3034(var6, (long)this.id); return var6; } } } private void rl$$init() { this.shiftClickActionIndex = -2; this.modelOverride = -1; } public void setModelOverride(int var1) { this.modelOverride = var1; } public boolean isStackable() { return this.getIsStackable() != 0; } public void setShiftClickActionIndex(int var1) { this.shiftClickActionIndex = var1; } public void resetShiftClickActionIndex() { this.shiftClickActionIndex = -2; } public int getId() { return this.id; } public void setName(String var1) { this.name = var1; } public String getName() { return this.name; } public int getPrice() { return this.price; } public boolean isMembers() { return this.isMembersOnly; } public String[] getInventoryActions() { return this.inventoryActions; } public int getMaleModel() { return this.maleModel; } public int getLinkedNoteId() { return this.note; } public int getNote() { return this.noteTemplate; } public void setTradeable(boolean var1) { this.isTradable = var1; } public boolean isTradeable() { return this.isTradable; } public int getPlaceholderId() { return this.placeholder; } public int getPlaceholderTemplateId() { return this.placeholderTemplate; } public RSModel getModel(int var1) { return this.method4575(var1, 1336448754); } public int getShiftClickActionIndex() { return this.method4543(-1424068644); } @ObfuscatedName("e") @ObfuscatedSignature( signature = "(ZB)Ldw;", garbageValue = "22" ) public final ModelData method4538(boolean var1) { int var2 = this.maleModel; int var3 = this.maleModel1; int var4 = this.maleModel2; if(var1) { var2 = this.femaleModel; var3 = this.femaleModel1; var4 = this.femaleModel2; } if(var2 == -1) { return null; } else { ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0); if(var3 != -1) { ModelData var6 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0); if(var4 != -1) { ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, var4, 0); ModelData[] var8 = new ModelData[]{var5, var6, var7}; var5 = new ModelData(var8, 3); } else { ModelData[] var10 = new ModelData[]{var5, var6}; var5 = new ModelData(var10, 2); } } if(!var1 && this.maleOffset != 0) { var5.method2784(0, this.maleOffset, 0); } if(var1 && this.femaleOffset != 0) { var5.method2784(0, this.femaleOffset, 0); } int var9; if(this.recolorFrom != null) { for(var9 = 0; var9 < this.recolorFrom.length; ++var9) { var5.method2770(this.recolorFrom[var9], this.recolorTo[var9]); } } if(this.retextureFrom != null) { for(var9 = 0; var9 < this.retextureFrom.length; ++var9) { var5.method2831(this.retextureFrom[var9], this.retextureTo[var9]); } } return var5; } } @ObfuscatedName("f") @ObfuscatedSignature( signature = "(ILjava/lang/String;I)Ljava/lang/String;", garbageValue = "570180688" ) public String getParam(int index, String defaultString) { return class94.method2216(this.params, index, defaultString); } @ObfuscatedName("h") @ObfuscatedSignature( signature = "(ZI)Ldw;", garbageValue = "1830989293" ) public final ModelData method4540(boolean var1) { int var2 = this.maleHeadModel; int var3 = this.maleHeadModel2; if(var1) { var2 = this.femaleHeadModel; var3 = this.femaleHeadModel2; } if(var2 == -1) { return null; } else { ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0); if(var3 != -1) { ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0); ModelData[] var6 = new ModelData[]{var4, var5}; var4 = new ModelData(var6, 2); } int var7; if(this.recolorFrom != null) { for(var7 = 0; var7 < this.recolorFrom.length; ++var7) { var4.method2770(this.recolorFrom[var7], this.recolorTo[var7]); } } if(this.retextureFrom != null) { for(var7 = 0; var7 < this.retextureFrom.length; ++var7) { var4.method2831(this.retextureFrom[var7], this.retextureTo[var7]); } } return var4; } } @ObfuscatedName("i") @ObfuscatedSignature( signature = "(II)Ldh;" ) public final Model method4575(int var1, int var2) { return this.modelOverride == -1?(Model)this.copy$getModel(var1, var2):(Model)ViewportMouse.client.getItemDefinition(this.modelOverride).getModel(var1); } @ObfuscatedName("j") public int method4543(int var1) { return this.shiftClickActionIndex == -2?this.copy$getShiftClickIndex(var1):this.shiftClickActionIndex; } @ObfuscatedName("m") @ObfuscatedSignature( signature = "(Lit;Lit;I)V", garbageValue = "-2143595462" ) void method4533(ItemDefinition var1, ItemDefinition var2) { this.model = var1.model; this.zoom2d = var1.zoom2d; this.xan2d = var1.xan2d; this.yan2d = var1.yan2d; this.zan2d = var1.zan2d; this.offsetX2d = var1.offsetX2d; this.offsetY2d = var1.offsetY2d; this.recolorFrom = var1.recolorFrom; this.recolorTo = var1.recolorTo; this.retextureFrom = var1.retextureFrom; this.retextureTo = var1.retextureTo; this.isStackable = var1.isStackable; this.name = var2.name; this.price = 0; this.isMembersOnly = false; this.isTradable = false; } @ObfuscatedName("v") @ObfuscatedSignature( signature = "(B)Lbl;", garbageValue = "66" ) static ClientPreferences method4600() { AccessFile var0 = null; ClientPreferences var1 = new ClientPreferences(); try { var0 = class202.method3853("", class10.field66.name, false); byte[] var2 = new byte[(int)var0.method5()]; int var4; for(int var3 = 0; var3 < var2.length; var3 += var4) { var4 = var0.method6(var2, var3, var2.length - var3); if(var4 == -1) { throw new IOException(); } } var1 = new ClientPreferences(new Buffer(var2)); } catch (Exception var6) { ; } try { if(var0 != null) { var0.method18(); } } catch (Exception var5) { ; } return var1; } public void postDecode() { if(id == 2742) { name = "Coin Casket (small)"; inventoryActions[1] = null; } if(id == 2744) { name = "Coin Casket (medium)"; inventoryActions[1] = null; } if(id == 2746) { name = "Coin Casket (large)"; inventoryActions[1] = null; } if(id == 2748) { name = "Coin Casket (giant)"; inventoryActions[1] = null; } if (id == 3455 || id == 3457 || id == 3458) { name = "Clue key"; inventoryActions[3] = "Check-Hint"; } if(id == 13190) { //bond name = CustomMain.worldType.getName() + " Credit"; isStackable = 1; inventoryActions[0] = "Claim"; inventoryActions[2] = null; } if (id == 13302) { name = "PK Key"; } if(id == 6199) { inventoryActions[2] = "Gift"; } if(id == 290) { name = "Super Mystery Box"; inventoryActions[1] = "Open"; inventoryActions[2] = "Gift"; } if(id == 6828) { name = "Pet Mystery Box"; inventoryActions[1] = "Open"; inventoryActions[2] = "Gift"; } if(id == 6829) { name = "Voting Mystery Box"; inventoryActions[1] = "Open"; inventoryActions[2] = "Gift"; } if(id == 6831) { name = "3rd Age Mystery Box"; inventoryActions[1] = "Open"; inventoryActions[2] = "Gift"; } if(id == 1505) { name = "Obelisk destination scroll"; } if (id == 621) { name = "Tournament voucher"; } if(id == 4067) { name = "Vote ticket"; } if (id == 9477) { name = "Coinbox"; inventoryActions[0] = "Open"; isStackable = 0; } if (id == 3455 || id == 3457 || id == 3458) { inventoryActions[3] = "Check-Hint"; } if(id == 10834) { name = "Dice bag"; inventoryActions[0] = "Roll 4-sided"; inventoryActions[1] = "Roll 12-sided"; inventoryActions[2] = "Roll 100-sided"; } if (id == 1464) { name = "Vote Lottery Ticket"; isStackable = 0; } if(id == 6306) { name = "LMS Sticks"; isTradable = false; } if(id == 6806) { name = "Green Skin Scroll"; inventoryActions[0] = "Redeem"; } if(id == 6807) { name = "Blue Skin Scroll"; inventoryActions[0] = "Redeem"; } if(id == 6808) { name = "Purple Skin Scroll"; inventoryActions[0] = "Redeem"; } if(id == 19625) { name = "Home teleport"; } if(id == 8007) { inventoryActions[1] = null; } if(id >= 1567 && id <= 1572) name = "Overgrown cat"; /* Quick option for repairing all broken items */ if(name.endsWith("(broken)")) inventoryActions[0] = "Fix"; if(id == 11169) { name = CustomMain.worldType.getName() + " Herald"; inventoryActions[0] = "View-updates"; inventoryActions[1] = null; inventoryActions[4] = "Destroy"; } if(id == 12746 || (id >= 12748 && id <= 12756)) { inventoryActions[0] = "Info"; inventoryActions[1] = "Redeem"; } if (id == 2399) { name = "Deadman supply key"; } if(id == 21532) { name = "Blood Fragments"; } if(id == 607) { name = "Rare Drop Scroll"; inventoryActions[0] = "Activate"; } if(id == 608) { name = "Pet Drop Scroll"; inventoryActions[0] = "Activate"; } if(id == 6758) { name = "Bonus Exp Scroll"; inventoryActions[0] = "Activate"; } if(id == 2730) { name = "Wilderness Reward Box (small)"; inventoryActions[0] = "Open"; inventoryActions[1] = null; } if(id == 2732) { name = "Wilderness Reward Box (medium)"; inventoryActions[0] = "Open"; inventoryActions[1] = null; } if(id == 2734) { name = "Wilderness Reward Box (large)"; inventoryActions[0] = "Open"; inventoryActions[1] = null; } if(id == 2736) { name = "Wilderness Reward Box (giant)"; inventoryActions[0] = "Open"; inventoryActions[1] = null; } if (id == 13215) { ItemDefinition platinumTokenClone = Occluder.getItemDefinition(13204); price = platinumTokenClone.price; femaleModel1 = platinumTokenClone.femaleModel1; femaleOffset = platinumTokenClone.femaleOffset; inventoryActions = platinumTokenClone.inventoryActions; model = platinumTokenClone.model; maleModel = platinumTokenClone.maleModel; isMembersOnly = platinumTokenClone.isMembersOnly; name = "Bloody Token"; isStackable = platinumTokenClone.isStackable; xan2d = platinumTokenClone.xan2d; yan2d = platinumTokenClone.yan2d; offsetY2d = platinumTokenClone.offsetY2d; zoom2d = platinumTokenClone.zoom2d; offsetX2d = platinumTokenClone.offsetX2d; zan2d = platinumTokenClone.zan2d; recolorFrom = new short[]{5813, 9139, 26006}; recolorTo = new short[]{947, 948, 949}; countco = new int[]{2, 3, 4, 5, 0, 0, 0, 0, 0, 0}; countobj = new int[]{13216, 13217, 13218, 13218, 0, 0, 0, 0, 0, 0}; } if (id == 13216) { ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3985); price = platinumTokenClone.price; femaleModel1 = platinumTokenClone.femaleModel1; name = "Bloody Token"; femaleOffset = platinumTokenClone.femaleOffset; inventoryActions = platinumTokenClone.inventoryActions; model = platinumTokenClone.model; maleModel = platinumTokenClone.maleModel; isMembersOnly = platinumTokenClone.isMembersOnly; isStackable = platinumTokenClone.isStackable; xan2d = platinumTokenClone.xan2d; yan2d = platinumTokenClone.yan2d; offsetY2d = platinumTokenClone.offsetY2d; zoom2d = platinumTokenClone.zoom2d; offsetX2d = platinumTokenClone.offsetX2d; zan2d = platinumTokenClone.zan2d; recolorFrom = new short[]{5813, 9139, 26006}; recolorTo = new short[]{947, 948, 949}; } if (id == 13217) { ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3987); price = platinumTokenClone.price; femaleModel1 = platinumTokenClone.femaleModel1; name = "Bloody Token"; femaleOffset = platinumTokenClone.femaleOffset; inventoryActions = platinumTokenClone.inventoryActions; model = platinumTokenClone.model; maleModel = platinumTokenClone.maleModel; isMembersOnly = platinumTokenClone.isMembersOnly; isStackable = platinumTokenClone.isStackable; xan2d = platinumTokenClone.xan2d; yan2d = platinumTokenClone.yan2d; offsetY2d = platinumTokenClone.offsetY2d; zoom2d = platinumTokenClone.zoom2d; offsetX2d = platinumTokenClone.offsetX2d; zan2d = platinumTokenClone.zan2d; recolorFrom = new short[]{5813, 9139, 26006}; recolorTo = new short[]{947, 948, 949}; } if (id == 13218) { ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3989); price = platinumTokenClone.price; femaleModel1 = platinumTokenClone.femaleModel1; femaleOffset = platinumTokenClone.femaleOffset; name = "Bloody Token"; inventoryActions = platinumTokenClone.inventoryActions; model = platinumTokenClone.model; maleModel = platinumTokenClone.maleModel; isMembersOnly = platinumTokenClone.isMembersOnly; isStackable = platinumTokenClone.isStackable; xan2d = platinumTokenClone.xan2d; yan2d = platinumTokenClone.yan2d; offsetY2d = platinumTokenClone.offsetY2d; zoom2d = platinumTokenClone.zoom2d; offsetX2d = platinumTokenClone.offsetX2d; zan2d = platinumTokenClone.zan2d; recolorFrom = new short[]{5813, 9139, 26006}; recolorTo = new short[]{947, 948, 949}; } if(id == 22330) { name = "PVP Armour Mystery Box"; inventoryActions[0] = "Open"; inventoryActions[1] = "Gift"; inventoryActions[2] = null; inventoryActions[3] = null; } if (id == 3606 || id == 3608 || id == 7297) { ItemDefinition bloodyKey = Occluder.getItemDefinition(20526); switch (id) { case 3606: name = "Bloody key (easy)"; break; case 3608: name = "Bloody key (medium)"; break; case 7297: name = "Bloody key (hard)"; break; } model = bloodyKey.model; xan2d = bloodyKey.xan2d; offsetY2d = bloodyKey.offsetY2d; yan2d = bloodyKey.yan2d; offsetX2d = bloodyKey.offsetX2d; zoom2d = bloodyKey.zoom2d; } if(id == 22521 || id == 22522 || id == 22523 || id == 22524) { String size = ""; if(id == 22521) size = "(small)"; else if(id == 22522) size = "(medium)"; else if(id == 22523) size = "(large)"; else if(id == 22524) size = "(giant)"; name = "Blood money pouch " + size; recolorFrom = new short[]{6798}; recolorTo = new short[]{948}; } if(id == 2528) { name = "Skill Lamp"; } if(id == 11918) { name = "Santa Outfit Box"; inventoryActions[0] = "Open"; } if(id == 12897) { name = "Anti-Santa Outfit Box"; inventoryActions[0] = "Open"; } if(id == 22816 || id == 22817) { inventoryActions[4] = "Destroy"; } if(id == 21227) { name = "Easter Egg"; inventoryActions[0] = "Open"; } if (id == 8943 || id == 8944 || id == 8945 || id == 8946 || id == 8947 || id == 8948) { ItemDefinition bloodyKey = Occluder.getItemDefinition(20526); switch (id) { case 8943: name = "Wilderness key (1M OSRS)"; break; case 8944: name = "Wilderness key (5M OSRS)"; break; case 8945: name = "Wilderness key (10M OSRS)"; break; case 8946: name = "Wilderness key (25M OSRS)"; break; case 8947: name = "Wilderness key (50M OSRS)"; break; case 8948: name = "Wilderness key (100M OSRS)"; break; } inventoryActions[0] = "Information"; inventoryActions[3] = null; inventoryActions[4] = "Destroy"; model = bloodyKey.model; xan2d = bloodyKey.xan2d; offsetY2d = bloodyKey.offsetY2d; yan2d = bloodyKey.yan2d; offsetX2d = bloodyKey.offsetX2d; zoom2d = bloodyKey.zoom2d; } } }
Code:package net.runelite.standalone; import net.runelite.api.HeadIcon; import net.runelite.api.events.NpcActionChanged; import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; import net.runelite.rs.api.RSNPCDefinition; import net.runelite.rs.api.RSSprite; @ObfuscatedName("il") public class NPCDefinition extends DualNode implements RSNPCDefinition { @ObfuscatedName("n") @ObfuscatedSignature( signature = "Lhp;" ) public static AbstractArchive NpcDefinition_modelArchive; @ObfuscatedName("u") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable NpcDefinition_cachedModels; @ObfuscatedName("v") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable NpcDefinition_cached; @ObfuscatedName("z") @ObfuscatedSignature( signature = "Lhp;" ) public static AbstractArchive NpcDefinition_archive; @ObfuscatedName("o") @ObfuscatedGetter( intValue = 1951589919 ) public int walkingAnimation; @ObfuscatedName("p") public String name; @ObfuscatedName("q") @ObfuscatedGetter( intValue = -441203939 ) public int size; @ObfuscatedName("r") @ObfuscatedGetter( intValue = 795033679 ) public int id; @ObfuscatedName("s") public String[] actions; @ObfuscatedName("t") short[] colors; @ObfuscatedName("w") @ObfuscatedGetter( intValue = -2041030831 ) public int walkRightSequence; @ObfuscatedName("x") short[] retextureFrom; @ObfuscatedName("y") int[] additionalModels; @ObfuscatedName("a") @ObfuscatedGetter( intValue = 1113665339 ) public int walkBackSequence; @ObfuscatedName("aa") @ObfuscatedGetter( intValue = 950956241 ) public int rotation; @ObfuscatedName("ab") @ObfuscatedGetter( intValue = -313433817 ) int transformVarp; @ObfuscatedName("ac") @ObfuscatedGetter( intValue = 1963706097 ) int ambient; @ObfuscatedName("al") @ObfuscatedSignature( signature = "Llb;" ) IterableNodeHashTable params; @ObfuscatedName("ao") public boolean isFollower; @ObfuscatedName("ap") public int[] transforms; @ObfuscatedName("ar") @ObfuscatedGetter( intValue = 1759904707 ) int transformVarbit; @ObfuscatedName("as") public boolean isClickable; @ObfuscatedName("aw") @ObfuscatedGetter( intValue = 246799047 ) public int headIconPrayer; @ObfuscatedName("ax") public boolean isInteractable; @ObfuscatedName("az") @ObfuscatedGetter( intValue = -1785698549 ) int contrast; @ObfuscatedName("b") @ObfuscatedGetter( intValue = -394985883 ) public int turnRightSequence; @ObfuscatedName("c") @ObfuscatedGetter( intValue = -1669190657 ) public int turnLeftSequence; @ObfuscatedName("d") @ObfuscatedGetter( intValue = 758770497 ) int widthScale; @ObfuscatedName("e") @ObfuscatedGetter( intValue = -1204590857 ) public int walkLeftSequence; @ObfuscatedName("f") public boolean drawMapDot; @ObfuscatedName("g") short[] modifiedColors; @ObfuscatedName("h") short[] retextureTo; @ObfuscatedName("i") @ObfuscatedGetter( intValue = -182220755 ) public int standingAnimation; @ObfuscatedName("j") @ObfuscatedGetter( intValue = 1360683279 ) public int combatLevel; @ObfuscatedName("k") public boolean isVisible; @ObfuscatedName("l") @ObfuscatedGetter( intValue = -1757828027 ) int heightScale; @ObfuscatedName("m") int[] models; static { NpcDefinition_cached = new EvictingDualNodeHashTable(64); NpcDefinition_cachedModels = new EvictingDualNodeHashTable(50); } NPCDefinition() { this.name = "null"; this.size = 1; this.standingAnimation = -1; this.turnLeftSequence = -1; this.turnRightSequence = -1; this.walkingAnimation = -1; this.walkBackSequence = -1; this.walkLeftSequence = -1; this.walkRightSequence = -1; this.actions = new String[5]; this.actionsHook(-1); this.drawMapDot = true; this.combatLevel = -1; this.widthScale = 128; this.heightScale = 128; this.isVisible = false; this.ambient = 0; this.contrast = 0; this.headIconPrayer = -1; this.rotation = 32; this.transformVarbit = -1; this.transformVarp = -1; this.isInteractable = true; this.isClickable = true; this.isFollower = false; } @ObfuscatedName("n") @ObfuscatedSignature( signature = "(B)V", garbageValue = "-117" ) void method4402() { } @ObfuscatedName("p") @ObfuscatedSignature( signature = "(B)Ldw;", garbageValue = "58" ) public final ModelData method4406() { if(this.transforms != null) { NPCDefinition var1 = this.method4407(); return var1 == null?null:var1.method4406(); } else if(this.additionalModels == null) { return null; } else { boolean var5 = false; for(int var2 = 0; var2 < this.additionalModels.length; ++var2) { if(!NpcDefinition_modelArchive.method4024(this.additionalModels[var2], 0)) { var5 = true; } } if(var5) { return null; } else { ModelData[] var6 = new ModelData[this.additionalModels.length]; for(int var3 = 0; var3 < this.additionalModels.length; ++var3) { var6[var3] = ModelData.method2823(NpcDefinition_modelArchive, this.additionalModels[var3], 0); } ModelData var7; if(var6.length == 1) { var7 = var6[0]; } else { var7 = new ModelData(var6, var6.length); } int var4; if(this.colors != null) { for(var4 = 0; var4 < this.colors.length; ++var4) { var7.method2770(this.colors[var4], this.modifiedColors[var4]); } } if(this.retextureFrom != null) { for(var4 = 0; var4 < this.retextureFrom.length; ++var4) { var7.method2831(this.retextureFrom[var4], this.retextureTo[var4]); } } return var7; } } } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(I)Lil;", garbageValue = "1423511184" ) public final NPCDefinition method4407() { int var1 = -1; if(this.transformVarbit != -1) { var1 = WorldMapSprite.method782(this.transformVarbit); } else if(this.transformVarp != -1) { var1 = Varps.Varps_main[this.transformVarp]; } int var2; if(var1 >= 0 && var1 < this.transforms.length - 1) { var2 = this.transforms[var1]; } else { var2 = this.transforms[this.transforms.length - 1]; } return var2 != -1?PacketBufferNode.getNpcDefinition(var2):null; } @ObfuscatedName("r") @ObfuscatedSignature( signature = "(Lix;ILix;IS)Ldh;", garbageValue = "-1424" ) public final Model method4405(SequenceDefinition var1, int var2, SequenceDefinition var3, int var4) { if(this.transforms != null) { NPCDefinition var12 = this.method4407(); return var12 == null?null:var12.method4405(var1, var2, var3, var4); } else { Model var5 = (Model)NpcDefinition_cachedModels.method3032((long)this.id); if(var5 == null) { boolean var6 = false; for(int var7 = 0; var7 < this.models.length; ++var7) { if(!NpcDefinition_modelArchive.method4024(this.models[var7], 0)) { var6 = true; } } if(var6) { return null; } ModelData[] var8 = new ModelData[this.models.length]; int var9; for(var9 = 0; var9 < this.models.length; ++var9) { var8[var9] = ModelData.method2823(NpcDefinition_modelArchive, this.models[var9], 0); } ModelData var11; if(var8.length == 1) { var11 = var8[0]; } else { var11 = new ModelData(var8, var8.length); } if(this.colors != null) { for(var9 = 0; var9 < this.colors.length; ++var9) { var11.method2770(this.colors[var9], this.modifiedColors[var9]); } } if(this.retextureFrom != null) { for(var9 = 0; var9 < this.retextureFrom.length; ++var9) { var11.method2831(this.retextureFrom[var9], this.retextureTo[var9]); } } var5 = var11.method2778(this.ambient + 64, this.contrast + 850, -30, -50, -30); NpcDefinition_cachedModels.method3034(var5, (long)this.id); } Model var10; if(var1 != null && var3 != null) { var10 = var1.method4660(var5, var2, var3, var4, (byte)-35); } else if(var1 != null) { var10 = var1.method4661(var5, var2, 338377454); } else if(var3 != null) { var10 = var3.method4661(var5, var4, 805280683); } else { var10 = var5.method2355(true); } if(this.widthScale != 128 || this.heightScale != 128) { var10.method2402(this.widthScale, this.heightScale, this.widthScale); } return var10; } } @ObfuscatedName("u") @ObfuscatedSignature( signature = "(Lkl;II)V", garbageValue = "-1943278683" ) void method4424(Buffer var1, int var2) { int var3; int var4; if(var2 == 1) { var3 = var1.readUnsignedByte(); this.models = new int[var3]; for(var4 = 0; var4 < var3; ++var4) { this.models[var4] = var1.readUnsignedShort(); } } else if(var2 == 2) { this.name = var1.readString(); } else if(var2 == 12) { this.size = var1.readUnsignedByte(); } else if(var2 == 13) { this.standingAnimation = var1.readUnsignedShort(); } else if(var2 == 14) { this.walkingAnimation = var1.readUnsignedShort(); } else if(var2 == 15) { this.turnLeftSequence = var1.readUnsignedShort(); } else if(var2 == 16) { this.turnRightSequence = var1.readUnsignedShort(); } else if(var2 == 17) { this.walkingAnimation = var1.readUnsignedShort(); this.walkBackSequence = var1.readUnsignedShort(); this.walkLeftSequence = var1.readUnsignedShort(); this.walkRightSequence = var1.readUnsignedShort(); } else if(var2 == 18) { var1.readUnsignedShort(); } else if(var2 >= 30 && var2 < 35) { this.actions[var2 - 30] = var1.readString(); this.actionsHook(var2 - 30); if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) { this.actions[var2 - 30] = null; this.actionsHook(var2 - 30); } } else if(var2 == 40) { var3 = var1.readUnsignedByte(); this.colors = new short[var3]; this.modifiedColors = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.colors[var4] = (short)var1.readUnsignedShort(); this.modifiedColors[var4] = (short)var1.readUnsignedShort(); } } else if(var2 == 41) { var3 = var1.readUnsignedByte(); this.retextureFrom = new short[var3]; this.retextureTo = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.retextureFrom[var4] = (short)var1.readUnsignedShort(); this.retextureTo[var4] = (short)var1.readUnsignedShort(); } } else if(var2 == 60) { var3 = var1.readUnsignedByte(); this.additionalModels = new int[var3]; for(var4 = 0; var4 < var3; ++var4) { this.additionalModels[var4] = var1.readUnsignedShort(); } } else if(var2 == 93) { this.drawMapDot = false; } else if(var2 == 95) { this.combatLevel = var1.readUnsignedShort(); } else if(var2 == 97) { this.widthScale = var1.readUnsignedShort(); } else if(var2 == 98) { this.heightScale = var1.readUnsignedShort(); } else if(var2 == 99) { this.isVisible = true; } else if(var2 == 100) { this.ambient = var1.readByte(); } else if(var2 == 101) { this.contrast = var1.readByte() * 5; } else if(var2 == 102) { this.headIconPrayer = var1.readUnsignedShort(); } else if(var2 == 103) { this.rotation = var1.readUnsignedShort(); } else if(var2 != 106 && var2 != 118) { if(var2 == 107) { this.isInteractable = false; } else if(var2 == 109) { this.isClickable = false; } else if(var2 == 111) { this.isFollower = true; } else if(var2 == 249) { this.params = UserComparator5.method3374(var1, this.params); } } else { this.transformVarbit = var1.readUnsignedShort(); if(this.transformVarbit == 65535) { this.transformVarbit = -1; } this.transformVarp = var1.readUnsignedShort(); if(this.transformVarp == 65535) { this.transformVarp = -1; } var3 = -1; if(var2 == 118) { var3 = var1.readUnsignedShort(); if(var3 == 65535) { var3 = -1; } } var4 = var1.readUnsignedByte(); this.transforms = new int[var4 + 2]; for(int var5 = 0; var5 <= var4; ++var5) { this.transforms[var5] = var1.readUnsignedShort(); if(this.transforms[var5] == 65535) { this.transforms[var5] = -1; } } this.transforms[var4 + 1] = var3; } } @ObfuscatedName("v") @ObfuscatedSignature( signature = "(Lkl;B)V", garbageValue = "-41" ) void method4429(Buffer var1) { while(true) { int var2 = var1.readUnsignedByte(); if(var2 == 0) { return; } this.method4424(var1, var2); } } @ObfuscatedName("y") @ObfuscatedSignature( signature = "(III)I", garbageValue = "-1804168798" ) public int method4409(int var1, int var2) { return HealthBar.getParam(this.params, var1, var2); } public int getRsOverheadIcon() { return this.headIconPrayer; } public void actionsHook(int var1) { NpcActionChanged var2 = new NpcActionChanged(); var2.setNpcDefinition(this); var2.setIdx(var1); ViewportMouse.client.getCallbacks().post(NpcActionChanged.class, var2); } public HeadIcon getOverheadIcon() { switch(this.getRsOverheadIcon()) { case 0: return HeadIcon.MELEE; case 1: return HeadIcon.RANGED; case 2: return HeadIcon.MAGIC; case 3: case 4: case 5: default: return null; case 6: return HeadIcon.RANGE_MAGE; } } public int getId() { return this.id; } public String getName() { return this.name; } public int getSize() { return this.size; } public int[] getModels() { return this.models; } public String[] getActions() { return this.actions; } public boolean isMinimapVisible() { return this.drawMapDot; } public int getCombatLevel() { return this.combatLevel; } public boolean isVisible() { return this.isVisible; } public int[] getConfigs() { return this.transforms; } public boolean isClickable() { return this.isClickable; } public RSNPCDefinition transform() { return this.method4407(); } @ObfuscatedName("i") @ObfuscatedSignature( signature = "(ILjava/lang/String;I)Ljava/lang/String;", garbageValue = "-1270482233" ) public String method4410(int var1, String var2) { return class94.method2216(this.params, var1, var2); } @ObfuscatedName("m") @ObfuscatedSignature( signature = "(B)Z", garbageValue = "-43" ) public boolean method4408() { if(this.transforms == null) { return true; } else { int var1 = -1; if(this.transformVarbit != -1) { var1 = WorldMapSprite.method782(this.transformVarbit); } else if(this.transformVarp != -1) { var1 = Varps.Varps_main[this.transformVarp]; } return var1 >= 0 && var1 < this.transforms.length?this.transforms[var1] != -1:this.transforms[this.transforms.length - 1] != -1; } } @ObfuscatedName("v") @ObfuscatedSignature( signature = "(Lhp;III)Llf;" ) public static Sprite method4417(AbstractArchive var0, int var1, int var2, int var3) { net.runelite.api.Sprite var4 = (net.runelite.api.Sprite)Client.spriteOverrides.get(Integer.valueOf(var1)); return var4 != null?(Sprite)((RSSprite)var4):(Sprite)Client.copy$SpriteBuffer_getSprite(var0, var1, var2, var3); } @ObfuscatedName("gr") @ObfuscatedSignature( signature = "(IIIIIIII)V", garbageValue = "474931921" ) static final void method4403(int var0, int var1, int var2, int var3, int var4, int var5, int var6) { int var8 = var6 - 334; if(var8 < 0) { var8 = 0; } else if(var8 > 100) { var8 = 100; } int var9 = (Client.zoomWidth - Client.zoomHeight) * var8 / 100 + Client.zoomHeight; int var7 = var5 * var9 / 256; var8 = 2048 - var3 & 2047; var9 = 2048 - var4 & 2047; int var10 = 0; int var11 = 0; int var12 = var7; int var13; int var14; int var15; if(var8 != 0) { var13 = Rasterizer3D.Rasterizer3D_sine[var8]; var14 = Rasterizer3D.Rasterizer3D_cosine[var8]; var15 = var11 * var14 - var7 * var13 >> 16; var12 = var14 * var7 + var13 * var11 >> 16; var11 = var15; } if(var9 != 0) { var13 = Rasterizer3D.Rasterizer3D_sine[var9]; var14 = Rasterizer3D.Rasterizer3D_cosine[var9]; var15 = var10 * var14 + var13 * var12 >> 16; var12 = var12 * var14 - var10 * var13 >> 16; var10 = var15; } GrandExchangeOfferOwnWorldComparator.cameraX = var0 - var10; Varcs.cameraY = var1 - var11; WorldMapIcon_1.cameraZ = var2 - var12; IgnoreList.cameraPitch = var3; Client.onCameraPitchChanged(-1); WorldMapSection2.cameraYaw = var4; if(Client.oculusOrbState == 1 && Client.staffModLevel >= 2 && Client.cycle % 50 == 0 && (ObjectSound.oculusOrbFocalPointX >> 7 != class215.localPlayer.x >> 7 || class125.oculusOrbFocalPointY >> 7 != class215.localPlayer.y * 682054857 >> 7)) { var13 = class215.localPlayer.plane; var14 = (ObjectSound.oculusOrbFocalPointX >> 7) + class215.baseX; var15 = (class125.oculusOrbFocalPointY >> 7) + class304.baseY; class298.method5476(var14, var15, var13, true); } } void postDecode() { if (id == 5527) { /* Twiggy O'Korn */ actions[2] = "Rewards"; } else if (id == 315) { actions[0] = "Talk-to"; actions[1] = "Set-skull"; actions[2] = "Reset-kdr"; actions[3] = null; actions[4] = null; } else if(id == 5567) { name = "Blood Money Shop"; actions[0] = "Melee"; actions[1] = "Magic"; actions[2] = "Ranged"; } else if (id == 1815) { name = "Vote Manager"; actions[0] = "Trade"; actions[2] = "Cast-votes"; actions[3] = "Claim-votes"; actions[4] = "Lottery-info"; } else if (id == 2108) { name = "Credit Manager"; actions[0] = "Open-Shop"; actions[2] = "Claim-purchases"; } else if (id == 306) { name = CustomMain.worldType.getName() + " Expert"; actions[0] = "Talk-to"; actions[2] = "View-help"; actions[3] = "View-guide"; actions[4] = "Task-rewards"; } else if (id == 5442) { name = "Security Advisor"; actions[2] = "Check Pin Settings"; actions[3] = "Check 2FA Settings"; } else if (id == 535) { /* Horvik */ actions[0] = "Repair-items"; actions[2] = "Upgrade-items"; } else if (id == 3894) { /* Sigmund the Merchant */ actions[0] = "Buy-items"; actions[2] = "Sell-items"; actions[3] = "Sets"; actions[4] = null; } else if (id == 2883) { /* Donator Range Shop */ name = "Donator Range Shop"; actions[0] = "Trade"; actions[2] = null; actions[3] = null; actions[4] = null; } else if (id == 5523) { /* Gambling man */ name = CustomMain.worldType.getName() + " Gambler"; actions[0] = null; actions[2] = "Trade"; } else if (id == 4398) { /* ECO Wizard */ name = CustomMain.worldType.getName() + " Wizard"; actions[0] = "Teleport"; actions[2] = "Teleport-previous"; } else if (id == 4159) { /* PVP Wizard */ name = CustomMain.worldType.getName() + " Wizard"; actions[0] = "Teleport"; actions[2] = "Teleport-previous"; } else if (id == 2462) { /* Shanomi */ actions[2] = "Trade"; } else if (id == 3343) { name = CustomMain.worldType.getName() + " Nurse"; } else if (id == 1603) { /* Kolodion */ name = "Battle Point Exchange"; actions[2] = "Trade"; actions[3] = "Check-points"; } else if (id == 3278) { name = "Construction Worker"; } else if(id == 3189) { name = "Trade Manager"; actions[0] = null; actions[1] = "Exchange"; actions[2] = "Coffer"; actions[3] = "Guide"; } else if (id == 1307) { actions[0] = "Change-looks"; actions[2] = "Skin-unlocks"; actions[3] = "Title-unlocks"; actions[4] = null; } else if (id == 4225) { name = "Shop"; actions[0] = "Untradeable"; } else if (id == 1199) { name = "Shop"; actions[0] = "Consumable"; } else if (id == 5081) { name = "Shop"; actions[0] = "Magic"; } else if (id == 2153) { name = "Shop"; actions[0] = "Melee"; } else if (id == 4579) { name = "Shop"; actions[0] = "Misc"; } else if (id == 2668) { name = "Max hit dummy"; actions[2] = null; actions[3] = null; actions[4] = null; } else if (id == 6118) { name = "Elvarg"; combatLevel = 280; } else if (id == 3358) { name = "Ket'ian"; combatLevel = 420; widthScale *= 2; heightScale *= 2; size = 2; } else if (id == 3329) { name = "Sapphires Champion"; combatLevel = 600; widthScale *= 2; heightScale *= 2; size = 2; } else if (id == 5906) { actions[2] = null; } else if ("Pick-up".equals(actions[0]) && "Talk-to".equals(actions[2]) && "Chase".equals(actions[3]) && "Interact".equals(actions[4])) { actions[3] = "Age"; actions[4] = null; } else if (id == 1849) { name = "Loyalty Fairy"; actions[0] = "About"; } else if (id == 7759) { actions[0] = actions[2] = null; } else if (id == 7316) { name = "Tournament Manager"; actions[0] = "Sign-up"; actions[1] = "Rewards"; } else if (id == 7941) { actions[2] = actions[3] = actions[4] = null; } else if (id == 3080) { // man at home. remove attack option so people can't be assholes to newbies that are just starting out actions[1] = null; combatLevel = 0; } else if (id == 307) { // second guide npc (with no options); originally dr jekyll name = CustomMain.worldType.getName() + " Expert"; actions[0] = null; actions[4] = null; models = new int[]{214, 250, 5674, 5668, 5672, 7127, 7123}; additionalModels = new int[]{52, 82}; colors = new short[]{6466, 5541, 6457, 8844, 6798}; modifiedColors = new short[]{127, -24254, 127, 6478, -11139}; standingAnimation = 813; walkingAnimation = 1205; } else if(id == 311) { name = "Ironman"; actions[1] = "Open-shop"; actions[2] = null; } else if(id == 7951) { name = "PvP Event Manager"; actions[0] = "Join-event"; actions[1] = "Create-event"; } else if(id == 8009) { actions[3] = "Metamorphosis"; } else if(id == 8507) { name = "Bloody Merchant"; actions[0] = "Trade"; } else if(id == 7297) { // Skotizo (For eco world) // Replaces Mistag copy(7286); } else if(id == 8407) { actions[1] = "View Trading Post"; } else if(id == 6002) { name = CustomMain.worldType.getName() + " Caretaker"; actions[0] = "Trade"; } else if(id == 8500) { name = "Old man"; actions[1] = "Trade"; } else if (id == 7411) { name = "Exodia the Forbidden one"; } else if(id == 7412) { //Nechryarch Melee copy(7411); headIconPrayer = 0; name = "Exodia the Forbidden one"; } else if(id == 7414) { //Nechryarch Range copy(7411); headIconPrayer = 1; name = "Exodia the Forbidden one"; } else if(id == 7415) { //Nechryarch Mage copy(7411); headIconPrayer = 2; name = "Exodia the Forbidden one"; } else if(id == 8300) { //Ranalph Devere Melee copy(3966); headIconPrayer = 0; } else if(id == 8301) { //Ranalph Devere Range copy(3966); headIconPrayer = 1; } else if(id == 8302) { //Ranalph Devere Mage copy(3966); headIconPrayer = 2; } else if (id == 7317) { actions[3] = "Trade"; } } void copy(int otherId) { NPCDefinition otherDef = PacketBufferNode.getNpcDefinition(otherId); drawMapDot = otherDef.drawMapDot; standingAnimation = otherDef.standingAnimation; size = otherDef.size; walkBackSequence = otherDef.walkBackSequence; name = otherDef.name; turnLeftSequence = otherDef.turnLeftSequence; turnRightSequence = otherDef.turnRightSequence; walkingAnimation = otherDef.walkingAnimation; walkRightSequence = otherDef.walkRightSequence; walkLeftSequence = otherDef.walkLeftSequence; isFollower = otherDef.isFollower; actions = otherDef.actions == null ? null : otherDef.actions.clone(); combatLevel = otherDef.combatLevel; isVisible = otherDef.isVisible; headIconPrayer = otherDef.headIconPrayer; rotation = otherDef.rotation; transforms = otherDef.transforms == null ? null : otherDef.transforms.clone(); isClickable = otherDef.isClickable; isInteractable = otherDef.isInteractable; retextureFrom = otherDef.retextureFrom == null ? null : otherDef.retextureFrom.clone(); retextureTo = otherDef.retextureTo == null ? null : otherDef.retextureTo.clone(); transformVarp = otherDef.transformVarp; models = otherDef.models; colors = otherDef.colors == null ? null : otherDef.colors.clone(); additionalModels = otherDef.additionalModels == null ? null : otherDef.additionalModels.clone(); transformVarbit = otherDef.transformVarbit; modifiedColors = otherDef.modifiedColors == null ? null : otherDef.modifiedColors.clone(); widthScale = otherDef.widthScale; heightScale = otherDef.heightScale; ambient = otherDef.ambient; contrast = otherDef.contrast; } }
Code:package net.runelite.standalone; import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; import net.runelite.rs.api.RSObjectDefinition; @ObfuscatedName("iz") public class ObjectDefinition extends DualNode implements RSObjectDefinition { @ObfuscatedName("n") @ObfuscatedSignature( signature = "Lhp;" ) public static AbstractArchive ObjectDefinition_archive; @ObfuscatedName("p") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable ObjectDefinition_cachedEntities; @ObfuscatedName("q") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable ObjectDefinition_cachedModels; @ObfuscatedName("r") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable ObjectDefinition_cachedModelData; @ObfuscatedName("u") @ObfuscatedSignature( signature = "Lem;" ) public static EvictingDualNodeHashTable ObjectDefinition_cached; @ObfuscatedName("v") @ObfuscatedSignature( signature = "Lhp;" ) public static AbstractArchive ObjectDefinition_modelsArchive; @ObfuscatedName("z") public static boolean ObjectDefinition_isLowDetail; @ObfuscatedName("m") @ObfuscatedSignature( signature = "[Ldw;" ) static ModelData[] field3461; @ObfuscatedName("o") short[] recolorFrom; @ObfuscatedName("s") @ObfuscatedGetter( intValue = 2069443219 ) public int int1; @ObfuscatedName("t") @ObfuscatedGetter( intValue = -1768434003 ) public int sizeX; @ObfuscatedName("w") short[] retextureTo; @ObfuscatedName("x") @ObfuscatedGetter( intValue = 887491837 ) public int interactType; @ObfuscatedName("y") @ObfuscatedGetter( intValue = -10424721 ) public int id; @ObfuscatedName("a") short[] recolorTo; @ObfuscatedName("aa") @ObfuscatedGetter( intValue = 2127089139 ) public int mapIconId; @ObfuscatedName("ab") public boolean clipped; @ObfuscatedName("ac") @ObfuscatedGetter( intValue = -1443717983 ) int ambient; @ObfuscatedName("ad") @ObfuscatedGetter( intValue = 1528184415 ) int offsetHeight; @ObfuscatedName("ae") @ObfuscatedGetter( intValue = -702042991 ) int transformVarbit; @ObfuscatedName("af") @ObfuscatedSignature( signature = "Llb;" ) IterableNodeHashTable params; @ObfuscatedName("ag") @ObfuscatedGetter( intValue = -423945127 ) public int int4; @ObfuscatedName("ah") @ObfuscatedGetter( intValue = -214798847 ) public int ambientSoundId; @ObfuscatedName("ai") public boolean boolean2; @ObfuscatedName("aj") @ObfuscatedGetter( intValue = -1044165733 ) public int int5; @ObfuscatedName("ak") boolean isSolid; @ObfuscatedName("al") @ObfuscatedGetter( intValue = 771948197 ) int offsetX; @ObfuscatedName("am") public int[] transforms; @ObfuscatedName("an") @ObfuscatedGetter( intValue = 1216184101 ) int offsetY; @ObfuscatedName("ao") @ObfuscatedGetter( intValue = 1741322051 ) int modelSizeY; @ObfuscatedName("ap") @ObfuscatedGetter( intValue = 468378425 ) public int mapSceneId; @ObfuscatedName("aq") @ObfuscatedGetter( intValue = 1194600097 ) public int int3; @ObfuscatedName("ar") boolean isRotated; @ObfuscatedName("as") @ObfuscatedGetter( intValue = -570144093 ) int modelHeight; @ObfuscatedName("au") public int[] soundEffectIds; @ObfuscatedName("av") @ObfuscatedGetter( intValue = 884373055 ) int transformVarp; @ObfuscatedName("aw") public String[] actions; @ObfuscatedName("ax") @ObfuscatedGetter( intValue = -1167602213 ) int modelSizeX; @ObfuscatedName("ay") @ObfuscatedGetter( intValue = -1994867697 ) public int int6; @ObfuscatedName("az") @ObfuscatedGetter( intValue = -308737111 ) int contrast; @ObfuscatedName("b") public String name; @ObfuscatedName("c") int[] models; @ObfuscatedName("d") public boolean modelClipped; @ObfuscatedName("e") short[] retextureFrom; @ObfuscatedName("f") @ObfuscatedGetter( intValue = 1385916293 ) int clipType; @ObfuscatedName("g") @ObfuscatedGetter( intValue = -1471425107 ) public int sizeY; @ObfuscatedName("h") public boolean boolean1; @ObfuscatedName("i") int[] modelIds; @ObfuscatedName("j") boolean nonFlatShading; @ObfuscatedName("k") @ObfuscatedGetter( intValue = 1255987799 ) public int int2; @ObfuscatedName("l") @ObfuscatedGetter( intValue = -1077296785 ) public int animationId; static { ObjectDefinition_isLowDetail = false; ObjectDefinition_cached = new EvictingDualNodeHashTable(4096); ObjectDefinition_cachedModelData = new EvictingDualNodeHashTable(500); ObjectDefinition_cachedEntities = new EvictingDualNodeHashTable(30); ObjectDefinition_cachedModels = new EvictingDualNodeHashTable(30); field3461 = new ModelData[4]; } ObjectDefinition() { this.name = "null"; this.sizeX = 1; this.sizeY = 1; this.interactType = 2; this.boolean1 = true; this.int1 = -1; this.clipType = -1; this.nonFlatShading = false; this.modelClipped = false; this.animationId = -1; this.int2 = 16; this.ambient = 0; this.contrast = 0; this.actions = new String[5]; this.mapIconId = -1; this.mapSceneId = -1; this.isRotated = false; this.clipped = true; this.modelSizeX = 128; this.modelHeight = 128; this.modelSizeY = 128; this.offsetX = 0; this.offsetHeight = 0; this.offsetY = 0; this.boolean2 = false; this.isSolid = false; this.int3 = -1; this.transformVarbit = -1; this.transformVarp = -1; this.ambientSoundId = -1; this.int4 = 0; this.int5 = 0; this.int6 = 0; } @ObfuscatedName("n") @ObfuscatedSignature( signature = "(B)V", garbageValue = "52" ) void method4728() { if(this.int1 == -1) { this.int1 = 0; if(this.modelIds != null && (this.models == null || this.models[0] == 10)) { this.int1 = 1; } for(int var1 = 0; var1 < 5; ++var1) { if(this.actions[var1] != null) { this.int1 = 1; } } } if(this.int3 == -1) { this.int3 = this.interactType != 0?1:0; } } @ObfuscatedName("o") @ObfuscatedSignature( signature = "(ILjava/lang/String;B)Ljava/lang/String;", garbageValue = "-65" ) public String method4748(int var1, String var2) { return class94.method2216(this.params, var1, var2); } @ObfuscatedName("p") @ObfuscatedSignature( signature = "(I)Z", garbageValue = "1580173918" ) public final boolean method4721() { if(this.modelIds == null) { return true; } else { boolean var1 = true; for(int var2 = 0; var2 < this.modelIds.length; ++var2) { var1 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var2] & 65535, 0); } return var1; } } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(II[[IIIIB)Ler;", garbageValue = "-50" ) public final Entity method4755(int var1, int var2, int[][] var3, int var4, int var5, int var6) { long var7; if(this.models == null) { var7 = (long)(var2 + (this.id << 10)); } else { var7 = (long)(var2 + (var1 << 3) + (this.id << 10)); } Object var9 = (Entity)ObjectDefinition_cachedEntities.method3032(var7); if(var9 == null) { ModelData var10 = this.method4719(var1, var2); if(var10 == null) { return null; } if(!this.nonFlatShading) { var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50); } else { var10.ambient = (short)(this.ambient + 64); var10.contrast = (short)(this.contrast + 768); var10.method2774(); var9 = var10; } ObjectDefinition_cachedEntities.method3034((DualNode)var9, var7); } if(this.nonFlatShading) { var9 = ((ModelData)var9).method2762(); } if(this.clipType >= 0) { if(var9 instanceof Model) { var9 = ((Model)var9).method2354(var3, var4, var5, var6, true, this.clipType); } else if(var9 instanceof ModelData) { var9 = ((ModelData)var9).method2763(var3, var4, var5, var6, true, this.clipType); } } return (Entity)var9; } @ObfuscatedName("r") @ObfuscatedSignature( signature = "(II)Z", garbageValue = "1830976839" ) public final boolean method4738(int var1) { if(this.models != null) { for(int var4 = 0; var4 < this.models.length; ++var4) { if(this.models[var4] == var1) { return ObjectDefinition_modelsArchive.method4024(this.modelIds[var4] & 65535, 0); } } return true; } else if(this.modelIds == null) { return true; } else if(var1 != 10) { return true; } else { boolean var2 = true; for(int var3 = 0; var3 < this.modelIds.length; ++var3) { var2 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var3] & 65535, 0); } return var2; } } @ObfuscatedName("u") @ObfuscatedSignature( signature = "(Lkl;II)V", garbageValue = "-912301650" ) void method4716(Buffer var1, int var2) { int var3; int var4; if(var2 == 1) { var3 = var1.readUnsignedByte(); if(var3 > 0) { if(this.modelIds != null && !ObjectDefinition_isLowDetail) { var1.offset += 3 * var3; } else { this.models = new int[var3]; this.modelIds = new int[var3]; for(var4 = 0; var4 < var3; ++var4) { this.modelIds[var4] = var1.readUnsignedShort(); this.models[var4] = var1.readUnsignedByte(); } } } } else if(var2 == 2) { this.name = var1.readString(); } else if(var2 == 5) { var3 = var1.readUnsignedByte(); if(var3 > 0) { if(this.modelIds != null && !ObjectDefinition_isLowDetail) { var1.offset += var3 * 2; } else { this.models = null; this.modelIds = new int[var3]; for(var4 = 0; var4 < var3; ++var4) { this.modelIds[var4] = var1.readUnsignedShort(); } } } } else if(var2 == 14) { this.sizeX = var1.readUnsignedByte(); } else if(var2 == 15) { this.sizeY = var1.readUnsignedByte(); } else if(var2 == 17) { this.interactType = 0; this.boolean1 = false; } else if(var2 == 18) { this.boolean1 = false; } else if(var2 == 19) { this.int1 = var1.readUnsignedByte(); } else if(var2 == 21) { this.clipType = 0; } else if(var2 == 22) { this.nonFlatShading = true; } else if(var2 == 23) { this.modelClipped = true; } else if(var2 == 24) { this.animationId = var1.readUnsignedShort(); if(this.animationId == 65535) { this.animationId = -1; } } else if(var2 == 27) { this.interactType = 1; } else if(var2 == 28) { this.int2 = var1.readUnsignedByte(); } else if(var2 == 29) { this.ambient = var1.readByte(); } else if(var2 == 39) { this.contrast = var1.readByte() * 25; } else if(var2 >= 30 && var2 < 35) { this.actions[var2 - 30] = var1.readString(); if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) { this.actions[var2 - 30] = null; } } else if(var2 == 40) { var3 = var1.readUnsignedByte(); this.recolorFrom = new short[var3]; this.recolorTo = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.recolorFrom[var4] = (short)var1.readUnsignedShort(); this.recolorTo[var4] = (short)var1.readUnsignedShort(); } } else if(var2 == 41) { var3 = var1.readUnsignedByte(); this.retextureFrom = new short[var3]; this.retextureTo = new short[var3]; for(var4 = 0; var4 < var3; ++var4) { this.retextureFrom[var4] = (short)var1.readUnsignedShort(); this.retextureTo[var4] = (short)var1.readUnsignedShort(); } } else if (var2 == 61) { var1.readUnsignedShort(); } else if(var2 == 62) { this.isRotated = true; } else if(var2 == 64) { this.clipped = false; } else if(var2 == 65) { this.modelSizeX = var1.readUnsignedShort(); } else if(var2 == 66) { this.modelHeight = var1.readUnsignedShort(); } else if(var2 == 67) { this.modelSizeY = var1.readUnsignedShort(); } else if(var2 == 68) { this.mapSceneId = var1.readUnsignedShort(); } else if(var2 == 69) { var1.readUnsignedByte(); } else if(var2 == 70) { this.offsetX = var1.g2s(); } else if(var2 == 71) { this.offsetHeight = var1.g2s(); } else if(var2 == 72) { this.offsetY = var1.g2s(); } else if(var2 == 73) { this.boolean2 = true; } else if(var2 == 74) { this.isSolid = true; } else if(var2 == 75) { this.int3 = var1.readUnsignedByte(); } else if(var2 != 77 && var2 != 92) { if(var2 == 78) { this.ambientSoundId = var1.readUnsignedShort(); this.int4 = var1.readUnsignedByte(); } else if(var2 == 79) { this.int5 = var1.readUnsignedShort(); this.int6 = var1.readUnsignedShort(); this.int4 = var1.readUnsignedByte(); var3 = var1.readUnsignedByte(); this.soundEffectIds = new int[var3]; for(var4 = 0; var4 < var3; ++var4) { this.soundEffectIds[var4] = var1.readUnsignedShort(); } } else if(var2 == 81) { this.clipType = var1.readUnsignedByte() * 256; } else if(var2 == 82) { this.mapIconId = var1.readUnsignedShort(); } else if (var2 == 89) { var1.readUnsignedShort(); } else if(var2 == 249) { this.params = UserComparator5.method3374(var1, this.params); } } else { this.transformVarbit = var1.readUnsignedShort(); if(this.transformVarbit == 65535) { this.transformVarbit = -1; } this.transformVarp = var1.readUnsignedShort(); if(this.transformVarp == 65535) { this.transformVarp = -1; } var3 = -1; if(var2 == 92) { var3 = var1.readUnsignedShort(); if(var3 == 65535) { var3 = -1; } } var4 = var1.readUnsignedByte(); this.transforms = new int[var4 + 2]; for(int var5 = 0; var5 <= var4; ++var5) { this.transforms[var5] = var1.readUnsignedShort(); if(this.transforms[var5] == 65535) { this.transforms[var5] = -1; } } this.transforms[var4 + 1] = var3; } } @ObfuscatedName("v") @ObfuscatedSignature( signature = "(Lkl;B)V", garbageValue = "76" ) void method4717(Buffer var1) { while(true) { int var2 = var1.readUnsignedByte(); if(var2 == 0) { return; } this.method4716(var1, var2); } } @ObfuscatedName("y") @ObfuscatedSignature( signature = "(II[[IIIILix;II)Ldh;", garbageValue = "680709040" ) public final Model method4723(int var1, int var2, int[][] var3, int var4, int var5, int var6, SequenceDefinition var7, int var8) { long var9; if(this.models == null) { var9 = (long)(var2 + (this.id << 10)); } else { var9 = (long)(var2 + (var1 << 3) + (this.id << 10)); } Model var11 = (Model)ObjectDefinition_cachedModels.method3032(var9); if(var11 == null) { ModelData var12 = this.method4719(var1, var2); if(var12 == null) { return null; } var11 = var12.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50); ObjectDefinition_cachedModels.method3034(var11, var9); } if(var7 == null && this.clipType == -1) { return var11; } else { if(var7 != null) { var11 = var7.method4662(var11, var8, var2, (byte)2); } else { var11 = var11.method2355(true); } if(this.clipType >= 0) { var11 = var11.method2354(var3, var4, var5, var6, false, this.clipType); } return var11; } } @ObfuscatedName("a") @ObfuscatedSignature( signature = "(I)Z", garbageValue = "1401395643" ) public boolean method4727() { if(this.transforms == null) { return this.ambientSoundId != -1 || this.soundEffectIds != null; } else { for(int var1 = 0; var1 < this.transforms.length; ++var1) { if(this.transforms[var1] != -1) { ObjectDefinition var2 = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(this.transforms[var1]); if(var2.ambientSoundId != -1 || var2.soundEffectIds != null) { return true; } } } return false; } } @ObfuscatedName("b") @ObfuscatedSignature( signature = "(IIB)I", garbageValue = "79" ) public int method4725(int var1, int var2) { return HealthBar.getParam(this.params, var1, var2); } @ObfuscatedName("c") @ObfuscatedSignature( signature = "(B)Liz;", garbageValue = "16" ) public final ObjectDefinition method4733() { int var1 = -1; if(this.transformVarbit != -1) { var1 = WorldMapSprite.method782(this.transformVarbit); } else if(this.transformVarp != -1) { var1 = Varps.Varps_main[this.transformVarp]; } int var2; if(var1 >= 0 && var1 < this.transforms.length - 1) { var2 = this.transforms[var1]; } else { var2 = this.transforms[this.transforms.length - 1]; } return var2 != -1?GrandExchangeOfferOwnWorldComparator.getObjectDefinition(var2):null; } public int getId() { return this.id; } public String getName() { return this.name; } public String[] getActions() { return this.actions; } public int getMapIconId() { return this.mapIconId; } public int getMapSceneId() { return this.mapSceneId; } public int[] getImpostorIds() { return this.transforms; } public RSObjectDefinition getImpostor() { return this.method4733(); } @ObfuscatedName("i") @ObfuscatedSignature( signature = "(III)Ldw;", garbageValue = "-819701179" ) final ModelData method4719(int var1, int var2) { ModelData var3 = null; boolean var4; int var5; int var7; if(this.models == null) { if(var1 != 10) { return null; } if(this.modelIds == null) { return null; } var4 = this.isRotated; if(var1 == 2 && var2 > 3) { var4 = !var4; } var5 = this.modelIds.length; for(int var6 = 0; var6 < var5; ++var6) { var7 = this.modelIds[var6]; if(var4) { var7 += 65536; } var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var7); if(var3 == null) { var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var7 & 65535, 0); if(var3 == null) { return null; } if(var4) { var3.method2772(); } ObjectDefinition_cachedModelData.method3034(var3, (long)var7); } if(var5 > 1) { field3461[var6] = var3; } } if(var5 > 1) { var3 = new ModelData(field3461, var5); } } else { int var9 = -1; for(var5 = 0; var5 < this.models.length; ++var5) { if(this.models[var5] == var1) { var9 = var5; break; } } if(var9 == -1) { return null; } var5 = this.modelIds[var9]; boolean var10 = this.isRotated ^ var2 > 3; if(var10) { var5 += 65536; } var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var5); if(var3 == null) { var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var5 & 65535, 0); if(var3 == null) { return null; } if(var10) { var3.method2772(); } ObjectDefinition_cachedModelData.method3034(var3, (long)var5); } } if(this.modelSizeX == 128 && this.modelHeight == 128 && this.modelSizeY == 128) { var4 = false; } else { var4 = true; } boolean var11; if(this.offsetX == 0 && this.offsetHeight == 0 && this.offsetY == 0) { var11 = false; } else { var11 = true; } ModelData var8 = new ModelData(var3, var2 == 0 && !var4 && !var11, this.recolorFrom == null, null == this.retextureFrom, true); if(var1 == 4 && var2 > 3) { var8.method2765(256); var8.method2784(45, 0, -45); } var2 &= 3; if(var2 == 1) { var8.method2833(); } else if(var2 == 2) { var8.method2759(); } else if(var2 == 3) { var8.method2798(); } if(this.recolorFrom != null) { for(var7 = 0; var7 < this.recolorFrom.length; ++var7) { var8.method2770(this.recolorFrom[var7], this.recolorTo[var7]); } } if(this.retextureFrom != null) { for(var7 = 0; var7 < this.retextureFrom.length; ++var7) { var8.method2831(this.retextureFrom[var7], this.retextureTo[var7]); } } if(var4) { var8.method2773(this.modelSizeX, this.modelHeight, this.modelSizeY); } if(var11) { var8.method2784(this.offsetX, this.offsetHeight, this.offsetY); } return var8; } @ObfuscatedName("m") @ObfuscatedSignature( signature = "(II[[IIIII)Ldh;", garbageValue = "-2129252392" ) public final Model method4722(int var1, int var2, int[][] var3, int var4, int var5, int var6) { long var7; if(this.models == null) { var7 = (long)(var2 + (this.id << 10)); } else { var7 = (long)(var2 + (var1 << 3) + (this.id << 10)); } Model var9 = (Model)ObjectDefinition_cachedModels.method3032(var7); if(var9 == null) { ModelData var10 = this.method4719(var1, var2); if(var10 == null) { return null; } var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50); ObjectDefinition_cachedModels.method3034(var9, var7); } if(this.clipType >= 0) { var9 = var9.method2354(var3, var4, var5, var6, true, this.clipType); } return var9; } void postDecode() { if (id == 10060) { name = "Trading Post"; actions[0] = "Open"; actions[1] = "Coffer"; actions[2] = "Guide"; } else if(id == 1534) { /* home room curtains */ actions[0] = null; } else if(id == 18258) { /* custom altar */ actions[0] = "Pray-at"; actions[1] = "Spellbook"; } else if(id == 11833) { actions[1] = "Practice"; } else if(id == 32758) { name = "Loyalty Chest"; actions[0] = "Loot"; actions[1] = "About"; actions[2] = null; actions[3] = null; actions[4] = null; } else if(id == 3192) { name = "PvP Leaderboard"; actions[0] = "Edge PKing"; actions[1] = "Deep Wild PKing"; actions[2] = null; actions[3] = null; actions[4] = null; } else if(id == 32759) { name = "Loyalty Chest"; actions[0] = null; actions[1] = null; actions[2] = null; actions[3] = null; actions[4] = null; } else if(id == 31379) { //is this obj ever used????????? name = "Donation table"; int1 = 1; sizeX = sizeY = 2; boolean2 = false; int3 = 1; transforms = null; modelIds = new int[]{32153}; transformVarbit = -1; } else if(id == 25203) { // decapitated elvarg corpse actions[0] = "Loot"; } else if(id == 29226) { name = "Pet list"; actions[4] = null; } else if(id == 6045) { actions[0] = "Dump-ore"; } else if(id == 3581) { name = "Ticket exchange"; actions[0] = "Use"; } else if(id == 11508 || id == 11509) { //curtain clipType = 0; } else if (id == 31618) { // home portal name = "World Portal"; actions[0] = "Teleport"; actions[1] = "Teleport-previous"; } else if(id == 31380) { //uhh i hope 31380 isn't ever used name = "Rejuvenation pool"; int1 = 1; sizeX = sizeY = 2; animationId = 7304; int4 = 3; boolean1 = false; actions[0] = "Drink"; ambientSoundId = 2149; clipType = 1; boolean2 = false; transforms = null; ambient = 40; modelIds = new int[]{32101}; transformVarbit = -1; } else if(id == 30352) { name = "test"; actions[1] = "Practice"; } else if(id == 539) { name = "Donator Area"; } else if(id == 33114) { name = "PvP Supply Chest"; actions[0] = "Check-timer"; } else if(id == 33115) { name = "PvP Supply Chest"; } else if(id == 31583) { name = "PvP Supply Chest"; } else if(id == 32572) { name = "Bloody Chest"; actions[1] = "Information"; } else if(id == 32573) { name = "Bloody Chest"; actions[0] = null; actions[1] = null; actions[2] = null; actions[3] = null; actions[4] = null; } else if (id == 30169) { // Dagannoth kings crack actions[0] = "Instance"; actions[1] = "Peek"; } else if (id == 1816) { // KBD Lever actions[1] = "Instance"; actions[2] = "Commune"; } else if (id == 535) { // Thermonuclear smoke devil crevice actions[1] = "Instance"; actions[2] = "Peek"; } else if (id == 23104) { // Cerberus iron winch actions[1] = "Instance"; actions[2] = "Peek"; } else if (id == 29705) { // KQ Crack actions[0] = "Instance"; actions[1] = "Peek"; } else if (id >= 26502 && id <= 26505) { // GWD boss doors actions[1] = "Instance"; actions[2] = "Peek"; } else if (id == 31621) { // pvm instance portal name = "Boss instance portal"; actions[0] = "Use"; } else if(id == 19038) { //christmas tree name = "Christmas tree"; actions[0] = "Grab-present"; } else if(id == 29709) { name = "Snowball Exchange"; actions[0] = "Open"; actions[1] = "Information"; } else if (id == 40000) { copy(32546); name = "Giveaway booth"; actions[0] = "Use"; } else if(id == 40001) { copy(4525); actions[0] = "Exit"; actions[1] = null; actions[4] = null; } else if(id == 40002) { copy(32424); name = "Consumables"; } else if(id == 40003) { copy(32425); name = "Equipment"; } else if(id == 28925) { name = "Fun PVP Portal"; } else if(id == 31622) { name = "Ket'ian Wilderness Boss Portal"; } else if(id == 31626) { name = "Tournament Entrance"; } else if(id == 2654) { name = "Bloody Fountain"; actions[0] = "Drink"; actions[1] = null; modelHeight = 200; modelSizeX = 200; modelSizeY = 200; sizeX = 3; sizeY = 3; } else if(id == 4470) { name = "Donator Zone"; actions[0] = "Enter"; } else if(id == 40004) { copy(29241); actions[4] = null; } else if(id == 40005) { copy(31858); actions[0] = "Pray-at"; actions[1] = "Spellbook"; actions[2] = null; actions[3] = null; actions[4] = null; } else if(id == 40006) { copy(4537); actions[4] = null; } else if(id == 40007) { copy(13619); name = "Fun PVP Portal"; actions[4] = null; } else if(id == 40008) { copy(20839); name = "Tournament Barrier"; actions[0] = "Use"; } else if(id == 40009) { copy(26714); name = "Mounted Max Cape"; actions[0] = null; actions[1] = null; actions[2] = null; actions[3] = null; actions[4] = null; } else if(id == 31846) { name = "Tournament Information"; actions[0] = "Read"; } else if(id == 29087) { name = "Ticket Exchange"; actions[0] = "Use"; } else if(id == 172) { name = "Crystal Chest"; } else if (id == 27290) { name = "PK Chest"; } else if (id == 4004) { name = "Well of Goodwill"; actions[0] = "Use"; } else if (id == 4390) { name = "Donator Zone portal"; } } private void copy(int id) { ObjectDefinition from = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(id); name = from.name; sizeX = from.sizeX; sizeY = from.sizeY; clipType = from.clipType; boolean1 = from.boolean1; int1 = from.int1; clipType = from.clipType; nonFlatShading = from.nonFlatShading; modelClipped = from.modelClipped; animationId = from.animationId; int2 = from.int2; ambient = from.ambient; contrast = from.contrast; actions = from.actions; mapIconId = from.mapIconId; mapSceneId = from.mapSceneId; isRotated = from.isRotated; clipped = from.clipped; modelSizeX = from.modelSizeX; modelHeight = from.modelHeight; modelSizeY = from.modelSizeY; offsetX = from.offsetX; offsetHeight = from.offsetHeight; offsetY = from.offsetY; boolean2 = from.boolean2; isSolid = from.isSolid; int3 = from.int3; transformVarbit = from.transformVarbit; transformVarp = from.transformVarp; ambientSoundId = from.ambientSoundId; int4 = from.int4; int5 = from.int5; int6 = from.int6; modelIds = from.modelIds; } }
replace your ModelData with this
https://pastebin.com/uTspqe97thats should be all for the client side now time for the server side
replace your region keys class with this
Code:package io.ruin.data.impl; import com.google.common.collect.Maps; import com.google.gson.*; import io.ruin.api.utils.JsonUtils; import io.ruin.api.utils.ServerWrapper; import io.ruin.data.DataFile; import io.ruin.model.map.MultiZone; import io.ruin.model.map.Region; import io.ruin.model.map.dynamic.DynamicMap; import org.json.JSONArray; import org.json.JSONObject; import java.util.Arrays; import java.util.Map; public class region_keys extends DataFile { public static final int[] NULL_KEYS = new int[4]; @Override public String path() { return "xteas.json"; } @Override public int priority() { return 2; } @Override public Object fromJson(String fileName, String json) { Map<Integer, int[]> key_map = Maps.newHashMap(); JsonParser parser = new JsonParser(); JsonArray array = (JsonArray) parser.parse(json); Gson builder = new GsonBuilder().create(); //Load keys into map for (int i = 0; i < array.size(); i++) { JsonObject jObject = (JsonObject) array.get(i); int regionId = jObject.get("mapsquare").getAsInt(); int[] keys1 = builder.fromJson(jObject.getAsJsonArray("key"), int[].class); key_map.put(regionId, keys1); } //Populate regions list for (int i = 0; i < Region.LOADED.length; i++) { Region region = new Region(i); if ((region.keys = key_map.get(i)) != null && !isValid(region.id, region.keys)) { region.keys = null; //Invalid keys } Region.LOADED[i] = region; } //Load each region for(Region region : Region.LOADED) { try { region.init(); } catch (Exception ex) { System.err.println("Error loading region " + region.id); ex.printStackTrace(); } } MultiZone.load(); DynamicMap.load(); return key_map; } private static boolean isValid(int id, int[] keys) { Region r = new Region(id); r.keys = keys; try { r.getLandscapeData(); return true; } catch(Throwable t) { return false; } } }
add this to your inbuffer class inside kronos-api
Code:public int readUnsignedIntSmartShortCompat() { int var1 = 0; int var2; for (var2 = this.readUSmart(); var2 == 32767; var2 = this.readUSmart()) { var1 += 32767; } var1 += var2; return var1; } public int readUSmart() { int peek = payload[position] & 0xFF; return peek < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 0x8000; }
replace the defs with these https://cdn.discordapp.com/attachmen...7682/cache.rar
replace the init method inside the region class with this
make sure u have added this inside of kronos server inside the data folder
https://cdn.discordapp.com/attachmen...750/xteas.json
DONT DO THIS. IT WILL BREAK YOUR MAGIC TAB, PEOPLE ARE OFFERING TO DO THIS FOR MONEY DONT FALL FOR THE SCAM.
[IMG]
[/IMG]
https://www.dropbox.com/s/9qoe2b25vl...20203.rar?dl=0
https://github.com/jessewhitley/ValkyrCacheSuite updated with a javafx libary to load easyer
add this to the buffer class inside the standalone client inside runelite-client
public int method7383() {
int var1 = 0; // L: 302
int var2;
for (var2 = this.readUShortSmart(); var2 == 32767; var2 = this.readUShortSmart()) { // L: 303 304 306
var1 += 32767; // L: 305
}
var1 += var2; // L: 308
return var1; // L: 309
}
public int readUShortSmart() {
int var1 = this.array[this.offset] & 255; // L: 296
return var1 < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 32768; // L: 297 298
}
public void writeShort(int var1) {
this.array[++this.offset - 1] = (byte)(var1 >> 8); // L: 75
this.array[++this.offset - 1] = (byte)var1; // L: 76
}
public int readShortSmart() {
int var1 = this.array[this.offset] & 255; // L: 290
return var1 < 128 ? this.readUnsignedByte() - 64 : this.readUnsignedShort() - 49152; // L: 291 292
}
fine method2209 inside class92 and make sure it match's
while(true) {
int var12 = var10.method7383();
if(var12 == 0) {
return;
}
var11 += var12;
int var13 = 0;
while(true) {
int var14 = var10.readUnsignedSmart();
if(var14 == 0) {
break;
}
replace you itemdef npcdef and object def
package net.runelite.standalone;
import java.io.IOException;
import java.util.Arrays;
import net.runelite.api.events.PostItemDefinition;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSItemDefinition;
import net.runelite.rs.api.RSModel;
@ObfuscatedName("it")
public class ItemDefinition extends DualNode implements RSItemDefinition {
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "Lhp;"
)
static AbstractArchive ItemDefinition_archive;
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "Lhp;"
)
static AbstractArchive ItemDefinition_modelArchive;
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable ItemDefinition_cachedSprites;
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "Lem;"
)
static EvictingDualNodeHashTable ItemDefinition_cachedModels;
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "Lem;"
)
static EvictingDualNodeHashTable ItemDefinition_cached;
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = -1552364581
)
public int zoom2d;
@ObfuscatedName("t")
short[] recolorFrom;
@ObfuscatedName("w")
public String name;
@ObfuscatedName("x")
short[] retextureFrom;
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = 1164476445
)
public int id;
@ObfuscatedName("aa")
public String[] groundActions;
@ObfuscatedName("ab")
@ObfuscatedGetter(
intValue = -281574303
)
int shiftClickIndex;
@ObfuscatedName("ac")
@ObfuscatedGetter(
intValue = -1898122861
)
public int isStackable;
@ObfuscatedName("ad")
@ObfuscatedGetter(
intValue = -774987533
)
int femaleModel1;
@ObfuscatedName("ae")
@ObfuscatedGetter(
intValue = -622073101
)
int femaleHeadModel;
@ObfuscatedName("af")
@ObfuscatedGetter(
intValue = 1043908831
)
int resizeY;
@ObfuscatedName("ag")
int[] countco;
@ObfuscatedName("ah")
int[] countobj;
@ObfuscatedName("ai")
@ObfuscatedGetter(
intValue = -629230839
)
int maleModel2;
@ObfuscatedName("aj")
@ObfuscatedGetter(
intValue = 2003146835
)
public int note;
@ObfuscatedName("ak")
@ObfuscatedGetter(
intValue = -1320032129
)
int femaleModel2;
@ObfuscatedName("al")
@ObfuscatedGetter(
intValue = -472240431
)
int femaleModel;
@ObfuscatedName("am")
@ObfuscatedGetter(
intValue = 1142570821
)
int maleHeadModel2;
@ObfuscatedName("an")
@ObfuscatedGetter(
intValue = 839022773
)
int femaleOffset;
@ObfuscatedName("ao")
@ObfuscatedGetter(
intValue = 708775895
)
int maleOffset;
@ObfuscatedName("ap")
public String[] inventoryActions;
@ObfuscatedName("aq")
@ObfuscatedGetter(
intValue = 2070739727
)
int maleHeadModel;
@ObfuscatedName("as")
@ObfuscatedGetter(
intValue = -1653428101
)
int maleModel1;
@ObfuscatedName("at")
@ObfuscatedGetter(
intValue = -251593053
)
int resizeZ;
@ObfuscatedName("au")
@ObfuscatedGetter(
intValue = 146352651
)
int resizeX;
@ObfuscatedName("av")
@ObfuscatedGetter(
intValue = -1870487091
)
int femaleHeadModel2;
@ObfuscatedName("aw")
public boolean isMembersOnly;
@ObfuscatedName("ax")
@ObfuscatedGetter(
intValue = -1611629547
)
int maleModel;
@ObfuscatedName("ay")
@ObfuscatedGetter(
intValue = -922094347
)
public int noteTemplate;
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = -187431889
)
public int price;
@ObfuscatedName("bc")
@ObfuscatedGetter(
intValue = -1887741169
)
public int placeholderTemplate;
@ObfuscatedName("bd")
@ObfuscatedGetter(
intValue = 850095651
)
public int team;
@ObfuscatedName("bh")
@ObfuscatedGetter(
intValue = 807356389
)
public int contrast;
@ObfuscatedName("bj")
@ObfuscatedGetter(
intValue = 1578768163
)
int unnotedId;
@ObfuscatedName("bm")
@ObfuscatedSignature(
signature = "Llb;"
)
IterableNodeHashTable params;
@ObfuscatedName("bs")
@ObfuscatedGetter(
intValue = -407908075
)
int notedId;
@ObfuscatedName("bv")
public boolean isTradable;
@ObfuscatedName("bx")
@ObfuscatedGetter(
intValue = 427704773
)
public int ambient;
@ObfuscatedName("bz")
@ObfuscatedGetter(
intValue = -1594376835
)
public int placeholder;
public int shiftClickActionIndex;
public int modelOverride;
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = -1211123861
)
public int zan2d;
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = -512556695
)
int model;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 850273909
)
public int xan2d;
@ObfuscatedName("g")
short[] recolorTo;
@ObfuscatedName("h")
short[] retextureTo;
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = 1701459647
)
public int yan2d;
@ObfuscatedName("k")
@ObfuscatedGetter(
intValue = 992637627
)
public int offsetY2d;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -973833067
)
public int offsetX2d;
static {
ItemDefinition_cached = new EvictingDualNodeHashTable(64);
ItemDefinition_cachedModels = new EvictingDualNodeHashTable(50);
ItemDefinition_cachedSprites = new EvictingDualNodeHashTable(200);
}
ItemDefinition() {
this.name = "null";
this.zoom2d = 2000;
this.xan2d = 0;
this.yan2d = 0;
this.zan2d = 0;
this.offsetX2d = 0;
this.offsetY2d = 0;
this.isStackable = 0;
this.price = 1;
this.isMembersOnly = false;
this.groundActions = new String[]{null, null, "Take", null, null};
this.inventoryActions = new String[]{null, null, null, null, "Drop"};
this.shiftClickIndex = -2;
this.maleModel = -1;
this.maleModel1 = -1;
this.maleOffset = 0;
this.femaleModel = -1;
this.femaleModel1 = -1;
this.femaleOffset = 0;
this.maleModel2 = -1;
this.femaleModel2 = -1;
this.maleHeadModel = -1;
this.maleHeadModel2 = -1;
this.femaleHeadModel = -1;
this.femaleHeadModel2 = -1;
this.note = -1;
this.noteTemplate = -1;
this.resizeX = 128;
this.resizeY = 128;
this.resizeZ = 128;
this.ambient = 0;
this.contrast = 0;
this.team = 0;
this.isTradable = false;
this.unnotedId = -1;
this.notedId = -1;
this.placeholder = -1;
this.placeholderTemplate = -1;
this.rl$$init();
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(Lit;Lit;B)V",
garbageValue = "126"
)
void method4552(ItemDefinition var1, ItemDefinition var2) {
this.model = var1.model;
this.zoom2d = var1.zoom2d;
this.xan2d = var1.xan2d;
this.yan2d = var1.yan2d;
this.zan2d = var1.zan2d;
this.offsetX2d = var1.offsetX2d;
this.offsetY2d = var1.offsetY2d;
this.recolorFrom = var1.recolorFrom;
this.recolorTo = var1.recolorTo;
this.retextureFrom = var1.retextureFrom;
this.retextureTo = var1.retextureTo;
this.name = var2.name;
this.isMembersOnly = var2.isMembersOnly;
this.price = var2.price;
this.isStackable = 1;
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(Lit;Lit;S)V",
garbageValue = "-15779"
)
void method4532(ItemDefinition var1, ItemDefinition var2) {
this.model = var1.model;
this.zoom2d = var1.zoom2d;
this.xan2d = var1.xan2d;
this.yan2d = var1.yan2d;
this.zan2d = var1.zan2d;
this.offsetX2d = var1.offsetX2d;
this.offsetY2d = var1.offsetY2d;
this.recolorFrom = var2.recolorFrom;
this.recolorTo = var2.recolorTo;
this.retextureFrom = var2.retextureFrom;
this.retextureTo = var2.retextureTo;
this.name = var2.name;
this.isMembersOnly = var2.isMembersOnly;
this.isStackable = var2.isStackable;
this.maleModel = var2.maleModel;
this.maleModel1 = var2.maleModel1;
this.maleModel2 = var2.maleModel2;
this.femaleModel = var2.femaleModel;
this.femaleModel1 = var2.femaleModel1;
this.femaleModel2 = var2.femaleModel2;
this.maleHeadModel = var2.maleHeadModel;
this.maleHeadModel2 = var2.maleHeadModel2;
this.femaleHeadModel = var2.femaleHeadModel;
this.femaleHeadModel2 = var2.femaleHeadModel2;
this.team = var2.team;
this.groundActions = var2.groundActions;
this.inventoryActions = new String[5];
if(var2.inventoryActions != null) {
for(int var3 = 0; var3 < 4; ++var3) {
this.inventoryActions[var3] = var2.inventoryActions[var3];
}
}
this.inventoryActions[4] = "Discard";
this.price = 0;
}
@ObfuscatedName("r")
@ObfuscatedSignature(
signature = "(Lkl;IB)V",
garbageValue = "7"
)
void method4579(Buffer var1, int var2) {
if(var2 == 1) {
this.model = var1.readUnsignedShort();
} else if(var2 == 2) {
this.name = var1.readString();
} else if(var2 == 4) {
this.zoom2d = var1.readUnsignedShort();
} else if(var2 == 5) {
this.xan2d = var1.readUnsignedShort();
} else if(var2 == 6) {
this.yan2d = var1.readUnsignedShort();
} else if(var2 == 7) {
this.offsetX2d = var1.readUnsignedShort();
if(this.offsetX2d > 32767) {
this.offsetX2d -= 65536;
}
} else if(var2 == 8) {
this.offsetY2d = var1.readUnsignedShort();
if(this.offsetY2d > 32767) {
this.offsetY2d -= 65536;
}
} else if (var2 == 9) {
var1.readString();
} else if(var2 == 11) {
this.isStackable = 1;
} else if(var2 == 12) {
this.price = var1.readInt();
} else if(var2 == 16) {
this.isMembersOnly = true;
} else if(var2 == 23) {
this.maleModel = var1.readUnsignedShort();
this.maleOffset = var1.readUnsignedByte();
} else if(var2 == 24) {
this.maleModel1 = var1.readUnsignedShort();
} else if(var2 == 25) {
this.femaleModel = var1.readUnsignedShort();
this.femaleOffset = var1.readUnsignedByte();
} else if(var2 == 26) {
this.femaleModel1 = var1.readUnsignedShort();
} else if(var2 >= 30 && var2 < 35) {
this.groundActions[var2 - 30] = var1.readString();
if(this.groundActions[var2 - 30].equalsIgnoreCase("Hidden")) {
this.groundActions[var2 - 30] = null;
}
} else if(var2 >= 35 && var2 < 40) {
this.inventoryActions[var2 - 35] = var1.readString();
} else {
int var3;
int var4;
if(var2 == 40) {
var3 = var1.readUnsignedByte();
this.recolorFrom = new short[var3];
this.recolorTo = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.recolorFrom[var4] = (short)var1.readUnsignedShort();
this.recolorTo[var4] = (short)var1.readUnsignedShort();
}
} else if(var2 == 41) {
var3 = var1.readUnsignedByte();
this.retextureFrom = new short[var3];
this.retextureTo = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.retextureFrom[var4] = (short)var1.readUnsignedShort();
this.retextureTo[var4] = (short)var1.readUnsignedShort();
}
} else if(var2 == 42) {
this.shiftClickIndex = var1.readByte();
} else if(var2 == 65) {
this.isTradable = true;
} else if(var2 == 78) {
this.maleModel2 = var1.readUnsignedShort();
} else if(var2 == 79) {
this.femaleModel2 = var1.readUnsignedShort();
} else if(var2 == 90) {
this.maleHeadModel = var1.readUnsignedShort();
} else if(var2 == 91) {
this.femaleHeadModel = var1.readUnsignedShort();
} else if(var2 == 92) {
this.maleHeadModel2 = var1.readUnsignedShort();
} else if(var2 == 93) {
this.femaleHeadModel2 = var1.readUnsignedShort();
} else if (var2 == 94) {
var1.readUnsignedShort();
} else if(var2 == 95) {
this.zan2d = var1.readUnsignedShort();
} else if(var2 == 97) {
this.note = var1.readUnsignedShort();
} else if(var2 == 98) {
this.noteTemplate = var1.readUnsignedShort();
} else if(var2 >= 100 && var2 < 110) {
if(this.countobj == null) {
this.countobj = new int[10];
this.countco = new int[10];
}
this.countobj[var2 - 100] = var1.readUnsignedShort();
this.countco[var2 - 100] = var1.readUnsignedShort();
} else if(var2 == 110) {
this.resizeX = var1.readUnsignedShort();
} else if(var2 == 111) {
this.resizeY = var1.readUnsignedShort();
} else if(var2 == 112) {
this.resizeZ = var1.readUnsignedShort();
} else if(var2 == 113) {
this.ambient = var1.readByte();
} else if(var2 == 114) {
this.contrast = var1.readByte() * 5;
} else if(var2 == 115) {
this.team = var1.readUnsignedByte();
} else if(var2 == 139) {
this.unnotedId = var1.readUnsignedShort();
} else if(var2 == 140) {
this.notedId = var1.readUnsignedShort();
} else if(var2 == 148) {
this.placeholder = var1.readUnsignedShort();
} else if(var2 == 149) {
this.placeholderTemplate = var1.readUnsignedShort();
} else if(var2 == 249) {
this.params = UserComparator5.method3374(var1, this.params);
}
}
}
@ObfuscatedName("s")
@ObfuscatedSignature(
signature = "(IIB)I",
garbageValue = "59"
)
public int getParam(int index, int defaultInt) {
return HealthBar.getParam(this.params, index, defaultInt);
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lkl;B)V",
garbageValue = "32"
)
void method4527(Buffer var1) {
while(true) {
int var2 = var1.readUnsignedByte();
if(var2 == 0) {
return;
}
this.method4579(var1, var2);
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "1"
)
void method4528() {
this.post();
}
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(ZB)Z",
garbageValue = "100"
)
public final boolean method4556(boolean var1) {
int var2 = this.maleHeadModel;
int var3 = this.maleHeadModel2;
if(var1) {
var2 = this.femaleHeadModel;
var3 = this.femaleHeadModel2;
}
if(var2 == -1) {
return true;
} else {
boolean var4 = true;
if(!ItemDefinition_modelArchive.method4024(var2, 0)) {
var4 = false;
}
if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) {
var4 = false;
}
return var4;
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(IB)Ldw;",
garbageValue = "-102"
)
public final ModelData method4534(int var1) {
int var3;
if(this.countobj != null && var1 > 1) {
int var2 = -1;
for(var3 = 0; var3 < 10; ++var3) {
if(var1 >= this.countco[var3] && this.countco[var3] != 0) {
var2 = this.countobj[var3];
}
}
if(var2 != -1) {
return Occluder.getItemDefinition(var2).method4534(1);
}
}
ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0);
if(var4 == null) {
return null;
} else {
if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) {
var4.method2773(this.resizeX, this.resizeY, this.resizeZ);
}
if(this.recolorFrom != null) {
for(var3 = 0; var3 < this.recolorFrom.length; ++var3) {
var4.method2770(this.recolorFrom[var3], this.recolorTo[var3]);
}
}
if(this.retextureFrom != null) {
for(var3 = 0; var3 < this.retextureFrom.length; ++var3) {
var4.method2831(this.retextureFrom[var3], this.retextureTo[var3]);
}
}
return var4;
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
signature = "(ZI)Z",
garbageValue = "-94789059"
)
public final boolean method4537(boolean var1) {
int var2 = this.maleModel;
int var3 = this.maleModel1;
int var4 = this.maleModel2;
if(var1) {
var2 = this.femaleModel;
var3 = this.femaleModel1;
var4 = this.femaleModel2;
}
if(var2 == -1) {
return true;
} else {
boolean var5 = true;
if(!ItemDefinition_modelArchive.method4024(var2, 0)) {
var5 = false;
}
if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) {
var5 = false;
}
if(var4 != -1 && !ItemDefinition_modelArchive.method4024(var4, 0)) {
var5 = false;
}
return var5;
}
}
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "(IB)Lit;",
garbageValue = "23"
)
public ItemDefinition method4559(int var1) {
if(this.countobj != null && var1 > 1) {
int var2 = -1;
for(int var3 = 0; var3 < 10; ++var3) {
if(var1 >= this.countco[var3] && this.countco[var3] != 0) {
var2 = this.countobj[var3];
}
}
if(var2 != -1) {
return Occluder.getItemDefinition(var2);
}
}
return this;
}
public int getIsStackable() {
return this.isStackable;
}
public void post() {
PostItemDefinition var1 = new PostItemDefinition();
var1.setItemDefinition(this);
ViewportMouse.client.getCallbacks().post(PostItemDefinition.class, var1);
}
public int copy$getShiftClickIndex(int var1) {
return this.shiftClickIndex != -1 && this.inventoryActions != null?(this.shiftClickIndex >= 0?(this.inventoryActions[this.shiftClickIndex] != null?this.shiftClickIndex:-1):("Drop".equalsIgnoreCase(this.inventoryActions[4])?4:-1)):-1;
}
@ObfuscatedSignature(
signature = "(II)Ldh;"
)
public final Model copy$getModel(int var1, int var2) {
if(this.countobj != null && var1 > 1) {
int var3 = -1;
for(int var4 = 0; var4 < 10; ++var4) {
if(var1 >= this.countco[var4] && this.countco[var4] != 0) {
var3 = this.countobj[var4];
}
}
if(var3 != -1) {
return Occluder.getItemDefinition(var3).method4575(1, 1336448754);
}
}
Model var6 = (Model)ItemDefinition_cachedModels.method3032((long)this.id);
if(var6 != null) {
return var6;
} else {
ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0);
if(var7 == null) {
return null;
} else {
if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) {
var7.method2773(this.resizeX, this.resizeY, this.resizeZ);
}
int var5;
if(this.recolorFrom != null) {
for(var5 = 0; var5 < this.recolorFrom.length; ++var5) {
var7.method2770(this.recolorFrom[var5], this.recolorTo[var5]);
}
}
if(this.retextureFrom != null) {
for(var5 = 0; var5 < this.retextureFrom.length; ++var5) {
var7.method2831(this.retextureFrom[var5], this.retextureTo[var5]);
}
}
var6 = var7.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
var6.isSingleTile = true;
ItemDefinition_cachedModels.method3034(var6, (long)this.id);
return var6;
}
}
}
private void rl$$init() {
this.shiftClickActionIndex = -2;
this.modelOverride = -1;
}
public void setModelOverride(int var1) {
this.modelOverride = var1;
}
public boolean isStackable() {
return this.getIsStackable() != 0;
}
public void setShiftClickActionIndex(int var1) {
this.shiftClickActionIndex = var1;
}
public void resetShiftClickActionIndex() {
this.shiftClickActionIndex = -2;
}
public int getId() {
return this.id;
}
public void setName(String var1) {
this.name = var1;
}
public String getName() {
return this.name;
}
public int getPrice() {
return this.price;
}
public boolean isMembers() {
return this.isMembersOnly;
}
public String[] getInventoryActions() {
return this.inventoryActions;
}
public int getMaleModel() {
return this.maleModel;
}
public int getLinkedNoteId() {
return this.note;
}
public int getNote() {
return this.noteTemplate;
}
public void setTradeable(boolean var1) {
this.isTradable = var1;
}
public boolean isTradeable() {
return this.isTradable;
}
public int getPlaceholderId() {
return this.placeholder;
}
public int getPlaceholderTemplateId() {
return this.placeholderTemplate;
}
public RSModel getModel(int var1) {
return this.method4575(var1, 1336448754);
}
public int getShiftClickActionIndex() {
return this.method4543(-1424068644);
}
@ObfuscatedName("e")
@ObfuscatedSignature(
signature = "(ZB)Ldw;",
garbageValue = "22"
)
public final ModelData method4538(boolean var1) {
int var2 = this.maleModel;
int var3 = this.maleModel1;
int var4 = this.maleModel2;
if(var1) {
var2 = this.femaleModel;
var3 = this.femaleModel1;
var4 = this.femaleModel2;
}
if(var2 == -1) {
return null;
} else {
ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0);
if(var3 != -1) {
ModelData var6 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0);
if(var4 != -1) {
ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, var4, 0);
ModelData[] var8 = new ModelData[]{var5, var6, var7};
var5 = new ModelData(var8, 3);
} else {
ModelData[] var10 = new ModelData[]{var5, var6};
var5 = new ModelData(var10, 2);
}
}
if(!var1 && this.maleOffset != 0) {
var5.method2784(0, this.maleOffset, 0);
}
if(var1 && this.femaleOffset != 0) {
var5.method2784(0, this.femaleOffset, 0);
}
int var9;
if(this.recolorFrom != null) {
for(var9 = 0; var9 < this.recolorFrom.length; ++var9) {
var5.method2770(this.recolorFrom[var9], this.recolorTo[var9]);
}
}
if(this.retextureFrom != null) {
for(var9 = 0; var9 < this.retextureFrom.length; ++var9) {
var5.method2831(this.retextureFrom[var9], this.retextureTo[var9]);
}
}
return var5;
}
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;I)Ljava/lang/String;",
garbageValue = "570180688"
)
public String getParam(int index, String defaultString) {
return class94.method2216(this.params, index, defaultString);
}
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(ZI)Ldw;",
garbageValue = "1830989293"
)
public final ModelData method4540(boolean var1) {
int var2 = this.maleHeadModel;
int var3 = this.maleHeadModel2;
if(var1) {
var2 = this.femaleHeadModel;
var3 = this.femaleHeadModel2;
}
if(var2 == -1) {
return null;
} else {
ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0);
if(var3 != -1) {
ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0);
ModelData[] var6 = new ModelData[]{var4, var5};
var4 = new ModelData(var6, 2);
}
int var7;
if(this.recolorFrom != null) {
for(var7 = 0; var7 < this.recolorFrom.length; ++var7) {
var4.method2770(this.recolorFrom[var7], this.recolorTo[var7]);
}
}
if(this.retextureFrom != null) {
for(var7 = 0; var7 < this.retextureFrom.length; ++var7) {
var4.method2831(this.retextureFrom[var7], this.retextureTo[var7]);
}
}
return var4;
}
}
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(II)Ldh;"
)
public final Model method4575(int var1, int var2) {
return this.modelOverride == -1?(Model)this.copy$getModel(var1, var2):(Model)ViewportMouse.client.getItemDefinition(this.modelOverride).getModel(var1);
}
@ObfuscatedName("j")
public int method4543(int var1) {
return this.shiftClickActionIndex == -2?this.copy$getShiftClickIndex(var1):this.shiftClickActionIndex;
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(Lit;Lit;I)V",
garbageValue = "-2143595462"
)
void method4533(ItemDefinition var1, ItemDefinition var2) {
this.model = var1.model;
this.zoom2d = var1.zoom2d;
this.xan2d = var1.xan2d;
this.yan2d = var1.yan2d;
this.zan2d = var1.zan2d;
this.offsetX2d = var1.offsetX2d;
this.offsetY2d = var1.offsetY2d;
this.recolorFrom = var1.recolorFrom;
this.recolorTo = var1.recolorTo;
this.retextureFrom = var1.retextureFrom;
this.retextureTo = var1.retextureTo;
this.isStackable = var1.isStackable;
this.name = var2.name;
this.price = 0;
this.isMembersOnly = false;
this.isTradable = false;
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(B)Lbl;",
garbageValue = "66"
)
static ClientPreferences method4600() {
AccessFile var0 = null;
ClientPreferences var1 = new ClientPreferences();
try {
var0 = class202.method3853("", class10.field66.name, false);
byte[] var2 = new byte[(int)var0.method5()];
int var4;
for(int var3 = 0; var3 < var2.length; var3 += var4) {
var4 = var0.method6(var2, var3, var2.length - var3);
if(var4 == -1) {
throw new IOException();
}
}
var1 = new ClientPreferences(new Buffer(var2));
} catch (Exception var6) {
;
}
try {
if(var0 != null) {
var0.method18();
}
} catch (Exception var5) {
;
}
return var1;
}
public void postDecode() {
if(id == 2742) {
name = "Coin Casket (small)";
inventoryActions[1] = null;
}
if(id == 2744) {
name = "Coin Casket (medium)";
inventoryActions[1] = null;
}
if(id == 2746) {
name = "Coin Casket (large)";
inventoryActions[1] = null;
}
if(id == 2748) {
name = "Coin Casket (giant)";
inventoryActions[1] = null;
}
if (id == 3455 || id == 3457 || id == 3458) {
name = "Clue key";
inventoryActions[3] = "Check-Hint";
}
if(id == 13190) { //bond
name = CustomMain.worldType.getName() + " Credit";
isStackable = 1;
inventoryActions[0] = "Claim";
inventoryActions[2] = null;
}
if (id == 13302) {
name = "PK Key";
}
if(id == 6199) {
inventoryActions[2] = "Gift";
}
if(id == 290) {
name = "Super Mystery Box";
inventoryActions[1] = "Open";
inventoryActions[2] = "Gift";
}
if(id == 6828) {
name = "Pet Mystery Box";
inventoryActions[1] = "Open";
inventoryActions[2] = "Gift";
}
if(id == 6829) {
name = "Voting Mystery Box";
inventoryActions[1] = "Open";
inventoryActions[2] = "Gift";
}
if(id == 6831) {
name = "3rd Age Mystery Box";
inventoryActions[1] = "Open";
inventoryActions[2] = "Gift";
}
if(id == 1505) {
name = "Obelisk destination scroll";
}
if (id == 621) {
name = "Tournament voucher";
}
if(id == 4067) {
name = "Vote ticket";
}
if (id == 9477) {
name = "Coinbox";
inventoryActions[0] = "Open";
isStackable = 0;
}
if (id == 3455 || id == 3457 || id == 3458) {
inventoryActions[3] = "Check-Hint";
}
if(id == 10834) {
name = "Dice bag";
inventoryActions[0] = "Roll 4-sided";
inventoryActions[1] = "Roll 12-sided";
inventoryActions[2] = "Roll 100-sided";
}
if (id == 1464) {
name = "Vote Lottery Ticket";
isStackable = 0;
}
if(id == 6306) {
name = "LMS Sticks";
isTradable = false;
}
if(id == 6806) {
name = "Green Skin Scroll";
inventoryActions[0] = "Redeem";
}
if(id == 6807) {
name = "Blue Skin Scroll";
inventoryActions[0] = "Redeem";
}
if(id == 6808) {
name = "Purple Skin Scroll";
inventoryActions[0] = "Redeem";
}
if(id == 19625) {
name = "Home teleport";
}
if(id == 8007) {
inventoryActions[1] = null;
}
if(id >= 1567 && id <= 1572)
name = "Overgrown cat";
/* Quick option for repairing all broken items */
if(name.endsWith("(broken)"))
inventoryActions[0] = "Fix";
if(id == 11169) {
name = CustomMain.worldType.getName() + " Herald";
inventoryActions[0] = "View-updates";
inventoryActions[1] = null;
inventoryActions[4] = "Destroy";
}
if(id == 12746 || (id >= 12748 && id <= 12756)) {
inventoryActions[0] = "Info";
inventoryActions[1] = "Redeem";
}
if (id == 2399) {
name = "Deadman supply key";
}
if(id == 21532) {
name = "Blood Fragments";
}
if(id == 607) {
name = "Rare Drop Scroll";
inventoryActions[0] = "Activate";
}
if(id == 608) {
name = "Pet Drop Scroll";
inventoryActions[0] = "Activate";
}
if(id == 6758) {
name = "Bonus Exp Scroll";
inventoryActions[0] = "Activate";
}
if(id == 2730) {
name = "Wilderness Reward Box (small)";
inventoryActions[0] = "Open";
inventoryActions[1] = null;
}
if(id == 2732) {
name = "Wilderness Reward Box (medium)";
inventoryActions[0] = "Open";
inventoryActions[1] = null;
}
if(id == 2734) {
name = "Wilderness Reward Box (large)";
inventoryActions[0] = "Open";
inventoryActions[1] = null;
}
if(id == 2736) {
name = "Wilderness Reward Box (giant)";
inventoryActions[0] = "Open";
inventoryActions[1] = null;
}
if (id == 13215) {
ItemDefinition platinumTokenClone = Occluder.getItemDefinition(13204);
price = platinumTokenClone.price;
femaleModel1 = platinumTokenClone.femaleModel1;
femaleOffset = platinumTokenClone.femaleOffset;
inventoryActions = platinumTokenClone.inventoryActions;
model = platinumTokenClone.model;
maleModel = platinumTokenClone.maleModel;
isMembersOnly = platinumTokenClone.isMembersOnly;
name = "Bloody Token";
isStackable = platinumTokenClone.isStackable;
xan2d = platinumTokenClone.xan2d;
yan2d = platinumTokenClone.yan2d;
offsetY2d = platinumTokenClone.offsetY2d;
zoom2d = platinumTokenClone.zoom2d;
offsetX2d = platinumTokenClone.offsetX2d;
zan2d = platinumTokenClone.zan2d;
recolorFrom = new short[]{5813, 9139, 26006};
recolorTo = new short[]{947, 948, 949};
countco = new int[]{2, 3, 4, 5, 0, 0, 0, 0, 0, 0};
countobj = new int[]{13216, 13217, 13218, 13218, 0, 0, 0, 0, 0, 0};
}
if (id == 13216) {
ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3985);
price = platinumTokenClone.price;
femaleModel1 = platinumTokenClone.femaleModel1;
name = "Bloody Token";
femaleOffset = platinumTokenClone.femaleOffset;
inventoryActions = platinumTokenClone.inventoryActions;
model = platinumTokenClone.model;
maleModel = platinumTokenClone.maleModel;
isMembersOnly = platinumTokenClone.isMembersOnly;
isStackable = platinumTokenClone.isStackable;
xan2d = platinumTokenClone.xan2d;
yan2d = platinumTokenClone.yan2d;
offsetY2d = platinumTokenClone.offsetY2d;
zoom2d = platinumTokenClone.zoom2d;
offsetX2d = platinumTokenClone.offsetX2d;
zan2d = platinumTokenClone.zan2d;
recolorFrom = new short[]{5813, 9139, 26006};
recolorTo = new short[]{947, 948, 949};
}
if (id == 13217) {
ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3987);
price = platinumTokenClone.price;
femaleModel1 = platinumTokenClone.femaleModel1;
name = "Bloody Token";
femaleOffset = platinumTokenClone.femaleOffset;
inventoryActions = platinumTokenClone.inventoryActions;
model = platinumTokenClone.model;
maleModel = platinumTokenClone.maleModel;
isMembersOnly = platinumTokenClone.isMembersOnly;
isStackable = platinumTokenClone.isStackable;
xan2d = platinumTokenClone.xan2d;
yan2d = platinumTokenClone.yan2d;
offsetY2d = platinumTokenClone.offsetY2d;
zoom2d = platinumTokenClone.zoom2d;
offsetX2d = platinumTokenClone.offsetX2d;
zan2d = platinumTokenClone.zan2d;
recolorFrom = new short[]{5813, 9139, 26006};
recolorTo = new short[]{947, 948, 949};
}
if (id == 13218) {
ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3989);
price = platinumTokenClone.price;
femaleModel1 = platinumTokenClone.femaleModel1;
femaleOffset = platinumTokenClone.femaleOffset;
name = "Bloody Token";
inventoryActions = platinumTokenClone.inventoryActions;
model = platinumTokenClone.model;
maleModel = platinumTokenClone.maleModel;
isMembersOnly = platinumTokenClone.isMembersOnly;
isStackable = platinumTokenClone.isStackable;
xan2d = platinumTokenClone.xan2d;
yan2d = platinumTokenClone.yan2d;
offsetY2d = platinumTokenClone.offsetY2d;
zoom2d = platinumTokenClone.zoom2d;
offsetX2d = platinumTokenClone.offsetX2d;
zan2d = platinumTokenClone.zan2d;
recolorFrom = new short[]{5813, 9139, 26006};
recolorTo = new short[]{947, 948, 949};
}
if(id == 22330) {
name = "PVP Armour Mystery Box";
inventoryActions[0] = "Open";
inventoryActions[1] = "Gift";
inventoryActions[2] = null;
inventoryActions[3] = null;
}
if (id == 3606 || id == 3608 || id == 7297) {
ItemDefinition bloodyKey = Occluder.getItemDefinition(20526);
switch (id) {
case 3606:
name = "Bloody key (easy)";
break;
case 3608:
name = "Bloody key (medium)";
break;
case 7297:
name = "Bloody key (hard)";
break;
}
model = bloodyKey.model;
xan2d = bloodyKey.xan2d;
offsetY2d = bloodyKey.offsetY2d;
yan2d = bloodyKey.yan2d;
offsetX2d = bloodyKey.offsetX2d;
zoom2d = bloodyKey.zoom2d;
}
if(id == 22521 || id == 22522 || id == 22523 || id == 22524) {
String size = "";
if(id == 22521)
size = "(small)";
else if(id == 22522)
size = "(medium)";
else if(id == 22523)
size = "(large)";
else if(id == 22524)
size = "(giant)";
name = "Blood money pouch " + size;
recolorFrom = new short[]{6798};
recolorTo = new short[]{948};
}
if(id == 2528) {
name = "Skill Lamp";
}
if(id == 11918) {
name = "Santa Outfit Box";
inventoryActions[0] = "Open";
}
if(id == 12897) {
name = "Anti-Santa Outfit Box";
inventoryActions[0] = "Open";
}
if(id == 22816 || id == 22817) {
inventoryActions[4] = "Destroy";
}
if(id == 21227) {
name = "Easter Egg";
inventoryActions[0] = "Open";
}
if (id == 8943 || id == 8944 || id == 8945 || id == 8946 || id == 8947 || id == 8948) {
ItemDefinition bloodyKey = Occluder.getItemDefinition(20526);
switch (id) {
case 8943:
name = "Wilderness key (1M OSRS)";
break;
case 8944:
name = "Wilderness key (5M OSRS)";
break;
case 8945:
name = "Wilderness key (10M OSRS)";
break;
case 8946:
name = "Wilderness key (25M OSRS)";
break;
case 8947:
name = "Wilderness key (50M OSRS)";
break;
case 8948:
name = "Wilderness key (100M OSRS)";
break;
}
inventoryActions[0] = "Information";
inventoryActions[3] = null;
inventoryActions[4] = "Destroy";
model = bloodyKey.model;
xan2d = bloodyKey.xan2d;
offsetY2d = bloodyKey.offsetY2d;
yan2d = bloodyKey.yan2d;
offsetX2d = bloodyKey.offsetX2d;
zoom2d = bloodyKey.zoom2d;
}
}
}
package net.runelite.standalone;
import net.runelite.api.HeadIcon;
import net.runelite.api.events.NpcActionChanged;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSNPCDefinition;
import net.runelite.rs.api.RSSprite;
@ObfuscatedName("il")
public class NPCDefinition extends DualNode implements RSNPCDefinition {
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "Lhp;"
)
public static AbstractArchive NpcDefinition_modelArchive;
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable NpcDefinition_cachedModels;
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable NpcDefinition_cached;
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "Lhp;"
)
public static AbstractArchive NpcDefinition_archive;
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = 1951589919
)
public int walkingAnimation;
@ObfuscatedName("p")
public String name;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = -441203939
)
public int size;
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = 795033679
)
public int id;
@ObfuscatedName("s")
public String[] actions;
@ObfuscatedName("t")
short[] colors;
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = -2041030831
)
public int walkRightSequence;
@ObfuscatedName("x")
short[] retextureFrom;
@ObfuscatedName("y")
int[] additionalModels;
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = 1113665339
)
public int walkBackSequence;
@ObfuscatedName("aa")
@ObfuscatedGetter(
intValue = 950956241
)
public int rotation;
@ObfuscatedName("ab")
@ObfuscatedGetter(
intValue = -313433817
)
int transformVarp;
@ObfuscatedName("ac")
@ObfuscatedGetter(
intValue = 1963706097
)
int ambient;
@ObfuscatedName("al")
@ObfuscatedSignature(
signature = "Llb;"
)
IterableNodeHashTable params;
@ObfuscatedName("ao")
public boolean isFollower;
@ObfuscatedName("ap")
public int[] transforms;
@ObfuscatedName("ar")
@ObfuscatedGetter(
intValue = 1759904707
)
int transformVarbit;
@ObfuscatedName("as")
public boolean isClickable;
@ObfuscatedName("aw")
@ObfuscatedGetter(
intValue = 246799047
)
public int headIconPrayer;
@ObfuscatedName("ax")
public boolean isInteractable;
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = -1785698549
)
int contrast;
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -394985883
)
public int turnRightSequence;
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = -1669190657
)
public int turnLeftSequence;
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 758770497
)
int widthScale;
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = -1204590857
)
public int walkLeftSequence;
@ObfuscatedName("f")
public boolean drawMapDot;
@ObfuscatedName("g")
short[] modifiedColors;
@ObfuscatedName("h")
short[] retextureTo;
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = -182220755
)
public int standingAnimation;
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = 1360683279
)
public int combatLevel;
@ObfuscatedName("k")
public boolean isVisible;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -1757828027
)
int heightScale;
@ObfuscatedName("m")
int[] models;
static {
NpcDefinition_cached = new EvictingDualNodeHashTable(64);
NpcDefinition_cachedModels = new EvictingDualNodeHashTable(50);
}
NPCDefinition() {
this.name = "null";
this.size = 1;
this.standingAnimation = -1;
this.turnLeftSequence = -1;
this.turnRightSequence = -1;
this.walkingAnimation = -1;
this.walkBackSequence = -1;
this.walkLeftSequence = -1;
this.walkRightSequence = -1;
this.actions = new String[5];
this.actionsHook(-1);
this.drawMapDot = true;
this.combatLevel = -1;
this.widthScale = 128;
this.heightScale = 128;
this.isVisible = false;
this.ambient = 0;
this.contrast = 0;
this.headIconPrayer = -1;
this.rotation = 32;
this.transformVarbit = -1;
this.transformVarp = -1;
this.isInteractable = true;
this.isClickable = true;
this.isFollower = false;
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-117"
)
void method4402() {
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(B)Ldw;",
garbageValue = "58"
)
public final ModelData method4406() {
if(this.transforms != null) {
NPCDefinition var1 = this.method4407();
return var1 == null?null:var1.method4406();
} else if(this.additionalModels == null) {
return null;
} else {
boolean var5 = false;
for(int var2 = 0; var2 < this.additionalModels.length; ++var2) {
if(!NpcDefinition_modelArchive.method4024(this.additionalModels[var2], 0)) {
var5 = true;
}
}
if(var5) {
return null;
} else {
ModelData[] var6 = new ModelData[this.additionalModels.length];
for(int var3 = 0; var3 < this.additionalModels.length; ++var3) {
var6[var3] = ModelData.method2823(NpcDefinition_modelArchive, this.additionalModels[var3], 0);
}
ModelData var7;
if(var6.length == 1) {
var7 = var6[0];
} else {
var7 = new ModelData(var6, var6.length);
}
int var4;
if(this.colors != null) {
for(var4 = 0; var4 < this.colors.length; ++var4) {
var7.method2770(this.colors[var4], this.modifiedColors[var4]);
}
}
if(this.retextureFrom != null) {
for(var4 = 0; var4 < this.retextureFrom.length; ++var4) {
var7.method2831(this.retextureFrom[var4], this.retextureTo[var4]);
}
}
return var7;
}
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(I)Lil;",
garbageValue = "1423511184"
)
public final NPCDefinition method4407() {
int var1 = -1;
if(this.transformVarbit != -1) {
var1 = WorldMapSprite.method782(this.transformVarbit);
} else if(this.transformVarp != -1) {
var1 = Varps.Varps_main[this.transformVarp];
}
int var2;
if(var1 >= 0 && var1 < this.transforms.length - 1) {
var2 = this.transforms[var1];
} else {
var2 = this.transforms[this.transforms.length - 1];
}
return var2 != -1?PacketBufferNode.getNpcDefinition(var2):null;
}
@ObfuscatedName("r")
@ObfuscatedSignature(
signature = "(Lix;ILix;IS)Ldh;",
garbageValue = "-1424"
)
public final Model method4405(SequenceDefinition var1, int var2, SequenceDefinition var3, int var4) {
if(this.transforms != null) {
NPCDefinition var12 = this.method4407();
return var12 == null?null:var12.method4405(var1, var2, var3, var4);
} else {
Model var5 = (Model)NpcDefinition_cachedModels.method3032((long)this.id);
if(var5 == null) {
boolean var6 = false;
for(int var7 = 0; var7 < this.models.length; ++var7) {
if(!NpcDefinition_modelArchive.method4024(this.models[var7], 0)) {
var6 = true;
}
}
if(var6) {
return null;
}
ModelData[] var8 = new ModelData[this.models.length];
int var9;
for(var9 = 0; var9 < this.models.length; ++var9) {
var8[var9] = ModelData.method2823(NpcDefinition_modelArchive, this.models[var9], 0);
}
ModelData var11;
if(var8.length == 1) {
var11 = var8[0];
} else {
var11 = new ModelData(var8, var8.length);
}
if(this.colors != null) {
for(var9 = 0; var9 < this.colors.length; ++var9) {
var11.method2770(this.colors[var9], this.modifiedColors[var9]);
}
}
if(this.retextureFrom != null) {
for(var9 = 0; var9 < this.retextureFrom.length; ++var9) {
var11.method2831(this.retextureFrom[var9], this.retextureTo[var9]);
}
}
var5 = var11.method2778(this.ambient + 64, this.contrast + 850, -30, -50, -30);
NpcDefinition_cachedModels.method3034(var5, (long)this.id);
}
Model var10;
if(var1 != null && var3 != null) {
var10 = var1.method4660(var5, var2, var3, var4, (byte)-35);
} else if(var1 != null) {
var10 = var1.method4661(var5, var2, 338377454);
} else if(var3 != null) {
var10 = var3.method4661(var5, var4, 805280683);
} else {
var10 = var5.method2355(true);
}
if(this.widthScale != 128 || this.heightScale != 128) {
var10.method2402(this.widthScale, this.heightScale, this.widthScale);
}
return var10;
}
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lkl;II)V",
garbageValue = "-1943278683"
)
void method4424(Buffer var1, int var2) {
int var3;
int var4;
if(var2 == 1) {
var3 = var1.readUnsignedByte();
this.models = new int[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.models[var4] = var1.readUnsignedShort();
}
} else if(var2 == 2) {
this.name = var1.readString();
} else if(var2 == 12) {
this.size = var1.readUnsignedByte();
} else if(var2 == 13) {
this.standingAnimation = var1.readUnsignedShort();
} else if(var2 == 14) {
this.walkingAnimation = var1.readUnsignedShort();
} else if(var2 == 15) {
this.turnLeftSequence = var1.readUnsignedShort();
} else if(var2 == 16) {
this.turnRightSequence = var1.readUnsignedShort();
} else if(var2 == 17) {
this.walkingAnimation = var1.readUnsignedShort();
this.walkBackSequence = var1.readUnsignedShort();
this.walkLeftSequence = var1.readUnsignedShort();
this.walkRightSequence = var1.readUnsignedShort();
} else if(var2 == 18) {
var1.readUnsignedShort();
} else if(var2 >= 30 && var2 < 35) {
this.actions[var2 - 30] = var1.readString();
this.actionsHook(var2 - 30);
if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) {
this.actions[var2 - 30] = null;
this.actionsHook(var2 - 30);
}
} else if(var2 == 40) {
var3 = var1.readUnsignedByte();
this.colors = new short[var3];
this.modifiedColors = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.colors[var4] = (short)var1.readUnsignedShort();
this.modifiedColors[var4] = (short)var1.readUnsignedShort();
}
} else if(var2 == 41) {
var3 = var1.readUnsignedByte();
this.retextureFrom = new short[var3];
this.retextureTo = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.retextureFrom[var4] = (short)var1.readUnsignedShort();
this.retextureTo[var4] = (short)var1.readUnsignedShort();
}
} else if(var2 == 60) {
var3 = var1.readUnsignedByte();
this.additionalModels = new int[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.additionalModels[var4] = var1.readUnsignedShort();
}
} else if(var2 == 93) {
this.drawMapDot = false;
} else if(var2 == 95) {
this.combatLevel = var1.readUnsignedShort();
} else if(var2 == 97) {
this.widthScale = var1.readUnsignedShort();
} else if(var2 == 98) {
this.heightScale = var1.readUnsignedShort();
} else if(var2 == 99) {
this.isVisible = true;
} else if(var2 == 100) {
this.ambient = var1.readByte();
} else if(var2 == 101) {
this.contrast = var1.readByte() * 5;
} else if(var2 == 102) {
this.headIconPrayer = var1.readUnsignedShort();
} else if(var2 == 103) {
this.rotation = var1.readUnsignedShort();
} else if(var2 != 106 && var2 != 118) {
if(var2 == 107) {
this.isInteractable = false;
} else if(var2 == 109) {
this.isClickable = false;
} else if(var2 == 111) {
this.isFollower = true;
} else if(var2 == 249) {
this.params = UserComparator5.method3374(var1, this.params);
}
} else {
this.transformVarbit = var1.readUnsignedShort();
if(this.transformVarbit == 65535) {
this.transformVarbit = -1;
}
this.transformVarp = var1.readUnsignedShort();
if(this.transformVarp == 65535) {
this.transformVarp = -1;
}
var3 = -1;
if(var2 == 118) {
var3 = var1.readUnsignedShort();
if(var3 == 65535) {
var3 = -1;
}
}
var4 = var1.readUnsignedByte();
this.transforms = new int[var4 + 2];
for(int var5 = 0; var5 <= var4; ++var5) {
this.transforms[var5] = var1.readUnsignedShort();
if(this.transforms[var5] == 65535) {
this.transforms[var5] = -1;
}
}
this.transforms[var4 + 1] = var3;
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(Lkl;B)V",
garbageValue = "-41"
)
void method4429(Buffer var1) {
while(true) {
int var2 = var1.readUnsignedByte();
if(var2 == 0) {
return;
}
this.method4424(var1, var2);
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(III)I",
garbageValue = "-1804168798"
)
public int method4409(int var1, int var2) {
return HealthBar.getParam(this.params, var1, var2);
}
public int getRsOverheadIcon() {
return this.headIconPrayer;
}
public void actionsHook(int var1) {
NpcActionChanged var2 = new NpcActionChanged();
var2.setNpcDefinition(this);
var2.setIdx(var1);
ViewportMouse.client.getCallbacks().post(NpcActionChanged.class, var2);
}
public HeadIcon getOverheadIcon() {
switch(this.getRsOverheadIcon()) {
case 0:
return HeadIcon.MELEE;
case 1:
return HeadIcon.RANGED;
case 2:
return HeadIcon.MAGIC;
case 3:
case 4:
case 5:
default:
return null;
case 6:
return HeadIcon.RANGE_MAGE;
}
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public int getSize() {
return this.size;
}
public int[] getModels() {
return this.models;
}
public String[] getActions() {
return this.actions;
}
public boolean isMinimapVisible() {
return this.drawMapDot;
}
public int getCombatLevel() {
return this.combatLevel;
}
public boolean isVisible() {
return this.isVisible;
}
public int[] getConfigs() {
return this.transforms;
}
public boolean isClickable() {
return this.isClickable;
}
public RSNPCDefinition transform() {
return this.method4407();
}
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;I)Ljava/lang/String;",
garbageValue = "-1270482233"
)
public String method4410(int var1, String var2) {
return class94.method2216(this.params, var1, var2);
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(B)Z",
garbageValue = "-43"
)
public boolean method4408() {
if(this.transforms == null) {
return true;
} else {
int var1 = -1;
if(this.transformVarbit != -1) {
var1 = WorldMapSprite.method782(this.transformVarbit);
} else if(this.transformVarp != -1) {
var1 = Varps.Varps_main[this.transformVarp];
}
return var1 >= 0 && var1 < this.transforms.length?this.transforms[var1] != -1:this.transforms[this.transforms.length - 1] != -1;
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(Lhp;III)Llf;"
)
public static Sprite method4417(AbstractArchive var0, int var1, int var2, int var3) {
net.runelite.api.Sprite var4 = (net.runelite.api.Sprite)Client.spriteOverrides.get(Integer.valueOf(var1));
return var4 != null?(Sprite)((RSSprite)var4):(Sprite)Client.copy$SpriteBuffer_getSprite(var0, var1, var2, var3);
}
@ObfuscatedName("gr")
@ObfuscatedSignature(
signature = "(IIIIIIII)V",
garbageValue = "474931921"
)
static final void method4403(int var0, int var1, int var2, int var3, int var4, int var5, int var6) {
int var8 = var6 - 334;
if(var8 < 0) {
var8 = 0;
} else if(var8 > 100) {
var8 = 100;
}
int var9 = (Client.zoomWidth - Client.zoomHeight) * var8 / 100 + Client.zoomHeight;
int var7 = var5 * var9 / 256;
var8 = 2048 - var3 & 2047;
var9 = 2048 - var4 & 2047;
int var10 = 0;
int var11 = 0;
int var12 = var7;
int var13;
int var14;
int var15;
if(var8 != 0) {
var13 = Rasterizer3D.Rasterizer3D_sine[var8];
var14 = Rasterizer3D.Rasterizer3D_cosine[var8];
var15 = var11 * var14 - var7 * var13 >> 16;
var12 = var14 * var7 + var13 * var11 >> 16;
var11 = var15;
}
if(var9 != 0) {
var13 = Rasterizer3D.Rasterizer3D_sine[var9];
var14 = Rasterizer3D.Rasterizer3D_cosine[var9];
var15 = var10 * var14 + var13 * var12 >> 16;
var12 = var12 * var14 - var10 * var13 >> 16;
var10 = var15;
}
GrandExchangeOfferOwnWorldComparator.cameraX = var0 - var10;
Varcs.cameraY = var1 - var11;
WorldMapIcon_1.cameraZ = var2 - var12;
IgnoreList.cameraPitch = var3;
Client.onCameraPitchChanged(-1);
WorldMapSection2.cameraYaw = var4;
if(Client.oculusOrbState == 1 && Client.staffModLevel >= 2 && Client.cycle % 50 == 0 && (ObjectSound.oculusOrbFocalPointX >> 7 != class215.localPlayer.x >> 7 || class125.oculusOrbFocalPointY >> 7 != class215.localPlayer.y * 682054857 >> 7)) {
var13 = class215.localPlayer.plane;
var14 = (ObjectSound.oculusOrbFocalPointX >> 7) + class215.baseX;
var15 = (class125.oculusOrbFocalPointY >> 7) + class304.baseY;
class298.method5476(var14, var15, var13, true);
}
}
void postDecode() {
if (id == 5527) {
/* Twiggy O'Korn */
actions[2] = "Rewards";
} else if (id == 315) {
actions[0] = "Talk-to";
actions[1] = "Set-skull";
actions[2] = "Reset-kdr";
actions[3] = null;
actions[4] = null;
} else if(id == 5567) {
name = "Blood Money Shop";
actions[0] = "Melee";
actions[1] = "Magic";
actions[2] = "Ranged";
} else if (id == 1815) {
name = "Vote Manager";
actions[0] = "Trade";
actions[2] = "Cast-votes";
actions[3] = "Claim-votes";
actions[4] = "Lottery-info";
} else if (id == 2108) {
name = "Credit Manager";
actions[0] = "Open-Shop";
actions[2] = "Claim-purchases";
} else if (id == 306) {
name = CustomMain.worldType.getName() + " Expert";
actions[0] = "Talk-to";
actions[2] = "View-help";
actions[3] = "View-guide";
actions[4] = "Task-rewards";
} else if (id == 5442) {
name = "Security Advisor";
actions[2] = "Check Pin Settings";
actions[3] = "Check 2FA Settings";
} else if (id == 535) {
/* Horvik */
actions[0] = "Repair-items";
actions[2] = "Upgrade-items";
} else if (id == 3894) {
/* Sigmund the Merchant */
actions[0] = "Buy-items";
actions[2] = "Sell-items";
actions[3] = "Sets";
actions[4] = null;
} else if (id == 2883) {
/* Donator Range Shop */
name = "Donator Range Shop";
actions[0] = "Trade";
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if (id == 5523) {
/* Gambling man */
name = CustomMain.worldType.getName() + " Gambler";
actions[0] = null;
actions[2] = "Trade";
} else if (id == 4398) {
/* ECO Wizard */
name = CustomMain.worldType.getName() + " Wizard";
actions[0] = "Teleport";
actions[2] = "Teleport-previous";
} else if (id == 4159) {
/* PVP Wizard */
name = CustomMain.worldType.getName() + " Wizard";
actions[0] = "Teleport";
actions[2] = "Teleport-previous";
} else if (id == 2462) {
/* Shanomi */
actions[2] = "Trade";
} else if (id == 3343) {
name = CustomMain.worldType.getName() + " Nurse";
} else if (id == 1603) {
/* Kolodion */
name = "Battle Point Exchange";
actions[2] = "Trade";
actions[3] = "Check-points";
} else if (id == 3278) {
name = "Construction Worker";
} else if(id == 3189) {
name = "Trade Manager";
actions[0] = null;
actions[1] = "Exchange";
actions[2] = "Coffer";
actions[3] = "Guide";
} else if (id == 1307) {
actions[0] = "Change-looks";
actions[2] = "Skin-unlocks";
actions[3] = "Title-unlocks";
actions[4] = null;
} else if (id == 4225) {
name = "Shop";
actions[0] = "Untradeable";
} else if (id == 1199) {
name = "Shop";
actions[0] = "Consumable";
} else if (id == 5081) {
name = "Shop";
actions[0] = "Magic";
} else if (id == 2153) {
name = "Shop";
actions[0] = "Melee";
} else if (id == 4579) {
name = "Shop";
actions[0] = "Misc";
} else if (id == 2668) {
name = "Max hit dummy";
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if (id == 6118) {
name = "Elvarg";
combatLevel = 280;
} else if (id == 3358) {
name = "Ket'ian";
combatLevel = 420;
widthScale *= 2;
heightScale *= 2;
size = 2;
} else if (id == 3329) {
name = "Sapphires Champion";
combatLevel = 600;
widthScale *= 2;
heightScale *= 2;
size = 2;
} else if (id == 5906) {
actions[2] = null;
} else if ("Pick-up".equals(actions[0]) && "Talk-to".equals(actions[2]) && "Chase".equals(actions[3]) && "Interact".equals(actions[4])) {
actions[3] = "Age";
actions[4] = null;
} else if (id == 1849) {
name = "Loyalty Fairy";
actions[0] = "About";
} else if (id == 7759) {
actions[0] = actions[2] = null;
} else if (id == 7316) {
name = "Tournament Manager";
actions[0] = "Sign-up";
actions[1] = "Rewards";
} else if (id == 7941) {
actions[2] = actions[3] = actions[4] = null;
} else if (id == 3080) { // man at home. remove attack option so people can't be assholes to newbies that are just starting out
actions[1] = null;
combatLevel = 0;
} else if (id == 307) { // second guide npc (with no options); originally dr jekyll
name = CustomMain.worldType.getName() + " Expert";
actions[0] = null;
actions[4] = null;
models = new int[]{214, 250, 5674, 5668, 5672, 7127, 7123};
additionalModels = new int[]{52, 82};
colors = new short[]{6466, 5541, 6457, 8844, 6798};
modifiedColors = new short[]{127, -24254, 127, 6478, -11139};
standingAnimation = 813;
walkingAnimation = 1205;
} else if(id == 311) {
name = "Ironman";
actions[1] = "Open-shop";
actions[2] = null;
} else if(id == 7951) {
name = "PvP Event Manager";
actions[0] = "Join-event";
actions[1] = "Create-event";
} else if(id == 8009) {
actions[3] = "Metamorphosis";
} else if(id == 8507) {
name = "Bloody Merchant";
actions[0] = "Trade";
} else if(id == 7297) { // Skotizo (For eco world)
// Replaces Mistag
copy(7286);
} else if(id == 8407) {
actions[1] = "View Trading Post";
} else if(id == 6002) {
name = CustomMain.worldType.getName() + " Caretaker";
actions[0] = "Trade";
} else if(id == 8500) {
name = "Old man";
actions[1] = "Trade";
} else if (id == 7411) {
name = "Exodia the Forbidden one";
} else if(id == 7412) { //Nechryarch Melee
copy(7411);
headIconPrayer = 0;
name = "Exodia the Forbidden one";
} else if(id == 7414) { //Nechryarch Range
copy(7411);
headIconPrayer = 1;
name = "Exodia the Forbidden one";
} else if(id == 7415) { //Nechryarch Mage
copy(7411);
headIconPrayer = 2;
name = "Exodia the Forbidden one";
} else if(id == 8300) { //Ranalph Devere Melee
copy(3966);
headIconPrayer = 0;
} else if(id == 8301) { //Ranalph Devere Range
copy(3966);
headIconPrayer = 1;
} else if(id == 8302) { //Ranalph Devere Mage
copy(3966);
headIconPrayer = 2;
} else if (id == 7317) {
actions[3] = "Trade";
}
}
void copy(int otherId) {
NPCDefinition otherDef = PacketBufferNode.getNpcDefinition(otherId);
drawMapDot = otherDef.drawMapDot;
standingAnimation = otherDef.standingAnimation;
size = otherDef.size;
walkBackSequence = otherDef.walkBackSequence;
name = otherDef.name;
turnLeftSequence = otherDef.turnLeftSequence;
turnRightSequence = otherDef.turnRightSequence;
walkingAnimation = otherDef.walkingAnimation;
walkRightSequence = otherDef.walkRightSequence;
walkLeftSequence = otherDef.walkLeftSequence;
isFollower = otherDef.isFollower;
actions = otherDef.actions == null ? null : otherDef.actions.clone();
combatLevel = otherDef.combatLevel;
isVisible = otherDef.isVisible;
headIconPrayer = otherDef.headIconPrayer;
rotation = otherDef.rotation;
transforms = otherDef.transforms == null ? null : otherDef.transforms.clone();
isClickable = otherDef.isClickable;
isInteractable = otherDef.isInteractable;
retextureFrom = otherDef.retextureFrom == null ? null : otherDef.retextureFrom.clone();
retextureTo = otherDef.retextureTo == null ? null : otherDef.retextureTo.clone();
transformVarp = otherDef.transformVarp;
models = otherDef.models;
colors = otherDef.colors == null ? null : otherDef.colors.clone();
additionalModels = otherDef.additionalModels == null ? null : otherDef.additionalModels.clone();
transformVarbit = otherDef.transformVarbit;
modifiedColors = otherDef.modifiedColors == null ? null : otherDef.modifiedColors.clone();
widthScale = otherDef.widthScale;
heightScale = otherDef.heightScale;
ambient = otherDef.ambient;
contrast = otherDef.contrast;
}
}
package net.runelite.standalone;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSObjectDefinition;
@ObfuscatedName("iz")
public class ObjectDefinition extends DualNode implements RSObjectDefinition {
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "Lhp;"
)
public static AbstractArchive ObjectDefinition_archive;
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable ObjectDefinition_cachedEntities;
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable ObjectDefinition_cachedModels;
@ObfuscatedName("r")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable ObjectDefinition_cachedModelData;
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Lem;"
)
public static EvictingDualNodeHashTable ObjectDefinition_cached;
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "Lhp;"
)
public static AbstractArchive ObjectDefinition_modelsArchive;
@ObfuscatedName("z")
public static boolean ObjectDefinition_isLowDetail;
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "[Ldw;"
)
static ModelData[] field3461;
@ObfuscatedName("o")
short[] recolorFrom;
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 2069443219
)
public int int1;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = -1768434003
)
public int sizeX;
@ObfuscatedName("w")
short[] retextureTo;
@ObfuscatedName("x")
@ObfuscatedGetter(
intValue = 887491837
)
public int interactType;
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -10424721
)
public int id;
@ObfuscatedName("a")
short[] recolorTo;
@ObfuscatedName("aa")
@ObfuscatedGetter(
intValue = 2127089139
)
public int mapIconId;
@ObfuscatedName("ab")
public boolean clipped;
@ObfuscatedName("ac")
@ObfuscatedGetter(
intValue = -1443717983
)
int ambient;
@ObfuscatedName("ad")
@ObfuscatedGetter(
intValue = 1528184415
)
int offsetHeight;
@ObfuscatedName("ae")
@ObfuscatedGetter(
intValue = -702042991
)
int transformVarbit;
@ObfuscatedName("af")
@ObfuscatedSignature(
signature = "Llb;"
)
IterableNodeHashTable params;
@ObfuscatedName("ag")
@ObfuscatedGetter(
intValue = -423945127
)
public int int4;
@ObfuscatedName("ah")
@ObfuscatedGetter(
intValue = -214798847
)
public int ambientSoundId;
@ObfuscatedName("ai")
public boolean boolean2;
@ObfuscatedName("aj")
@ObfuscatedGetter(
intValue = -1044165733
)
public int int5;
@ObfuscatedName("ak")
boolean isSolid;
@ObfuscatedName("al")
@ObfuscatedGetter(
intValue = 771948197
)
int offsetX;
@ObfuscatedName("am")
public int[] transforms;
@ObfuscatedName("an")
@ObfuscatedGetter(
intValue = 1216184101
)
int offsetY;
@ObfuscatedName("ao")
@ObfuscatedGetter(
intValue = 1741322051
)
int modelSizeY;
@ObfuscatedName("ap")
@ObfuscatedGetter(
intValue = 468378425
)
public int mapSceneId;
@ObfuscatedName("aq")
@ObfuscatedGetter(
intValue = 1194600097
)
public int int3;
@ObfuscatedName("ar")
boolean isRotated;
@ObfuscatedName("as")
@ObfuscatedGetter(
intValue = -570144093
)
int modelHeight;
@ObfuscatedName("au")
public int[] soundEffectIds;
@ObfuscatedName("av")
@ObfuscatedGetter(
intValue = 884373055
)
int transformVarp;
@ObfuscatedName("aw")
public String[] actions;
@ObfuscatedName("ax")
@ObfuscatedGetter(
intValue = -1167602213
)
int modelSizeX;
@ObfuscatedName("ay")
@ObfuscatedGetter(
intValue = -1994867697
)
public int int6;
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = -308737111
)
int contrast;
@ObfuscatedName("b")
public String name;
@ObfuscatedName("c")
int[] models;
@ObfuscatedName("d")
public boolean modelClipped;
@ObfuscatedName("e")
short[] retextureFrom;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 1385916293
)
int clipType;
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = -1471425107
)
public int sizeY;
@ObfuscatedName("h")
public boolean boolean1;
@ObfuscatedName("i")
int[] modelIds;
@ObfuscatedName("j")
boolean nonFlatShading;
@ObfuscatedName("k")
@ObfuscatedGetter(
intValue = 1255987799
)
public int int2;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -1077296785
)
public int animationId;
static {
ObjectDefinition_isLowDetail = false;
ObjectDefinition_cached = new EvictingDualNodeHashTable(4096);
ObjectDefinition_cachedModelData = new EvictingDualNodeHashTable(500);
ObjectDefinition_cachedEntities = new EvictingDualNodeHashTable(30);
ObjectDefinition_cachedModels = new EvictingDualNodeHashTable(30);
field3461 = new ModelData[4];
}
ObjectDefinition() {
this.name = "null";
this.sizeX = 1;
this.sizeY = 1;
this.interactType = 2;
this.boolean1 = true;
this.int1 = -1;
this.clipType = -1;
this.nonFlatShading = false;
this.modelClipped = false;
this.animationId = -1;
this.int2 = 16;
this.ambient = 0;
this.contrast = 0;
this.actions = new String[5];
this.mapIconId = -1;
this.mapSceneId = -1;
this.isRotated = false;
this.clipped = true;
this.modelSizeX = 128;
this.modelHeight = 128;
this.modelSizeY = 128;
this.offsetX = 0;
this.offsetHeight = 0;
this.offsetY = 0;
this.boolean2 = false;
this.isSolid = false;
this.int3 = -1;
this.transformVarbit = -1;
this.transformVarp = -1;
this.ambientSoundId = -1;
this.int4 = 0;
this.int5 = 0;
this.int6 = 0;
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "52"
)
void method4728() {
if(this.int1 == -1) {
this.int1 = 0;
if(this.modelIds != null && (this.models == null || this.models[0] == 10)) {
this.int1 = 1;
}
for(int var1 = 0; var1 < 5; ++var1) {
if(this.actions[var1] != null) {
this.int1 = 1;
}
}
}
if(this.int3 == -1) {
this.int3 = this.interactType != 0?1:0;
}
}
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;B)Ljava/lang/String;",
garbageValue = "-65"
)
public String method4748(int var1, String var2) {
return class94.method2216(this.params, var1, var2);
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "1580173918"
)
public final boolean method4721() {
if(this.modelIds == null) {
return true;
} else {
boolean var1 = true;
for(int var2 = 0; var2 < this.modelIds.length; ++var2) {
var1 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var2] & 65535, 0);
}
return var1;
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(II[[IIIIB)Ler;",
garbageValue = "-50"
)
public final Entity method4755(int var1, int var2, int[][] var3, int var4, int var5, int var6) {
long var7;
if(this.models == null) {
var7 = (long)(var2 + (this.id << 10));
} else {
var7 = (long)(var2 + (var1 << 3) + (this.id << 10));
}
Object var9 = (Entity)ObjectDefinition_cachedEntities.method3032(var7);
if(var9 == null) {
ModelData var10 = this.method4719(var1, var2);
if(var10 == null) {
return null;
}
if(!this.nonFlatShading) {
var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
} else {
var10.ambient = (short)(this.ambient + 64);
var10.contrast = (short)(this.contrast + 768);
var10.method2774();
var9 = var10;
}
ObjectDefinition_cachedEntities.method3034((DualNode)var9, var7);
}
if(this.nonFlatShading) {
var9 = ((ModelData)var9).method2762();
}
if(this.clipType >= 0) {
if(var9 instanceof Model) {
var9 = ((Model)var9).method2354(var3, var4, var5, var6, true, this.clipType);
} else if(var9 instanceof ModelData) {
var9 = ((ModelData)var9).method2763(var3, var4, var5, var6, true, this.clipType);
}
}
return (Entity)var9;
}
@ObfuscatedName("r")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "1830976839"
)
public final boolean method4738(int var1) {
if(this.models != null) {
for(int var4 = 0; var4 < this.models.length; ++var4) {
if(this.models[var4] == var1) {
return ObjectDefinition_modelsArchive.method4024(this.modelIds[var4] & 65535, 0);
}
}
return true;
} else if(this.modelIds == null) {
return true;
} else if(var1 != 10) {
return true;
} else {
boolean var2 = true;
for(int var3 = 0; var3 < this.modelIds.length; ++var3) {
var2 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var3] & 65535, 0);
}
return var2;
}
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lkl;II)V",
garbageValue = "-912301650"
)
void method4716(Buffer var1, int var2) {
int var3;
int var4;
if(var2 == 1) {
var3 = var1.readUnsignedByte();
if(var3 > 0) {
if(this.modelIds != null && !ObjectDefinition_isLowDetail) {
var1.offset += 3 * var3;
} else {
this.models = new int[var3];
this.modelIds = new int[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.modelIds[var4] = var1.readUnsignedShort();
this.models[var4] = var1.readUnsignedByte();
}
}
}
} else if(var2 == 2) {
this.name = var1.readString();
} else if(var2 == 5) {
var3 = var1.readUnsignedByte();
if(var3 > 0) {
if(this.modelIds != null && !ObjectDefinition_isLowDetail) {
var1.offset += var3 * 2;
} else {
this.models = null;
this.modelIds = new int[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.modelIds[var4] = var1.readUnsignedShort();
}
}
}
} else if(var2 == 14) {
this.sizeX = var1.readUnsignedByte();
} else if(var2 == 15) {
this.sizeY = var1.readUnsignedByte();
} else if(var2 == 17) {
this.interactType = 0;
this.boolean1 = false;
} else if(var2 == 18) {
this.boolean1 = false;
} else if(var2 == 19) {
this.int1 = var1.readUnsignedByte();
} else if(var2 == 21) {
this.clipType = 0;
} else if(var2 == 22) {
this.nonFlatShading = true;
} else if(var2 == 23) {
this.modelClipped = true;
} else if(var2 == 24) {
this.animationId = var1.readUnsignedShort();
if(this.animationId == 65535) {
this.animationId = -1;
}
} else if(var2 == 27) {
this.interactType = 1;
} else if(var2 == 28) {
this.int2 = var1.readUnsignedByte();
} else if(var2 == 29) {
this.ambient = var1.readByte();
} else if(var2 == 39) {
this.contrast = var1.readByte() * 25;
} else if(var2 >= 30 && var2 < 35) {
this.actions[var2 - 30] = var1.readString();
if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) {
this.actions[var2 - 30] = null;
}
} else if(var2 == 40) {
var3 = var1.readUnsignedByte();
this.recolorFrom = new short[var3];
this.recolorTo = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.recolorFrom[var4] = (short)var1.readUnsignedShort();
this.recolorTo[var4] = (short)var1.readUnsignedShort();
}
} else if(var2 == 41) {
var3 = var1.readUnsignedByte();
this.retextureFrom = new short[var3];
this.retextureTo = new short[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.retextureFrom[var4] = (short)var1.readUnsignedShort();
this.retextureTo[var4] = (short)var1.readUnsignedShort();
}
} else if (var2 == 61) {
var1.readUnsignedShort();
} else if(var2 == 62) {
this.isRotated = true;
} else if(var2 == 64) {
this.clipped = false;
} else if(var2 == 65) {
this.modelSizeX = var1.readUnsignedShort();
} else if(var2 == 66) {
this.modelHeight = var1.readUnsignedShort();
} else if(var2 == 67) {
this.modelSizeY = var1.readUnsignedShort();
} else if(var2 == 68) {
this.mapSceneId = var1.readUnsignedShort();
} else if(var2 == 69) {
var1.readUnsignedByte();
} else if(var2 == 70) {
this.offsetX = var1.g2s();
} else if(var2 == 71) {
this.offsetHeight = var1.g2s();
} else if(var2 == 72) {
this.offsetY = var1.g2s();
} else if(var2 == 73) {
this.boolean2 = true;
} else if(var2 == 74) {
this.isSolid = true;
} else if(var2 == 75) {
this.int3 = var1.readUnsignedByte();
} else if(var2 != 77 && var2 != 92) {
if(var2 == 78) {
this.ambientSoundId = var1.readUnsignedShort();
this.int4 = var1.readUnsignedByte();
} else if(var2 == 79) {
this.int5 = var1.readUnsignedShort();
this.int6 = var1.readUnsignedShort();
this.int4 = var1.readUnsignedByte();
var3 = var1.readUnsignedByte();
this.soundEffectIds = new int[var3];
for(var4 = 0; var4 < var3; ++var4) {
this.soundEffectIds[var4] = var1.readUnsignedShort();
}
} else if(var2 == 81) {
this.clipType = var1.readUnsignedByte() * 256;
} else if(var2 == 82) {
this.mapIconId = var1.readUnsignedShort();
} else if (var2 == 89) {
var1.readUnsignedShort();
} else if(var2 == 249) {
this.params = UserComparator5.method3374(var1, this.params);
}
} else {
this.transformVarbit = var1.readUnsignedShort();
if(this.transformVarbit == 65535) {
this.transformVarbit = -1;
}
this.transformVarp = var1.readUnsignedShort();
if(this.transformVarp == 65535) {
this.transformVarp = -1;
}
var3 = -1;
if(var2 == 92) {
var3 = var1.readUnsignedShort();
if(var3 == 65535) {
var3 = -1;
}
}
var4 = var1.readUnsignedByte();
this.transforms = new int[var4 + 2];
for(int var5 = 0; var5 <= var4; ++var5) {
this.transforms[var5] = var1.readUnsignedShort();
if(this.transforms[var5] == 65535) {
this.transforms[var5] = -1;
}
}
this.transforms[var4 + 1] = var3;
}
}
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(Lkl;B)V",
garbageValue = "76"
)
void method4717(Buffer var1) {
while(true) {
int var2 = var1.readUnsignedByte();
if(var2 == 0) {
return;
}
this.method4716(var1, var2);
}
}
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(II[[IIIILix;II)Ldh;",
garbageValue = "680709040"
)
public final Model method4723(int var1, int var2, int[][] var3, int var4, int var5, int var6, SequenceDefinition var7, int var8) {
long var9;
if(this.models == null) {
var9 = (long)(var2 + (this.id << 10));
} else {
var9 = (long)(var2 + (var1 << 3) + (this.id << 10));
}
Model var11 = (Model)ObjectDefinition_cachedModels.method3032(var9);
if(var11 == null) {
ModelData var12 = this.method4719(var1, var2);
if(var12 == null) {
return null;
}
var11 = var12.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
ObjectDefinition_cachedModels.method3034(var11, var9);
}
if(var7 == null && this.clipType == -1) {
return var11;
} else {
if(var7 != null) {
var11 = var7.method4662(var11, var8, var2, (byte)2);
} else {
var11 = var11.method2355(true);
}
if(this.clipType >= 0) {
var11 = var11.method2354(var3, var4, var5, var6, false, this.clipType);
}
return var11;
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "1401395643"
)
public boolean method4727() {
if(this.transforms == null) {
return this.ambientSoundId != -1 || this.soundEffectIds != null;
} else {
for(int var1 = 0; var1 < this.transforms.length; ++var1) {
if(this.transforms[var1] != -1) {
ObjectDefinition var2 = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(this.transforms[var1]);
if(var2.ambientSoundId != -1 || var2.soundEffectIds != null) {
return true;
}
}
}
return false;
}
}
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(IIB)I",
garbageValue = "79"
)
public int method4725(int var1, int var2) {
return HealthBar.getParam(this.params, var1, var2);
}
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "(B)Liz;",
garbageValue = "16"
)
public final ObjectDefinition method4733() {
int var1 = -1;
if(this.transformVarbit != -1) {
var1 = WorldMapSprite.method782(this.transformVarbit);
} else if(this.transformVarp != -1) {
var1 = Varps.Varps_main[this.transformVarp];
}
int var2;
if(var1 >= 0 && var1 < this.transforms.length - 1) {
var2 = this.transforms[var1];
} else {
var2 = this.transforms[this.transforms.length - 1];
}
return var2 != -1?GrandExchangeOfferOwnWorldComparator.getObjectDefinition(var2):null;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public String[] getActions() {
return this.actions;
}
public int getMapIconId() {
return this.mapIconId;
}
public int getMapSceneId() {
return this.mapSceneId;
}
public int[] getImpostorIds() {
return this.transforms;
}
public RSObjectDefinition getImpostor() {
return this.method4733();
}
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(III)Ldw;",
garbageValue = "-819701179"
)
final ModelData method4719(int var1, int var2) {
ModelData var3 = null;
boolean var4;
int var5;
int var7;
if(this.models == null) {
if(var1 != 10) {
return null;
}
if(this.modelIds == null) {
return null;
}
var4 = this.isRotated;
if(var1 == 2 && var2 > 3) {
var4 = !var4;
}
var5 = this.modelIds.length;
for(int var6 = 0; var6 < var5; ++var6) {
var7 = this.modelIds[var6];
if(var4) {
var7 += 65536;
}
var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var7);
if(var3 == null) {
var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var7 & 65535, 0);
if(var3 == null) {
return null;
}
if(var4) {
var3.method2772();
}
ObjectDefinition_cachedModelData.method3034(var3, (long)var7);
}
if(var5 > 1) {
field3461[var6] = var3;
}
}
if(var5 > 1) {
var3 = new ModelData(field3461, var5);
}
} else {
int var9 = -1;
for(var5 = 0; var5 < this.models.length; ++var5) {
if(this.models[var5] == var1) {
var9 = var5;
break;
}
}
if(var9 == -1) {
return null;
}
var5 = this.modelIds[var9];
boolean var10 = this.isRotated ^ var2 > 3;
if(var10) {
var5 += 65536;
}
var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var5);
if(var3 == null) {
var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var5 & 65535, 0);
if(var3 == null) {
return null;
}
if(var10) {
var3.method2772();
}
ObjectDefinition_cachedModelData.method3034(var3, (long)var5);
}
}
if(this.modelSizeX == 128 && this.modelHeight == 128 && this.modelSizeY == 128) {
var4 = false;
} else {
var4 = true;
}
boolean var11;
if(this.offsetX == 0 && this.offsetHeight == 0 && this.offsetY == 0) {
var11 = false;
} else {
var11 = true;
}
ModelData var8 = new ModelData(var3, var2 == 0 && !var4 && !var11, this.recolorFrom == null, null == this.retextureFrom, true);
if(var1 == 4 && var2 > 3) {
var8.method2765(256);
var8.method2784(45, 0, -45);
}
var2 &= 3;
if(var2 == 1) {
var8.method2833();
} else if(var2 == 2) {
var8.method2759();
} else if(var2 == 3) {
var8.method2798();
}
if(this.recolorFrom != null) {
for(var7 = 0; var7 < this.recolorFrom.length; ++var7) {
var8.method2770(this.recolorFrom[var7], this.recolorTo[var7]);
}
}
if(this.retextureFrom != null) {
for(var7 = 0; var7 < this.retextureFrom.length; ++var7) {
var8.method2831(this.retextureFrom[var7], this.retextureTo[var7]);
}
}
if(var4) {
var8.method2773(this.modelSizeX, this.modelHeight, this.modelSizeY);
}
if(var11) {
var8.method2784(this.offsetX, this.offsetHeight, this.offsetY);
}
return var8;
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(II[[IIIII)Ldh;",
garbageValue = "-2129252392"
)
public final Model method4722(int var1, int var2, int[][] var3, int var4, int var5, int var6) {
long var7;
if(this.models == null) {
var7 = (long)(var2 + (this.id << 10));
} else {
var7 = (long)(var2 + (var1 << 3) + (this.id << 10));
}
Model var9 = (Model)ObjectDefinition_cachedModels.method3032(var7);
if(var9 == null) {
ModelData var10 = this.method4719(var1, var2);
if(var10 == null) {
return null;
}
var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
ObjectDefinition_cachedModels.method3034(var9, var7);
}
if(this.clipType >= 0) {
var9 = var9.method2354(var3, var4, var5, var6, true, this.clipType);
}
return var9;
}
void postDecode() {
if (id == 10060) {
name = "Trading Post";
actions[0] = "Open";
actions[1] = "Coffer";
actions[2] = "Guide";
} else if(id == 1534) {
/* home room curtains */
actions[0] = null;
} else if(id == 18258) {
/* custom altar */
actions[0] = "Pray-at";
actions[1] = "Spellbook";
} else if(id == 11833) {
actions[1] = "Practice";
} else if(id == 32758) {
name = "Loyalty Chest";
actions[0] = "Loot";
actions[1] = "About";
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if(id == 3192) {
name = "PvP Leaderboard";
actions[0] = "Edge PKing";
actions[1] = "Deep Wild PKing";
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if(id == 32759) {
name = "Loyalty Chest";
actions[0] = null;
actions[1] = null;
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if(id == 31379) { //is this obj ever used?????????
name = "Donation table";
int1 = 1;
sizeX = sizeY = 2;
boolean2 = false;
int3 = 1;
transforms = null;
modelIds = new int[]{32153};
transformVarbit = -1;
} else if(id == 25203) { // decapitated elvarg corpse
actions[0] = "Loot";
} else if(id == 29226) {
name = "Pet list";
actions[4] = null;
} else if(id == 6045) {
actions[0] = "Dump-ore";
} else if(id == 3581) {
name = "Ticket exchange";
actions[0] = "Use";
} else if(id == 11508 || id == 11509) {
//curtain
clipType = 0;
} else if (id == 31618) { // home portal
name = "World Portal";
actions[0] = "Teleport";
actions[1] = "Teleport-previous";
} else if(id == 31380) {
//uhh i hope 31380 isn't ever used
name = "Rejuvenation pool";
int1 = 1;
sizeX = sizeY = 2;
animationId = 7304;
int4 = 3;
boolean1 = false;
actions[0] = "Drink";
ambientSoundId = 2149;
clipType = 1;
boolean2 = false;
transforms = null;
ambient = 40;
modelIds = new int[]{32101};
transformVarbit = -1;
} else if(id == 30352) {
name = "test";
actions[1] = "Practice";
} else if(id == 539) {
name = "Donator Area";
} else if(id == 33114) {
name = "PvP Supply Chest";
actions[0] = "Check-timer";
} else if(id == 33115) {
name = "PvP Supply Chest";
} else if(id == 31583) {
name = "PvP Supply Chest";
} else if(id == 32572) {
name = "Bloody Chest";
actions[1] = "Information";
} else if(id == 32573) {
name = "Bloody Chest";
actions[0] = null;
actions[1] = null;
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if (id == 30169) { // Dagannoth kings crack
actions[0] = "Instance";
actions[1] = "Peek";
} else if (id == 1816) { // KBD Lever
actions[1] = "Instance";
actions[2] = "Commune";
} else if (id == 535) { // Thermonuclear smoke devil crevice
actions[1] = "Instance";
actions[2] = "Peek";
} else if (id == 23104) { // Cerberus iron winch
actions[1] = "Instance";
actions[2] = "Peek";
} else if (id == 29705) { // KQ Crack
actions[0] = "Instance";
actions[1] = "Peek";
} else if (id >= 26502 && id <= 26505) { // GWD boss doors
actions[1] = "Instance";
actions[2] = "Peek";
} else if (id == 31621) { // pvm instance portal
name = "Boss instance portal";
actions[0] = "Use";
} else if(id == 19038) { //christmas tree
name = "Christmas tree";
actions[0] = "Grab-present";
} else if(id == 29709) {
name = "Snowball Exchange";
actions[0] = "Open";
actions[1] = "Information";
} else if (id == 40000) {
copy(32546);
name = "Giveaway booth";
actions[0] = "Use";
} else if(id == 40001) {
copy(4525);
actions[0] = "Exit";
actions[1] = null;
actions[4] = null;
} else if(id == 40002) {
copy(32424);
name = "Consumables";
} else if(id == 40003) {
copy(32425);
name = "Equipment";
} else if(id == 28925) {
name = "Fun PVP Portal";
} else if(id == 31622) {
name = "Ket'ian Wilderness Boss Portal";
} else if(id == 31626) {
name = "Tournament Entrance";
} else if(id == 2654) {
name = "Bloody Fountain";
actions[0] = "Drink";
actions[1] = null;
modelHeight = 200;
modelSizeX = 200;
modelSizeY = 200;
sizeX = 3;
sizeY = 3;
} else if(id == 4470) {
name = "Donator Zone";
actions[0] = "Enter";
} else if(id == 40004) {
copy(29241);
actions[4] = null;
} else if(id == 40005) {
copy(31858);
actions[0] = "Pray-at";
actions[1] = "Spellbook";
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if(id == 40006) {
copy(4537);
actions[4] = null;
} else if(id == 40007) {
copy(13619);
name = "Fun PVP Portal";
actions[4] = null;
} else if(id == 40008) {
copy(20839);
name = "Tournament Barrier";
actions[0] = "Use";
} else if(id == 40009) {
copy(26714);
name = "Mounted Max Cape";
actions[0] = null;
actions[1] = null;
actions[2] = null;
actions[3] = null;
actions[4] = null;
} else if(id == 31846) {
name = "Tournament Information";
actions[0] = "Read";
} else if(id == 29087) {
name = "Ticket Exchange";
actions[0] = "Use";
} else if(id == 172) {
name = "Crystal Chest";
} else if (id == 27290) {
name = "PK Chest";
} else if (id == 4004) {
name = "Well of Goodwill";
actions[0] = "Use";
} else if (id == 4390) {
name = "Donator Zone portal";
}
}
private void copy(int id) {
ObjectDefinition from = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(id);
name = from.name;
sizeX = from.sizeX;
sizeY = from.sizeY;
clipType = from.clipType;
boolean1 = from.boolean1;
int1 = from.int1;
clipType = from.clipType;
nonFlatShading = from.nonFlatShading;
modelClipped = from.modelClipped;
animationId = from.animationId;
int2 = from.int2;
ambient = from.ambient;
contrast = from.contrast;
actions = from.actions;
mapIconId = from.mapIconId;
mapSceneId = from.mapSceneId;
isRotated = from.isRotated;
clipped = from.clipped;
modelSizeX = from.modelSizeX;
modelHeight = from.modelHeight;
modelSizeY = from.modelSizeY;
offsetX = from.offsetX;
offsetHeight = from.offsetHeight;
offsetY = from.offsetY;
boolean2 = from.boolean2;
isSolid = from.isSolid;
int3 = from.int3;
transformVarbit = from.transformVarbit;
transformVarp = from.transformVarp;
ambientSoundId = from.ambientSoundId;
int4 = from.int4;
int5 = from.int5;
int6 = from.int6;
modelIds = from.modelIds;
}
}
replace your ModelData with this
https://pastebin.com/uTspqe97
thats should be all for the client side now time for the server side
replace your region keys class with this
package io.ruin.data.impl;
import com.google.common.collect.Maps;
import com.google.gson.*;
import io.ruin.api.utils.JsonUtils;
import io.ruin.api.utils.ServerWrapper;
import io.ruin.data.DataFile;
import io.ruin.model.map.MultiZone;
import io.ruin.model.map.Region;
import io.ruin.model.map.dynamic.DynamicMap;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.Arrays;
import java.util.Map;
public class region_keys extends DataFile {
public static final int[] NULL_KEYS = new int[4];
@Override
public String path() {
return "xteas.json";
}
@Override
public int priority() {
return 2;
}
@Override
public Object fromJson(String fileName, String json) {
Map<Integer, int[]> key_map = Maps.newHashMap();
JsonParser parser = new JsonParser();
JsonArray array = (JsonArray) parser.parse(json);
Gson builder = new GsonBuilder().create();
//Load keys into map
for (int i = 0; i < array.size(); i++) {
JsonObject jObject = (JsonObject) array.get(i);
int regionId = jObject.get("mapsquare").getAsInt();
int[] keys1 = builder.fromJson(jObject.getAsJsonArray("key"), int[].class);
key_map.put(regionId, keys1);
}
//Populate regions list
for (int i = 0; i < Region.LOADED.length; i++) {
Region region = new Region(i);
if ((region.keys = key_map.get(i)) != null && !isValid(region.id, region.keys)) {
region.keys = null; //Invalid keys
}
Region.LOADED[i] = region;
}
//Load each region
for(Region region : Region.LOADED) {
try {
region.init();
} catch (Exception ex) {
System.err.println("Error loading region " + region.id);
ex.printStackTrace();
}
}
MultiZone.load();
DynamicMap.load();
return key_map;
}
private static boolean isValid(int id, int[] keys) {
Region r = new Region(id);
r.keys = keys;
try {
r.getLandscapeData();
return true;
} catch(Throwable t) {
return false;
}
}
}
add this to your inbuffer class inside kronos-api
public int readUnsignedIntSmartShortCompat() {
int var1 = 0;
int var2;
for (var2 = this.readUSmart(); var2 == 32767; var2 = this.readUSmart()) {
var1 += 32767;
}
var1 += var2;
return var1;
}
public int readUSmart() {
int peek = payload[position] & 0xFF;
return peek < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 0x8000;
}
replace the defs with these https://cdn.discordapp.com/attachmen...7682/cache.rar
replace the init method inside the region class with this
make sure u have added this inside of kronos server inside the data folder
https://cdn.discordapp.com/attachmen...750/xteas.json