A RuneTek3 client (377) that is deobfuscated, converted to Kotlin, and includes QoL improvements.
0

Configure Feed

Select the types of activity you want to include in your feed.

fixes a bug where non shadowed strings were shadowed

+51 -47
+47 -47
src/main/java/com/jagex/runescape/Game.java
··· 4593 4593 j = 24 / j; 4594 4594 for (int k = 0; k < updatedPlayerCount; k++) { 4595 4595 int l = updatedPlayers[k]; 4596 - Npc class50_sub1_sub4_sub3_sub1 = npcs[l]; 4596 + Npc npc = npcs[l]; 4597 4597 int i1 = class50_sub1_sub2.getUnsignedByte(); 4598 4598 if ((i1 & 1) != 0) { 4599 - class50_sub1_sub4_sub3_sub1.npcDefinition = ActorDefinition.getDefinition(class50_sub1_sub2.getUnsignedNegativeOffsetShortBE()); 4600 - class50_sub1_sub4_sub3_sub1.boundaryDimension = class50_sub1_sub4_sub3_sub1.npcDefinition.boundaryDimension; 4601 - class50_sub1_sub4_sub3_sub1.anInt1600 = class50_sub1_sub4_sub3_sub1.npcDefinition.degreesToTurn; 4602 - class50_sub1_sub4_sub3_sub1.walkAnimationId = class50_sub1_sub4_sub3_sub1.npcDefinition.walkAnimationId; 4603 - class50_sub1_sub4_sub3_sub1.turnAroundAnimationId = class50_sub1_sub4_sub3_sub1.npcDefinition.turnAroundAnimationId; 4604 - class50_sub1_sub4_sub3_sub1.turnRightAnimationId = class50_sub1_sub4_sub3_sub1.npcDefinition.turnRightAnimationId; 4605 - class50_sub1_sub4_sub3_sub1.turnLeftAnimationId = class50_sub1_sub4_sub3_sub1.npcDefinition.turnLeftAnimationId; 4606 - class50_sub1_sub4_sub3_sub1.idleAnimation = class50_sub1_sub4_sub3_sub1.npcDefinition.standAnimationId; 4599 + npc.npcDefinition = ActorDefinition.getDefinition(class50_sub1_sub2.getUnsignedNegativeOffsetShortBE()); 4600 + npc.boundaryDimension = npc.npcDefinition.boundaryDimension; 4601 + npc.anInt1600 = npc.npcDefinition.degreesToTurn; 4602 + npc.walkAnimationId = npc.npcDefinition.walkAnimationId; 4603 + npc.turnAroundAnimationId = npc.npcDefinition.turnAroundAnimationId; 4604 + npc.turnRightAnimationId = npc.npcDefinition.turnRightAnimationId; 4605 + npc.turnLeftAnimationId = npc.npcDefinition.turnLeftAnimationId; 4606 + npc.idleAnimation = npc.npcDefinition.standAnimationId; 4607 4607 } 4608 4608 if ((i1 & 0x40) != 0) { 4609 - class50_sub1_sub4_sub3_sub1.anInt1609 = class50_sub1_sub2.getUnsignedShortLE(); 4610 - if (class50_sub1_sub4_sub3_sub1.anInt1609 == 65535) 4611 - class50_sub1_sub4_sub3_sub1.anInt1609 = -1; 4609 + npc.anInt1609 = class50_sub1_sub2.getUnsignedShortLE(); 4610 + if (npc.anInt1609 == 65535) 4611 + npc.anInt1609 = -1; 4612 4612 } 4613 4613 if ((i1 & 0x80) != 0) { 4614 4614 int j1 = class50_sub1_sub2.getUnsignedPostNegativeOffsetByte(); 4615 4615 int j2 = class50_sub1_sub2.getUnsignedPostNegativeOffsetByte(); 4616 - class50_sub1_sub4_sub3_sub1.updateHits(j2, j1, pulseCycle); 4617 - class50_sub1_sub4_sub3_sub1.endCycle = pulseCycle + 300; 4618 - class50_sub1_sub4_sub3_sub1.anInt1596 = class50_sub1_sub2.getUnsignedByte(); 4619 - class50_sub1_sub4_sub3_sub1.anInt1597 = class50_sub1_sub2.getUnsignedPreNegativeOffsetByte(); 4616 + npc.updateHits(j2, j1, pulseCycle); 4617 + npc.endCycle = pulseCycle + 300; 4618 + npc.anInt1596 = class50_sub1_sub2.getUnsignedByte(); 4619 + npc.anInt1597 = class50_sub1_sub2.getUnsignedPreNegativeOffsetByte(); 4620 4620 } 4621 4621 if ((i1 & 4) != 0) { 4622 - class50_sub1_sub4_sub3_sub1.graphic = class50_sub1_sub2.getUnsignedShortBE(); 4622 + npc.graphic = class50_sub1_sub2.getUnsignedShortBE(); 4623 4623 int k1 = class50_sub1_sub2.getIntME1(); 4624 - class50_sub1_sub4_sub3_sub1.spotAnimationDelay = k1 >> 16; 4625 - class50_sub1_sub4_sub3_sub1.anInt1617 = pulseCycle + (k1 & 0xffff); 4626 - class50_sub1_sub4_sub3_sub1.currentAnimation = 0; 4627 - class50_sub1_sub4_sub3_sub1.anInt1616 = 0; 4628 - if (class50_sub1_sub4_sub3_sub1.anInt1617 > pulseCycle) 4629 - class50_sub1_sub4_sub3_sub1.currentAnimation = -1; 4630 - if (class50_sub1_sub4_sub3_sub1.graphic == 65535) 4631 - class50_sub1_sub4_sub3_sub1.graphic = -1; 4624 + npc.spotAnimationDelay = k1 >> 16; 4625 + npc.anInt1617 = pulseCycle + (k1 & 0xffff); 4626 + npc.currentAnimation = 0; 4627 + npc.anInt1616 = 0; 4628 + if (npc.anInt1617 > pulseCycle) 4629 + npc.currentAnimation = -1; 4630 + if (npc.graphic == 65535) 4631 + npc.graphic = -1; 4632 4632 } 4633 4633 if ((i1 & 0x20) != 0) { 4634 - class50_sub1_sub4_sub3_sub1.forcedChat = class50_sub1_sub2.getString(); 4635 - class50_sub1_sub4_sub3_sub1.textCycle = 100; 4634 + npc.forcedChat = class50_sub1_sub2.getString(); 4635 + npc.textCycle = 100; 4636 4636 } 4637 4637 if ((i1 & 8) != 0) { 4638 - class50_sub1_sub4_sub3_sub1.anInt1598 = class50_sub1_sub2.getUnsignedNegativeOffsetShortLE(); 4639 - class50_sub1_sub4_sub3_sub1.anInt1599 = class50_sub1_sub2.getUnsignedShortLE(); 4638 + npc.anInt1598 = class50_sub1_sub2.getUnsignedNegativeOffsetShortLE(); 4639 + npc.anInt1599 = class50_sub1_sub2.getUnsignedShortLE(); 4640 4640 } 4641 4641 if ((i1 & 2) != 0) { 4642 4642 int l1 = class50_sub1_sub2.getUnsignedShortBE(); 4643 4643 if (l1 == 65535) 4644 4644 l1 = -1; 4645 4645 int k2 = class50_sub1_sub2.getUnsignedPreNegativeOffsetByte(); 4646 - if (l1 == class50_sub1_sub4_sub3_sub1.emoteAnimation && l1 != -1) { 4646 + if (l1 == npc.emoteAnimation && l1 != -1) { 4647 4647 int i3 = AnimationSequence.animations[l1].anInt307; 4648 4648 if (i3 == 1) { 4649 - class50_sub1_sub4_sub3_sub1.displayedEmoteFrames = 0; 4650 - class50_sub1_sub4_sub3_sub1.anInt1626 = 0; 4651 - class50_sub1_sub4_sub3_sub1.animationDelay = k2; 4652 - class50_sub1_sub4_sub3_sub1.anInt1628 = 0; 4649 + npc.displayedEmoteFrames = 0; 4650 + npc.anInt1626 = 0; 4651 + npc.animationDelay = k2; 4652 + npc.anInt1628 = 0; 4653 4653 } 4654 4654 if (i3 == 2) 4655 - class50_sub1_sub4_sub3_sub1.anInt1628 = 0; 4655 + npc.anInt1628 = 0; 4656 4656 } else if (l1 == -1 4657 - || class50_sub1_sub4_sub3_sub1.emoteAnimation == -1 4658 - || AnimationSequence.animations[l1].anInt301 >= AnimationSequence.animations[class50_sub1_sub4_sub3_sub1.emoteAnimation].anInt301) { 4659 - class50_sub1_sub4_sub3_sub1.emoteAnimation = l1; 4660 - class50_sub1_sub4_sub3_sub1.displayedEmoteFrames = 0; 4661 - class50_sub1_sub4_sub3_sub1.anInt1626 = 0; 4662 - class50_sub1_sub4_sub3_sub1.animationDelay = k2; 4663 - class50_sub1_sub4_sub3_sub1.anInt1628 = 0; 4664 - class50_sub1_sub4_sub3_sub1.anInt1613 = class50_sub1_sub4_sub3_sub1.pathLength; 4657 + || npc.emoteAnimation == -1 4658 + || AnimationSequence.animations[l1].anInt301 >= AnimationSequence.animations[npc.emoteAnimation].anInt301) { 4659 + npc.emoteAnimation = l1; 4660 + npc.displayedEmoteFrames = 0; 4661 + npc.anInt1626 = 0; 4662 + npc.animationDelay = k2; 4663 + npc.anInt1628 = 0; 4664 + npc.anInt1613 = npc.pathLength; 4665 4665 } 4666 4666 } 4667 4667 if ((i1 & 0x10) != 0) { 4668 4668 int i2 = class50_sub1_sub2.getUnsignedPreNegativeOffsetByte(); 4669 4669 int l2 = class50_sub1_sub2.getUnsignedPreNegativeOffsetByte(); 4670 - class50_sub1_sub4_sub3_sub1.updateHits(l2, i2, pulseCycle); 4671 - class50_sub1_sub4_sub3_sub1.endCycle = pulseCycle + 300; 4672 - class50_sub1_sub4_sub3_sub1.anInt1596 = class50_sub1_sub2.getUnsignedByte(); 4673 - class50_sub1_sub4_sub3_sub1.anInt1597 = class50_sub1_sub2.getUnsignedInvertedByte(); 4670 + npc.updateHits(l2, i2, pulseCycle); 4671 + npc.endCycle = pulseCycle + 300; 4672 + npc.anInt1596 = class50_sub1_sub2.getUnsignedByte(); 4673 + npc.anInt1597 = class50_sub1_sub2.getUnsignedInvertedByte(); 4674 4674 } 4675 4675 } 4676 4676
+4
src/main/java/com/jagex/runescape/cache/media/TypeFace.java
··· 276 276 } 277 277 278 278 public void drawShadowedString(String string, int x, int y, boolean shadow, int colour) { 279 + if (!shadow) { 280 + drawString(string, x, y, colour); 281 + return; 282 + } 279 283 if (this.moderatorIcon != null) { 280 284 this.drawString(string, x, y, colour, 0); 281 285 } else {