diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java b/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java index 1d0357b78a..771731bc02 100644 --- a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java +++ b/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java @@ -73,4 +73,10 @@ public interface ObjectComposition extends ParamHolder * @throws NullPointerException if {@link #getImpostorIds()} is null */ ObjectComposition getImpostor(); + + /** + * Get the bitmask that contains information on which directions you can interact + * with this object from. + */ + int getAccessBitMask(); } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectCompositionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectCompositionMixin.java new file mode 100644 index 0000000000..c98fd60f8a --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectCompositionMixin.java @@ -0,0 +1,197 @@ +package net.runelite.mixins; + +import net.runelite.api.IterableHashTable; +import net.runelite.api.Node; +import net.runelite.api.mixins.*; +import net.runelite.rs.api.RSBuffer; +import net.runelite.rs.api.RSClient; +import net.runelite.rs.api.RSObjectComposition; + +@Mixin(RSObjectComposition.class) +public abstract class RSObjectCompositionMixin implements RSObjectComposition +{ + @Shadow("client") + private static RSClient client; + + @Inject + private int accessBitMask = 0; + + @Inject + @Override + public int getAccessBitMask() + { + return accessBitMask; + } + + @Copy("decodeNext") + @Replace("decodeNext") + public void decodeNext(RSBuffer buffer, int opcode) + { + int var3; + int var4; + if (opcode == 1) + { + var3 = buffer.readUnsignedByte(); + if (var3 > 0) + { + if (getModelIds() != null && !getObjectDefinitionIsLowDetail()) + { + buffer.setOffset(buffer.getOffset() + 3 * var3); + } + else + { + setModels(new int[var3]); + setModelIds(new int[var3]); + + for (var4 = 0; var4 < var3; ++var4) + { + getModelIds()[var4] = buffer.readUnsignedShort(); + getModels()[var4] = buffer.readUnsignedByte(); + } + } + } + } + else if (opcode == 2) setName(buffer.readStringCp1252NullTerminated()); + else if (opcode == 5) + { + var3 = buffer.readUnsignedByte(); + if (var3 > 0) + { + if (getModelIds() != null && !getObjectDefinitionIsLowDetail()) + { + buffer.setOffset(buffer.getOffset() + var3 * 2); + } + else + { + setModels(null); + setModelIds(new int[var3]); + + for (var4 = 0; var4 < var3; ++var4) + { + getModelIds()[var4] = buffer.readUnsignedShort(); + } + } + } + } + else if (opcode == 14) setSizeX(buffer.readUnsignedByte()); + else if (opcode == 15) setSizeY(buffer.readUnsignedByte()); + else if (opcode == 17) + { + setInteractType(0); + setBoolean1(false); + } + else if (opcode == 18) setBoolean1(false); + else if (opcode == 19) setInt1(buffer.readUnsignedByte()); + else if (opcode == 21) setClipType(0); + else if (opcode == 22) setNonFlatShading(true); + else if (opcode == 23) setModelClipped(true); + else if (opcode == 24) + { + setAnimationId(buffer.readUnsignedShort()); + if (getAnimationId() == 65535) setAnimationId(-1); + } + else if (opcode == 27) setInteractType(1); + else if (opcode == 28) setInt2(buffer.readUnsignedByte()); + else if (opcode == 29) setAmbient(buffer.readByte()); + else if (opcode == 39) setContrast(buffer.readByte() * 25); + else if (opcode >= 30 && opcode < 35) + { + getActions()[opcode - 30] = buffer.readStringCp1252NullTerminated(); + if (getActions()[opcode - 30].equalsIgnoreCase("Hidden")) + { + getActions()[opcode - 30] = null; + } + } + else if (opcode == 40) + { + var3 = buffer.readUnsignedByte(); + setRecolorFrom(new short[var3]); + setRecolorTo(new short[var3]); + for (var4 = 0; var4 < var3; ++var4) + { + getRecolorFrom()[var4] = (short) buffer.readUnsignedShort(); + getRecolorTo()[var4] = (short) buffer.readUnsignedShort(); + } + } + else if (opcode == 41) + { + var3 = buffer.readUnsignedByte(); + setRetextureFrom(new short[var3]); + setRetextureTo(new short[var3]); + for (var4 = 0; var4 < var3; ++var4) + { + getRetextureFrom()[var4] = (short) buffer.readUnsignedShort(); + getRetextureTo()[var4] = (short) buffer.readUnsignedShort(); + } + } + else if (opcode == 61) buffer.readUnsignedShort(); + else if (opcode == 62) setIsRotated(true); + else if (opcode == 64) setClipped(false); + else if (opcode == 65) setModelSizeX(buffer.readUnsignedShort()); + else if (opcode == 66) setModelHeight(buffer.readUnsignedShort()); + else if (opcode == 67) setModelSizeY(buffer.readUnsignedShort()); + else if (opcode == 68) setMapSceneId(buffer.readUnsignedShort()); + else if (opcode == 69) accessBitMask = buffer.readUnsignedByte(); + else if (opcode == 70) setOffsetX(buffer.readShort()); + else if (opcode == 71) setOffsetHeight(buffer.readShort()); + else if (opcode == 72) setOffsetY(buffer.readShort()); + else if (opcode == 73) setBoolean2(true) ; + else if (opcode == 74) setIsSolid(true); + else if (opcode == 75) setInt3(buffer.readUnsignedByte()); + else if (opcode != 77 && opcode != 92) + { + if (opcode == 78) + { + setAmbientSoundId(buffer.readUnsignedShort()); + setInt7(buffer.readUnsignedByte()); + } + else if (opcode == 79) + { + setInt5(buffer.readUnsignedShort()); + setInt6(buffer.readUnsignedShort()); + setInt7(buffer.readUnsignedByte()); + + var3 = buffer.readUnsignedByte(); + setSoundEffectIds(new int[var3]); + + for (var4 = 0; var4 < var3; ++var4) + { + getSoundEffectIds()[var4] = buffer.readUnsignedShort(); + } + } + else if (opcode == 81) setClipType(buffer.readUnsignedByte() * 256); + else if (opcode == 82) setMapIconId(buffer.readUnsignedShort()); + else if (opcode == 89) setBoolean3(false); + else if (opcode == 249) + { + setParams((IterableHashTable) client.readStringIntParameters(buffer, getParams())); + } + } + else + { + setTransformVarbit(buffer.readUnsignedShort()); + if (getTransformVarbit() == 65535) setTransformVarbit(-1); + setTransformVarp(buffer.readUnsignedShort()); + if (getTransformVarp() == 65535) setTransformVarp(-1); + + var3 = -1; + + if (opcode == 92) + { + var3 = buffer.readUnsignedShort(); + if (var3 == 65535) var3 = -1; + } + + var4 = buffer.readUnsignedByte(); + setTransforms(new int[var4 + 2]); + + for (int var5 = 0; var5 <= var4; ++var5) + { + getTransforms()[var5] = buffer.readUnsignedShort(); + if (getTransforms()[var5] == 65535) getTransforms()[var5] = -1; + } + + getTransforms()[var4 + 1] = var3; + } + } +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java index 3772548707..459f7edf60 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java @@ -11,6 +11,9 @@ public interface RSBuffer extends Buffer, RSNode @Import("offset") int getOffset(); + @Import("offset") + void setOffset(int offset); + @Import("writeByte") @Override void writeByte(int var1); @@ -34,4 +37,22 @@ public interface RSBuffer extends Buffer, RSNode @Import("writeStringCp1252NullTerminated") @Override void writeStringCp1252NullTerminated(String string); + + @Import("readUnsignedByte") + int readUnsignedByte(); + + @Import("readByte") + byte readByte(); + + @Import("readUnsignedShort") + int readUnsignedShort(); + + @Import("readShort") + int readShort(); + + @Import("readInt") + int readInt(); + + @Import("readStringCp1252NullTerminated") + String readStringCp1252NullTerminated(); } \ No newline at end of file diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index d8e1ec0eaf..a6312ac5f4 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -1433,4 +1433,7 @@ public interface RSClient extends RSGameEngine, Client RSClanSettings getGuestClanSettings(); ClanRank getClanRankFromRs(int rank); + + @Import("readStringIntParameters") + RSIterableNodeHashTable readStringIntParameters(RSBuffer buffer, RSIterableNodeHashTable table); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java index 5b9dd8ae19..7fa1a822a2 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectComposition.java @@ -13,6 +13,9 @@ public interface RSObjectComposition extends ObjectComposition @Override String getName(); + @Import("name") + void setName(String name); + @Import("actions") @Override String[] getActions(); @@ -38,4 +41,205 @@ public interface RSObjectComposition extends ObjectComposition @Import("params") void setParams(RSIterableNodeHashTable params); + + @Import("decodeNext") + void decodeNext(RSBuffer buffer, int opcode); + + @Import("modelIds") + int[] getModelIds(); + + @Import("modelIds") + void setModelIds(int[] modelIds); + + @Import("models") + int[] getModels(); + + @Import("models") + void setModels(int[] models); + + @Import("ObjectDefinition_isLowDetail") + boolean getObjectDefinitionIsLowDetail(); + + @Import("sizeX") + int getSizeX(); + + @Import("sizeX") + void setSizeX(int sizeX); + + @Import("sizeY") + int getSizeY(); + + @Import("sizeY") + void setSizeY(int sizeY); + + @Import("interactType") + int getInteractType(); + + @Import("interactType") + void setInteractType(int interactType); + + @Import("boolean1") + boolean getBoolean1(); + + @Import("boolean1") + void setBoolean1(boolean boolean1); + + @Import("int1") + int getInt1(); + + @Import("int1") + void setInt1(int int1); + + @Import("int2") + int getInt2(); + + @Import("int2") + void setInt2(int int2); + + @Import("clipType") + int getClipType(); + + @Import("clipType") + void setClipType(int clipType); + + @Import("nonFlatShading") + boolean getNonFlatShading(); + + @Import("nonFlatShading") + void setNonFlatShading(boolean nonFlatShading); + + @Import("modelClipped") + void setModelClipped(boolean modelClipped); + + @Import("modelClipped") + boolean getModelClipped(); + + @Import("animationId") + int getAnimationId(); + + @Import("animationId") + void setAnimationId(int animationId); + + @Import("ambient") + int getAmbient(); + + @Import("ambient") + void setAmbient(int ambient); + + @Import("contrast") + int getContrast(); + + @Import("contrast") + void setContrast(int contrast); + + @Import("recolorFrom") + short[] getRecolorFrom(); + + @Import("recolorFrom") + void setRecolorFrom(short[] recolorFrom); + + @Import("recolorTo") + short[] getRecolorTo(); + + @Import("recolorTo") + void setRecolorTo(short[] recolorTo); + + @Import("retextureFrom") + short[] getRetextureFrom(); + + @Import("retextureFrom") + void setRetextureFrom(short[] retextureFrom); + + @Import("retextureTo") + short[] getRetextureTo(); + + @Import("retextureTo") + void setRetextureTo(short[] retextureTo); + + @Import("isRotated") + void setIsRotated(boolean rotated); + + @Import("isRotated") + boolean getIsRotated(); + + @Import("clipped") + void setClipped(boolean clipped); + + @Import("clipped") + boolean getClipped(); + + @Import("mapSceneId") + void setMapSceneId(int mapSceneId); + + @Import("modelSizeX") + void setModelSizeX(int modelSizeX); + + @Import("modelSizeX") + int getModelSizeX(); + + @Import("modelHeight") + void setModelHeight(int modelHeight); + + @Import("modelSizeY") + void setModelSizeY(int modelSizeY); + + @Import("offsetX") + void setOffsetX(int modelSizeY); + + @Import("offsetHeight") + void setOffsetHeight(int offsetHeight); + + @Import("offsetY") + void setOffsetY(int offsetY); + + @Import("int3") + void setInt3(int int3); + + @Import("int5") + void setInt5(int int5); + + @Import("int6") + void setInt6(int int6); + + @Import("int7") + void setInt7(int int7); + + @Import("boolean2") + void setBoolean2(boolean boolean2); + + @Import("isSolid") + void setIsSolid(boolean isSolid); + + @Import("ambientSoundId") + void setAmbientSoundId(int ambientSoundId); + + @Import("soundEffectIds") + void setSoundEffectIds(int[] soundEffectIds); + + @Import("soundEffectIds") + int[] getSoundEffectIds(); + + @Import("mapIconId") + void setMapIconId(int mapIconId); + + @Import("boolean3") + void setBoolean3(boolean boolean3); + + @Import("transformVarbit") + void setTransformVarbit(int transformVarbit); + + @Import("transformVarbit") + int getTransformVarbit(); + + @Import("transformVarp") + void setTransformVarp(int transformVarp); + + @Import("transformVarp") + int getTransformVarp(); + + @Import("transforms") + void setTransforms(int[] transforms); + + @Import("transforms") + int[] getTransforms(); } diff --git a/runescape-client/src/main/java/ObjectComposition.java b/runescape-client/src/main/java/ObjectComposition.java index 6096e230dd..c33fa4980f 100644 --- a/runescape-client/src/main/java/ObjectComposition.java +++ b/runescape-client/src/main/java/ObjectComposition.java @@ -242,7 +242,7 @@ public class ObjectComposition extends DualNode { @ObfuscatedGetter( intValue = 883575663 ) - public int field1864; + public int int7; @ObfuscatedName("ar") @ObfuscatedGetter( intValue = -154554887 @@ -259,7 +259,7 @@ public class ObjectComposition extends DualNode { @Export("soundEffectIds") public int[] soundEffectIds; @ObfuscatedName("af") - public boolean field1854; + public boolean boolean3; @ObfuscatedName("ax") @ObfuscatedSignature( descriptor = "Lnz;" @@ -307,10 +307,10 @@ public class ObjectComposition extends DualNode { this.transformVarbit = -1; this.transformVarp = -1; this.ambientSoundId = -1; - this.field1864 = 0; + this.int7 = 0; this.int5 = 0; this.int6 = 0; - this.field1854 = true; + this.boolean3 = true; } @ObfuscatedName("c") @@ -480,11 +480,11 @@ public class ObjectComposition extends DualNode { } else if (var2 != 77 && var2 != 92) { if (var2 == 78) { this.ambientSoundId = var1.readUnsignedShort(); - this.field1864 = var1.readUnsignedByte(); + this.int7 = var1.readUnsignedByte(); } else if (var2 == 79) { this.int5 = var1.readUnsignedShort(); this.int6 = var1.readUnsignedShort(); - this.field1864 = var1.readUnsignedByte(); + this.int7 = var1.readUnsignedByte(); var3 = var1.readUnsignedByte(); this.soundEffectIds = new int[var3]; @@ -496,7 +496,7 @@ public class ObjectComposition extends DualNode { } else if (var2 == 82) { this.mapIconId = var1.readUnsignedShort(); } else if (var2 == 89) { - this.field1854 = false; + this.boolean3 = false; } else if (var2 == 249) { this.params = class123.readStringIntParameters(var1, this.params); } diff --git a/runescape-client/src/main/java/ObjectSound.java b/runescape-client/src/main/java/ObjectSound.java index 08203459ad..1cc7e09b13 100644 --- a/runescape-client/src/main/java/ObjectSound.java +++ b/runescape-client/src/main/java/ObjectSound.java @@ -112,7 +112,7 @@ public final class ObjectSound extends Node { ObjectComposition var2 = this.obj.transform(); if (var2 != null) { this.soundEffectId = var2.ambientSoundId; - this.field804 = var2.field1864 * 128; + this.field804 = var2.int7 * 128; this.field805 = var2.int5; this.field800 = var2.int6; this.soundEffectIds = var2.soundEffectIds; diff --git a/runescape-client/src/main/java/class140.java b/runescape-client/src/main/java/class140.java index edb04fb07b..3d3d0da322 100644 --- a/runescape-client/src/main/java/class140.java +++ b/runescape-client/src/main/java/class140.java @@ -119,7 +119,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(22, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 22, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 22, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newFloorDecoration(var0, var1, var2, var16, (Renderable)var29, var19, var21); @@ -136,7 +136,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(var5, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.method4291(var0, var1, var2, var16, 1, 1, (Renderable)var29, 0, var19, var21); @@ -153,7 +153,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(0, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 0, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 0, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newBoundaryObject(var0, var1, var2, var16, (Renderable)var29, (Renderable)null, Tiles.field980[var4], 0, var19, var21); @@ -211,7 +211,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(1, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 1, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 1, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newBoundaryObject(var0, var1, var2, var16, (Renderable)var29, (Renderable)null, Tiles.field982[var4], 0, var19, var21); @@ -241,8 +241,8 @@ public class class140 extends class116 { var30 = var8.getEntity(2, var4 + 4, var15, var17, var16, var18); var24 = var8.getEntity(2, var22, var15, var17, var16, var18); } else { - var30 = new DynamicObject(var3, 2, var4 + 4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); - var24 = new DynamicObject(var3, 2, var22, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var30 = new DynamicObject(var3, 2, var4 + 4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); + var24 = new DynamicObject(var3, 2, var22, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newBoundaryObject(var0, var1, var2, var16, (Renderable)var30, (Renderable)var24, Tiles.field980[var4], Tiles.field980[var22], var19, var21); @@ -282,7 +282,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(3, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 3, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 3, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newBoundaryObject(var0, var1, var2, var16, (Renderable)var29, (Renderable)null, Tiles.field982[var4], 0, var19, var21); @@ -306,7 +306,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(var5, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, var5, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.method4291(var0, var1, var2, var16, 1, 1, (Renderable)var29, 0, var19, var21); @@ -322,7 +322,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(4, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newWallDecoration(var0, var1, var2, var16, (Renderable)var29, (Renderable)null, Tiles.field980[var4], 0, 0, 0, var19, var21); @@ -339,7 +339,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var25 = var8.getEntity(4, var4, var15, var17, var16, var18); } else { - var25 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var25 = new DynamicObject(var3, 4, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newWallDecoration(var0, var1, var2, var16, (Renderable)var25, (Renderable)null, Tiles.field980[var4], 0, var22 * Tiles.field972[var4], var22 * Tiles.field984[var4], var19, var21); @@ -353,7 +353,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var25 = var8.getEntity(4, var4 + 4, var15, var17, var16, var18); } else { - var25 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var25 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newWallDecoration(var0, var1, var2, var16, (Renderable)var25, (Renderable)null, 256, var4, var22 * Tiles.field985[var4], var22 * Tiles.field973[var4], var19, var21); @@ -362,7 +362,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(4, var28 + 4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 4, var28 + 4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 4, var28 + 4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newWallDecoration(var0, var1, var2, var16, (Renderable)var29, (Renderable)null, 256, var28, 0, 0, var19, var21); @@ -379,8 +379,8 @@ public class class140 extends class116 { var25 = var8.getEntity(4, var4 + 4, var15, var17, var16, var18); var26 = var8.getEntity(4, var27 + 4, var15, var17, var16, var18); } else { - var25 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); - var26 = new DynamicObject(var3, 4, var27 + 4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var25 = new DynamicObject(var3, 4, var4 + 4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); + var26 = new DynamicObject(var3, 4, var27 + 4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } var6.newWallDecoration(var0, var1, var2, var16, (Renderable)var25, (Renderable)var26, 256, var4, var22 * Tiles.field985[var4], var22 * Tiles.field973[var4], var19, var21); @@ -391,7 +391,7 @@ public class class140 extends class116 { if (var8.animationId == -1 && var8.transforms == null) { var29 = var8.getEntity(10, var4, var15, var17, var16, var18); } else { - var29 = new DynamicObject(var3, 10, var4, var0, var1, var2, var8.animationId, var8.field1854, (Renderable)null); + var29 = new DynamicObject(var3, 10, var4, var0, var1, var2, var8.animationId, var8.boolean3, (Renderable)null); } if (var29 != null && var6.method4291(var0, var1, var2, var16, var9, var10, (Renderable)var29, var5 == 11 ? 256 : 0, var19, var21) && var8.clipped) { diff --git a/runescape-client/src/main/java/class18.java b/runescape-client/src/main/java/class18.java index d77cc39fb3..fcdf215358 100644 --- a/runescape-client/src/main/java/class18.java +++ b/runescape-client/src/main/java/class18.java @@ -94,7 +94,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(22, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 22, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 22, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newFloorDecoration(var0, var2, var3, var17, (Renderable)var30, var20, var22); @@ -107,7 +107,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(var6, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, var6, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, var6, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.method4291(var0, var2, var3, var17, 1, 1, (Renderable)var30, 0, var20, var22); @@ -119,7 +119,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(0, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 0, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 0, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newBoundaryObject(var0, var2, var3, var17, (Renderable)var30, (Renderable)null, Tiles.field980[var5], 0, var20, var22); @@ -131,7 +131,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(1, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 1, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 1, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newBoundaryObject(var0, var2, var3, var17, (Renderable)var30, (Renderable)null, Tiles.field982[var5], 0, var20, var22); @@ -149,8 +149,8 @@ class class18 implements Comparator { var31 = var9.getModel(2, var5 + 4, var16, var18, var17, var19); var25 = var9.getModel(2, var23, var16, var18, var17, var19); } else { - var31 = new DynamicObject(var4, 2, var5 + 4, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); - var25 = new DynamicObject(var4, 2, var23, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var31 = new DynamicObject(var4, 2, var5 + 4, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); + var25 = new DynamicObject(var4, 2, var23, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newBoundaryObject(var0, var2, var3, var17, (Renderable)var31, (Renderable)var25, Tiles.field980[var5], Tiles.field980[var23], var20, var22); @@ -162,7 +162,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(3, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 3, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 3, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newBoundaryObject(var0, var2, var3, var17, (Renderable)var30, (Renderable)null, Tiles.field982[var5], 0, var20, var22); @@ -174,7 +174,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(var6, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, var6, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, var6, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.method4291(var0, var2, var3, var17, 1, 1, (Renderable)var30, 0, var20, var22); @@ -186,7 +186,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(4, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 4, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 4, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newWallDecoration(var0, var2, var3, var17, (Renderable)var30, (Renderable)null, Tiles.field980[var5], 0, 0, 0, var20, var22); @@ -203,7 +203,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var26 = var9.getModel(4, var5, var16, var18, var17, var19); } else { - var26 = new DynamicObject(var4, 4, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var26 = new DynamicObject(var4, 4, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newWallDecoration(var0, var2, var3, var17, (Renderable)var26, (Renderable)null, Tiles.field980[var5], 0, var23 * Tiles.field972[var5], var23 * Tiles.field984[var5], var20, var22); @@ -217,7 +217,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var26 = var9.getModel(4, var5 + 4, var16, var18, var17, var19); } else { - var26 = new DynamicObject(var4, 4, var5 + 4, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var26 = new DynamicObject(var4, 4, var5 + 4, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newWallDecoration(var0, var2, var3, var17, (Renderable)var26, (Renderable)null, 256, var5, var23 * Tiles.field985[var5], var23 * Tiles.field973[var5], var20, var22); @@ -226,7 +226,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(4, var29 + 4, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 4, var29 + 4, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 4, var29 + 4, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newWallDecoration(var0, var2, var3, var17, (Renderable)var30, (Renderable)null, 256, var29, 0, 0, var20, var22); @@ -243,8 +243,8 @@ class class18 implements Comparator { var26 = var9.getModel(4, var5 + 4, var16, var18, var17, var19); var27 = var9.getModel(4, var28 + 4, var16, var18, var17, var19); } else { - var26 = new DynamicObject(var4, 4, var5 + 4, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); - var27 = new DynamicObject(var4, 4, var28 + 4, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var26 = new DynamicObject(var4, 4, var5 + 4, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); + var27 = new DynamicObject(var4, 4, var28 + 4, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } var7.newWallDecoration(var0, var2, var3, var17, (Renderable)var26, (Renderable)var27, 256, var5, var23 * Tiles.field985[var5], var23 * Tiles.field973[var5], var20, var22); @@ -255,7 +255,7 @@ class class18 implements Comparator { if (var9.animationId == -1 && var9.transforms == null) { var30 = var9.getModel(10, var5, var16, var18, var17, var19); } else { - var30 = new DynamicObject(var4, 10, var5, var1, var2, var3, var9.animationId, var9.field1854, (Renderable)null); + var30 = new DynamicObject(var4, 10, var5, var1, var2, var3, var9.animationId, var9.boolean3, (Renderable)null); } if (var30 != null) { diff --git a/runescape-client/src/main/java/class7.java b/runescape-client/src/main/java/class7.java index aa54076273..aa1ee264c2 100644 --- a/runescape-client/src/main/java/class7.java +++ b/runescape-client/src/main/java/class7.java @@ -124,7 +124,7 @@ public class class7 { var5.field806 = (var6 + var1) * 128; var5.field801 = (var7 + var2) * 128; var5.soundEffectId = var3.ambientSoundId; - var5.field804 = var3.field1864 * 128; + var5.field804 = var3.int7 * 128; var5.field805 = var3.int5; var5.field800 = var3.int6; var5.soundEffectIds = var3.soundEffectIds;