diff --git a/.idea/artifacts/local_client_jar.xml b/.idea/artifacts/local_client_jar.xml new file mode 100644 index 00000000..ddafdb04 --- /dev/null +++ b/.idea/artifacts/local_client_jar.xml @@ -0,0 +1,39 @@ + + + $PROJECT_DIR$/CompiledServer/artifacts/local_client_jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 00000000..f18f6314 --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index dc16a57c..f592c4d5 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -76,6 +76,11 @@ + + diff --git a/2006Redone Client/src/Game.java b/2006Redone Client/src/Game.java index f88fb3b9..e1ce73e3 100644 --- a/2006Redone Client/src/Game.java +++ b/2006Redone Client/src/Game.java @@ -9774,8 +9774,10 @@ public class Game extends RSApplet { int j13 = stream.readUnsignedByte(); int k15 = anInt1268 + (j13 >> 4 & 7); int l16 = anInt1269 + (j13 & 7); - if (k15 >= 0 && l16 >= 0 && k15 < 104 && l16 < 104) + + if (k15 >= 0 && l16 >= 0 && k15 < 104 && l16 < 104) { method130(-1, -1, j8, i11, l16, k5, plane, k15, 0); + } return; } if (j == 151) { @@ -9787,6 +9789,7 @@ public class Game extends RSApplet { int i15 = k12 >> 2; int k16 = k12 & 3; int l17 = anIntArray1177[i15]; + //System.out.println("id: " + j10 + " x:" + (this.baseX + anInt1268) + " y:" + (this.baseY + anInt1269)); if (l4 >= 0 && k7 >= 0 && l4 < 104 && k7 < 104) method130(-1, j10, k16, l17, k7, i15, plane, l4, 0); return; @@ -10645,7 +10648,7 @@ public class Game extends RSApplet { } if (pktType == 174) { int id = inStream.readUnsignedWord(); - int type = inStream.readUnsignedByte(); + int type = /*inStream.readUnsignedByte()*/1; int delay = inStream.readUnsignedWord(); int volume = inStream.readUnsignedByte(); sound[currentSound] = id; @@ -11420,6 +11423,7 @@ public class Game extends RSApplet { Signlink.reporterror(s2); resetLogout(); + exception.printStackTrace(); } return true; } diff --git a/2006Redone Client/src/SizeConstants.java b/2006Redone Client/src/SizeConstants.java index c3e68400..7f7ffa61 100644 --- a/2006Redone Client/src/SizeConstants.java +++ b/2006Redone Client/src/SizeConstants.java @@ -34,31 +34,31 @@ final class SizeConstants { 173, 228, 121, 83, 133, 68, 0 }; public static final int[] packetSizes = { - 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -2, 4, 3, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, - 9, 0, 0, -2, 0, 0, 0, 0, 0, 0, - -2, 1, 0, 0, 2, -2, 0, 0, 0, 0, - 6, 3, 2, 4, 2, 4, 0, 0, 0, 4, - 0, -2, 0, 0, 7, 2, 0, 6, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, - 0, 2, 0, 0, -1, 4, 1, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 15, 0, 0, - 0, 4, 4, 0, 0, 0, -2, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 14, 0, 0, - 0, 4, 0, 0, 0, 0, 3, 0, 0, 0, - 4, 0, 0, 0, 2, 0, 6, 0, 0, 0, - 0, 3, 0, 0, 5, 0, 10, 6, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 3, 0, 2, 0, - 0, 0, 0, 0, -2, 7, 0, 0, 2, 0, - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, -2, 0, 0, 0, 0, 6, 0, 4, 3, - 0, 0, 0, -1, 6, 0, 0 + 0, 0, 0, 0, 6, 0, 0, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //10 + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, //20 + 0, 0, 0, 0, -2, 4, 3, 0, 0, 0, //30 + 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, //40 + 9, 0, 0, -2, 0, 0, 0, 0, 0, 0, //50 + -2, 1, 0, 0, 2, -2, 0, 0, 0, 0, //60 + 6, 3, 2, 4, 2, 4, 0, 0, 0, 4, //70 + 0, -2, 0, 0, 7, 2, 0, 6, 0, 0, //80 + 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, //90 + 0, 2, 0, 0, -1, 4, 1, 0, 0, 0, //100 + 1, 0, 0, 0, 2, 0, 0, 15, 0, 0, //110 + 0, 4, 4, 0, 0, 0, -2, 0, 0, 0, //120 + 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, //130 + 0, 0, 2, 0, 0, 0, 0, 14, 0, 0, //140 + 0, 4, 0, 0, 0, 0, 3, 0, 0, 0, //150 + 4, 0, 0, 0, 2, 0, 6, 0, 0, 0, //160 + 0, 3, 0, 0, 5, 0, 10, 6, 0, 0, //170 + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, //180 + 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, //190 + 4, 0, 0, 0, 0, 0, 3, 0, 2, 0, //200 + 0, 0, 0, 0, -2, 7, 0, 0, 2, 0, //210 + 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, //220 + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, //230 + 2, -2, 0, 0, 0, 0, 6, 0, 4, 3, //240 + 0, 0, 0, -1, 6, 0, 0//250 }; } diff --git a/2006Redone Server/data/logs/clickitem/michael2.txt b/2006Redone Server/data/logs/clickitem/michael2.txt new file mode 100644 index 00000000..cd445676 --- /dev/null +++ b/2006Redone Server/data/logs/clickitem/michael2.txt @@ -0,0 +1,7 @@ +[2019/10/26] 21:23 michael2 clicked item bones +[2019/10/26] 21:25 michael2 clicked item bones +[2019/10/26] 21:26 michael2 clicked item bones +[2019/10/26] 21:28 michael2 clicked item bones +[2019/10/26] 21:30 michael2 clicked item bones +[2019/10/26] 21:30 michael2 clicked item bones +[2019/10/26] 21:30 michael2 clicked item bones diff --git a/2006Redone Server/data/logs/clickitem/michael8.txt b/2006Redone Server/data/logs/clickitem/michael8.txt new file mode 100644 index 00000000..31f69e90 --- /dev/null +++ b/2006Redone Server/data/logs/clickitem/michael8.txt @@ -0,0 +1,2 @@ +[2019/10/28] 15:43 michael8 clicked item herb +[2019/10/28] 15:43 michael8 clicked item bones diff --git a/2006Redone Server/data/logs/commands/michael.txt b/2006Redone Server/data/logs/commands/michael.txt new file mode 100644 index 00000000..7c86cd07 --- /dev/null +++ b/2006Redone Server/data/logs/commands/michael.txt @@ -0,0 +1 @@ +[2019/10/27] 16:16 michael used command: bank diff --git a/2006Redone Server/data/logs/commands/michael2.txt b/2006Redone Server/data/logs/commands/michael2.txt new file mode 100644 index 00000000..5216fb1f --- /dev/null +++ b/2006Redone Server/data/logs/commands/michael2.txt @@ -0,0 +1 @@ +[2019/10/28] 16:52 michael2 used command: bank diff --git a/2006Redone Server/data/logs/dropitem/michael2.txt b/2006Redone Server/data/logs/dropitem/michael2.txt new file mode 100644 index 00000000..25f8372f --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael2.txt @@ -0,0 +1,16 @@ +[2019/10/26] 21:23 michael2 dropped 3 iron arrow absX: 3248 absY: 3225 +[2019/10/26] 21:24 michael2 dropped 17 bronze arrow absX: 3262 absY: 3228 +[2019/10/26] 21:24 michael2 dropped 1 air talisman absX: 3262 absY: 3228 +[2019/10/26] 21:26 michael2 dropped 1 bronze longsword absX: 3259 absY: 3229 +[2019/10/26] 21:28 michael2 dropped 1 bronze med helm absX: 3251 absY: 3225 +[2019/10/26] 21:28 michael2 dropped 1 air talisman absX: 3251 absY: 3225 +[2019/10/26] 21:29 michael2 dropped 9 coins absX: 3255 absY: 3223 +[2019/10/26] 21:29 michael2 dropped 6 water rune absX: 3255 absY: 3223 +[2019/10/26] 21:29 michael2 dropped 1 goblin mail absX: 3255 absY: 3223 +[2019/10/26] 21:31 michael2 dropped 1 bronze sq shield absX: 3260 absY: 3228 +[2019/10/26] 21:32 michael2 dropped 9 coins absX: 3259 absY: 3227 +[2019/10/26] 21:34 michael2 dropped 1 bronze sq shield absX: 3262 absY: 3229 +[2019/10/26] 21:34 michael2 dropped 1 bronze sq shield absX: 3255 absY: 3223 +[2019/10/26] 21:34 michael2 dropped 1 bronze longsword absX: 3255 absY: 3223 +[2019/10/26] 21:35 michael2 dropped 1 raw chicken absX: 3260 absY: 3227 +[2019/10/26] 21:51 michael2 dropped 1 ashes absX: 3234 absY: 3218 diff --git a/2006Redone Server/data/logs/dropitem/michael5.txt b/2006Redone Server/data/logs/dropitem/michael5.txt new file mode 100644 index 00000000..de1af54e --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael5.txt @@ -0,0 +1,21 @@ +[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 1 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 2 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 3 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 4 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 5 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:50 michael5 dropped 6 bronze arrow absX: 3247 absY: 3226 +[2019/10/27] 18:51 michael5 dropped 2 air rune absX: 3248 absY: 3226 +[2019/10/27] 18:51 michael5 dropped 5 iron arrow absX: 3248 absY: 3226 +[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3251 absY: 3226 +[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3253 absY: 3225 +[2019/10/27] 18:51 michael5 dropped 2 bronze arrow absX: 3252 absY: 3225 +[2019/10/27] 18:51 michael5 dropped 3 bronze arrow absX: 3252 absY: 3225 +[2019/10/27] 18:51 michael5 dropped 1 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:51 michael5 dropped 2 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:52 michael5 dropped 3 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:52 michael5 dropped 4 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:52 michael5 dropped 5 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:52 michael5 dropped 6 bronze arrow absX: 3242 absY: 3225 +[2019/10/27] 18:55 michael5 dropped 1 ashes absX: 3234 absY: 3230 diff --git a/2006Redone Server/data/logs/dropitem/michael6.txt b/2006Redone Server/data/logs/dropitem/michael6.txt new file mode 100644 index 00000000..a56b0ecf --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael6.txt @@ -0,0 +1,27 @@ +[2019/10/28] 13:45 michael6 dropped 1 bronze arrow absX: 3224 absY: 3222 +[2019/10/28] 13:45 michael6 dropped 1 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:45 michael6 dropped 2 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:45 michael6 dropped 3 bronze arrow absX: 3224 absY: 3222 +[2019/10/28] 13:45 michael6 dropped 4 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:45 michael6 dropped 5 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:45 michael6 dropped 6 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:45 michael6 dropped 7 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:46 michael6 dropped 8 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:46 michael6 dropped 9 bronze arrow absX: 3224 absY: 3222 +[2019/10/28] 13:46 michael6 dropped 10 bronze arrow absX: 3224 absY: 3224 +[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3220 absY: 3224 +[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3219 absY: 3223 +[2019/10/28] 13:48 michael6 dropped 2 bronze arrow absX: 3221 absY: 3223 +[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3221 absY: 3225 +[2019/10/28] 13:48 michael6 dropped 1 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:48 michael6 dropped 2 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:48 michael6 dropped 3 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:48 michael6 dropped 4 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:48 michael6 dropped 5 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:48 michael6 dropped 6 bronze arrow absX: 3222 absY: 3221 +[2019/10/28] 13:52 michael6 dropped 1 bronze arrow absX: 3221 absY: 3219 +[2019/10/28] 13:52 michael6 dropped 1 bronze arrow absX: 3232 absY: 3219 +[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3217 absY: 3244 +[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3228 absY: 3218 +[2019/10/28] 14:01 michael6 dropped 1 bronze arrow absX: 3230 absY: 3218 +[2019/10/28] 14:02 michael6 dropped 1 bronze arrow absX: 3232 absY: 3217 diff --git a/2006Redone Server/data/logs/dropitem/michael7.txt b/2006Redone Server/data/logs/dropitem/michael7.txt new file mode 100644 index 00000000..be906a80 --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael7.txt @@ -0,0 +1,29 @@ +[2019/10/28] 15:09 michael7 dropped 1 bronze arrow absX: 3225 absY: 3223 +[2019/10/28] 15:13 michael7 dropped 1 bronze arrow absX: 3225 absY: 3224 +[2019/10/28] 15:13 michael7 dropped 1 bronze arrow absX: 3225 absY: 3222 +[2019/10/28] 15:18 michael7 dropped 1 bronze arrow absX: 3230 absY: 3219 +[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3230 absY: 3219 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3234 absY: 3217 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3235 absY: 3221 +[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3235 absY: 3221 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3236 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 3 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 4 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 5 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 6 bronze arrow absX: 3233 absY: 3222 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3232 absY: 3220 +[2019/10/28] 15:19 michael7 dropped 1 bronze arrow absX: 3233 absY: 3220 +[2019/10/28] 15:19 michael7 dropped 2 bronze arrow absX: 3233 absY: 3220 +[2019/10/28] 15:20 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218 +[2019/10/28] 15:20 michael7 dropped 1 ashes absX: 3230 absY: 3218 +[2019/10/28] 15:20 michael7 dropped 3 bronze arrow absX: 3230 absY: 3219 +[2019/10/28] 15:20 michael7 dropped 1 bronze arrow absX: 3223 absY: 3228 +[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3223 absY: 3227 +[2019/10/28] 15:23 michael7 dropped 2 bronze arrow absX: 3223 absY: 3229 +[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218 +[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3236 absY: 3218 +[2019/10/28] 15:23 michael7 dropped 1 bronze arrow absX: 3234 absY: 3218 +[2019/10/28] 15:23 michael7 dropped 2 bronze arrow absX: 3234 absY: 3218 +[2019/10/28] 15:23 michael7 dropped 3 bronze arrow absX: 3234 absY: 3218 diff --git a/2006Redone Server/data/logs/dropitem/michael8.txt b/2006Redone Server/data/logs/dropitem/michael8.txt new file mode 100644 index 00000000..d9460ddb --- /dev/null +++ b/2006Redone Server/data/logs/dropitem/michael8.txt @@ -0,0 +1,20 @@ +[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226 +[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226 +[2019/10/28] 15:25 michael8 dropped 1 bronze arrow absX: 3234 absY: 3226 +[2019/10/28] 15:29 michael8 dropped 1 bronze arrow absX: 3228 absY: 3219 +[2019/10/28] 15:29 michael8 dropped 1 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:29 michael8 dropped 2 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:29 michael8 dropped 3 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:29 michael8 dropped 4 bronze arrow absX: 3228 absY: 3220 +[2019/10/28] 15:30 michael8 dropped 1 bronze arrow absX: 3229 absY: 3217 +[2019/10/28] 15:30 michael8 dropped 1 bronze arrow absX: 3226 absY: 3218 +[2019/10/28] 15:31 michael8 dropped 5 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:31 michael8 dropped 6 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:31 michael8 dropped 7 bronze arrow absX: 3226 absY: 3220 +[2019/10/28] 15:31 michael8 dropped 1 iron dagger absX: 3226 absY: 3220 +[2019/10/28] 15:36 michael8 dropped 1 bronze arrow absX: 3219 absY: 3222 +[2019/10/28] 15:36 michael8 dropped 2 bronze arrow absX: 3219 absY: 3222 +[2019/10/28] 15:36 michael8 dropped 3 bronze arrow absX: 3219 absY: 3222 +[2019/10/28] 15:36 michael8 dropped 4 bronze arrow absX: 3219 absY: 3222 +[2019/10/28] 15:41 michael8 dropped 1 air talisman absX: 3220 absY: 3222 +[2019/10/28] 15:41 michael8 dropped 1 herb absX: 3220 absY: 3222 diff --git a/2006Redone Server/data/logs/pickupitem/michael2.txt b/2006Redone Server/data/logs/pickupitem/michael2.txt new file mode 100644 index 00000000..57e1a67e --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael2.txt @@ -0,0 +1,20 @@ +[2019/10/26] 21:23 michael2 picked up iron arrow itemX: 3249, itemY: 3225 +[2019/10/26] 21:23 michael2 picked up bones itemX: 3249, itemY: 3225 +[2019/10/26] 21:24 michael2 picked up bronze arrow itemX: 3261, itemY: 3228 +[2019/10/26] 21:24 michael2 picked up bones itemX: 3261, itemY: 3228 +[2019/10/26] 21:24 michael2 picked up air talisman itemX: 3261, itemY: 3228 +[2019/10/26] 21:26 michael2 picked up bones itemX: 3251, itemY: 3225 +[2019/10/26] 21:26 michael2 picked up bones itemX: 3260, itemY: 3229 +[2019/10/26] 21:26 michael2 picked up bronze longsword itemX: 3260, itemY: 3229 +[2019/10/26] 21:27 michael2 picked up bones itemX: 3262, itemY: 3229 +[2019/10/26] 21:28 michael2 picked up bronze med helm itemX: 3250, itemY: 3225 +[2019/10/26] 21:28 michael2 picked up bones itemX: 3250, itemY: 3225 +[2019/10/26] 21:28 michael2 picked up air talisman itemX: 3250, itemY: 3225 +[2019/10/26] 21:30 michael2 picked up bones itemX: 3250, itemY: 3225 +[2019/10/26] 21:30 michael2 picked up goblin mail itemX: 3254, itemY: 3223 +[2019/10/26] 21:31 michael2 picked up bronze sq shield itemX: 3260, itemY: 3229 +[2019/10/26] 21:31 michael2 picked up bones itemX: 3260, itemY: 3229 +[2019/10/26] 21:33 michael2 picked up coins itemX: 3261, itemY: 3229 +[2019/10/26] 21:34 michael2 picked up bronze sq shield itemX: 3262, itemY: 3230 +[2019/10/26] 21:34 michael2 picked up bronze sq shield itemX: 3254, itemY: 3223 +[2019/10/26] 21:34 michael2 picked up bronze longsword itemX: 3254, itemY: 3223 diff --git a/2006Redone Server/data/logs/pickupitem/michael5.txt b/2006Redone Server/data/logs/pickupitem/michael5.txt new file mode 100644 index 00000000..fe8de2d4 --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael5.txt @@ -0,0 +1,5 @@ +[2019/10/27] 18:51 michael5 picked up bronze arrow itemX: 3248, itemY: 3226 +[2019/10/27] 18:51 michael5 picked up air rune itemX: 3248, itemY: 3226 +[2019/10/27] 18:51 michael5 picked up bones itemX: 3248, itemY: 3226 +[2019/10/27] 18:51 michael5 picked up iron arrow itemX: 3248, itemY: 3226 +[2019/10/27] 18:51 michael5 picked up bronze arrow itemX: 3249, itemY: 3226 diff --git a/2006Redone Server/data/logs/pickupitem/michael6.txt b/2006Redone Server/data/logs/pickupitem/michael6.txt new file mode 100644 index 00000000..871371c4 --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael6.txt @@ -0,0 +1,5 @@ +[2019/10/28] 13:46 michael6 picked up bronze arrow itemX: 3224, itemY: 3223 +[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3223 +[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3222, itemY: 3222 +[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3225 +[2019/10/28] 13:48 michael6 picked up bronze arrow itemX: 3220, itemY: 3226 diff --git a/2006Redone Server/data/logs/pickupitem/michael7.txt b/2006Redone Server/data/logs/pickupitem/michael7.txt new file mode 100644 index 00000000..1e26f96d --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael7.txt @@ -0,0 +1,5 @@ +[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3222 +[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3221 +[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3220 +[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3235, itemY: 3220 +[2019/10/28] 15:19 michael7 picked up bronze arrow itemX: 3234, itemY: 3218 diff --git a/2006Redone Server/data/logs/pickupitem/michael8.txt b/2006Redone Server/data/logs/pickupitem/michael8.txt new file mode 100644 index 00000000..5cef3d15 --- /dev/null +++ b/2006Redone Server/data/logs/pickupitem/michael8.txt @@ -0,0 +1,4 @@ +[2019/10/28] 15:36 michael8 picked up bronze arrow itemX: 3219, itemY: 3221 +[2019/10/28] 15:43 michael8 picked up air talisman itemX: 3219, itemY: 3222 +[2019/10/28] 15:43 michael8 picked up herb itemX: 3219, itemY: 3222 +[2019/10/28] 15:43 michael8 picked up bones itemX: 3219, itemY: 3222 diff --git a/2006Redone Server/src/META-INF/MANIFEST.MF b/2006Redone Server/src/META-INF/MANIFEST.MF new file mode 100644 index 00000000..f20a7294 --- /dev/null +++ b/2006Redone Server/src/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: Client + diff --git a/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java b/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java index 2d90ca5e..52e3d0e2 100644 --- a/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java +++ b/2006Redone Server/src/redone/game/content/combat/CombatAssistant.java @@ -21,6 +21,7 @@ import redone.game.content.music.sound.CombatSounds; import redone.game.content.music.sound.SoundList; import redone.game.content.skills.slayer.SlayerRequirements; import redone.game.items.ItemAssistant; +import redone.game.npcs.Npc; import redone.game.npcs.NpcHandler; import redone.game.players.Client; import redone.game.players.Player; @@ -430,21 +431,91 @@ public class CombatAssistant { } } + public void attackingNpcTick() { + int i = c.npcIndex; + if (i > 0 && NpcHandler.npcs[i] != null) { + if (NpcHandler.npcs[i].isDead) { + c.npcIndex = 0; + c.followId2 = 0; + c.faceNpc(0); + return; + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, NpcHandler.npcs[i].absX, NpcHandler.npcs[i].absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon&& !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + } + } + + public void attackingPlayerTick() { + int i = c.playerIndex; + if (i > 0 && PlayerHandler.players[i] != null) { + if (PlayerHandler.players[i].isDead) { + c.playerIndex = 0; + c.followId = 0; + c.faceNpc(0); + return; + } + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { + return; + } + + if (!c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 4) + && c.usingRangeWeapon + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 2) + && !c.usingRangeWeapon + && RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), + getRequiredDistance()) + && !c.usingRangeWeapon + && !RangeData.usingHally(c) + && !c.usingBow + && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 10) + && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + } + } + public void attackNpc(int i) { // int equippedWeapon = c.playerEquipment[c.playerWeapon]; // final int npcId = NPCHandler.npcs[i].npcType; if (NpcHandler.npcs[i] != null) { + Npc npc = NpcHandler.npcs[i]; if (NpcHandler.npcs[i].isDead || NpcHandler.npcs[i].MaxHP <= 0) { c.usingMagic = false; c.faceUpdate(0); c.npcIndex = 0; return; } - if (c.absY == 3228 && NpcHandler.npcs[i].absY == 3227) { - resetPlayerAttack(); - return; - } - if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) { + /*if (c.absY == 3224 && NpcHandler.npcs[i].absY == 3225) { resetPlayerAttack(); return; } @@ -459,7 +530,7 @@ public class CombatAssistant { if (c.absX == 3252 && c.absY > 3254 && c.absY < 3272 || c.absY == 3254 && c.absX > 3252 && c.absX < 3265) { resetPlayerAttack(); return; - } + }*/ if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { if (!NpcHandler.isUndead(i)) { c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades."); @@ -546,12 +617,13 @@ public class CombatAssistant { c.getActionSender().sendMessage("This monster was not spawned for you."); return; } + c.followId2 = i; c.followId = 0; if (c.attackTimer <= 0) { - boolean usingBow = false; + c.usingBow = false; + c.usingRangeWeapon = false; boolean usingArrows = false; - boolean usingOtherRangeWeapons = false; boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; c.bonusAttack = 0; c.rangeItemUsed = 0; @@ -563,13 +635,13 @@ public class CombatAssistant { if (c.spellId > 0) { c.usingMagic = true; } - c.attackTimer = getAttackDelay(); + c.specAccuracy = 1.0; c.specDamage = 1.0; if (!c.usingMagic) { for (int bowId : RangeData.BOWS) { if (c.playerEquipment[c.playerWeapon] == bowId) { - usingBow = true; + c.usingBow = true; for (int arrowId : RangeData.ARROWS) { if (c.playerEquipment[c.playerArrows] == arrowId) { usingArrows = true; @@ -580,44 +652,41 @@ public class CombatAssistant { for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { if (c.playerEquipment[c.playerWeapon] == otherRangeId) { - usingOtherRangeWeapons = true; + c.usingRangeWeapon = true; } } } - if (armaNpc(i) && !usingCross && !usingBow && !c.usingMagic - && !RangeData.usingCrystalBow(c) && !usingOtherRangeWeapons) { + if (armaNpc(i) && !usingCross && !c.usingBow && !c.usingMagic + && !RangeData.usingCrystalBow(c) && !c.usingRangeWeapon) { resetPlayerAttack(); return; } - if (usingOtherRangeWeapons || usingBow + if (c.usingRangeWeapon || c.usingBow && Constants.combatSounds && NpcHandler.npcs[i].npcType < 3177 && NpcHandler.npcs[i].npcType > 3180) { c.getActionSender().sendSound(SoundList.SHOOT_ARROW, 100, 0); } - if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !usingOtherRangeWeapons && !usingBow && !c.usingMagic || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) - && usingOtherRangeWeapons - && !usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - NpcHandler.npcs[i].getX(), - NpcHandler.npcs[i].getY(), 1) - && !usingOtherRangeWeapons - && !RangeData.usingHally(c) - && !usingBow - && !c.usingMagic - || !c.goodDistance(c.getX(), c.getY(), - NpcHandler.npcs[i].getX(), - NpcHandler.npcs[i].getY(), 8) - && (usingBow || c.usingMagic)) { - c.attackTimer = 2; + + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, npc.absX, npc.absY)) { return; } + if (!c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c) && !c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 4) && c.usingRangeWeapon && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 1)&& !c.usingRangeWeapon && !RangeData.usingHally(c) && !c.usingBow && !c.usingMagic + || !c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 8) && (c.usingBow || c.usingMagic)) { + return; + } else { + c.stopMovement(); + } + if (!usingCross && !usingArrows - && usingBow + && c.usingBow && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223)) { c.getActionSender().sendMessage( "There is no ammo left in your quiver."); @@ -626,7 +695,7 @@ public class CombatAssistant { return; } if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] - && Constants.CORRECT_ARROWS && usingBow + && Constants.CORRECT_ARROWS && c.usingBow && !RangeData.usingCrystalBow(c) && c.playerEquipment[c.playerWeapon] != 9185) { c.getItemAssistant(); @@ -653,30 +722,14 @@ public class CombatAssistant { return; } - if (usingBow + if (c.usingBow || c.usingMagic - || usingOtherRangeWeapons + || c.usingRangeWeapon || c.goodDistance(c.getX(), c.getY(), NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), 2) && RangeData.usingHally(c)) { c.stopMovement(); } - - - /** - * Npc projectiles - */ - if (PlayerAssistant.pathBlocked(c, NpcHandler.npcs[i])) { - if((c.usingBow || c.usingMagic || usingOtherRangeWeapons || c.autocasting)) { - PathFinder.getPathFinder().findRoute(c, NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), true, 8, 8); - if(!c.usingBow && !c.usingMagic && !usingOtherRangeWeapons && !c.autocasting) { - PathFinder.getPathFinder().findRoute(c,NpcHandler.npcs[i].getX(), NpcHandler.npcs[i].getY(), true, 1, 1); - c.attackTimer = 0; - return; - } - } - } - if (!checkMagicReqs(c.spellId)) { c.stopMovement(); @@ -685,6 +738,7 @@ public class CombatAssistant { } c.faceUpdate(i); + c.attackTimer = getAttackDelay(); NpcHandler.npcs[i].underAttackBy = c.playerId; NpcHandler.npcs[i].lastDamageTaken = System.currentTimeMillis(); if (c.usingSpecial && !c.usingMagic) { @@ -729,7 +783,7 @@ public class CombatAssistant { } c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; c.lastArrowUsed = c.playerEquipment[c.playerArrows]; - if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee // hit // delay c.hitDelay = getHitDelay(); @@ -737,7 +791,7 @@ public class CombatAssistant { c.oldNpcIndex = i; } - if (usingBow && !usingOtherRangeWeapons && !c.usingMagic + if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic || usingCross) { // range hit delay if (usingCross) { c.usingBow = true; @@ -763,7 +817,7 @@ public class CombatAssistant { fireProjectileNpc(); } - if (usingOtherRangeWeapons && !c.usingMagic && !usingBow) { // knives, + if (c.usingRangeWeapon && !c.usingMagic && !c.usingBow) { // knives, // darts, // etc // hit @@ -813,7 +867,7 @@ public class CombatAssistant { } } - if (usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal + if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal // bow // degrading if (c.playerEquipment[c.playerWeapon] == 4212) { // new @@ -871,13 +925,13 @@ public class CombatAssistant { int equippedWeapon = c.playerEquipment[c.playerWeapon]; if (PlayerHandler.players[i] != null) { - - if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { - c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans."); - resetPlayerAttack(); - c.stopMovement(); - return; - } + + if (c.usingMagic && MagicData.MAGIC_SPELLS[c.spellId][0] == 1171) { + c.getActionSender().sendMessage("This spell only affects skeletons, zombies, ghosts and shades, not humans."); + resetPlayerAttack(); + c.stopMovement(); + return; + } if (CastleWars.isInCw(PlayerHandler.players[i]) && CastleWars.isInCw(c)) { @@ -935,9 +989,7 @@ public class CombatAssistant { c.specEffect = 0; c.usingRangeWeapon = false; c.rangeItemUsed = 0; - boolean usingBow = false; boolean usingArrows = false; - boolean usingOtherRangeWeapons = false; boolean usingCross = c.playerEquipment[c.playerWeapon] == 9185; c.projectileStage = 0; if (c.absX == PlayerHandler.players[i].absX @@ -953,7 +1005,7 @@ public class CombatAssistant { if (!c.usingMagic) { for (int bowId : RangeData.BOWS) { if (c.playerEquipment[c.playerWeapon] == bowId) { - usingBow = true; + c.usingBow = true; for (int arrowId : RangeData.ARROWS) { if (c.playerEquipment[c.playerArrows] == arrowId) { usingArrows = true; @@ -964,7 +1016,7 @@ public class CombatAssistant { for (int otherRangeId : RangeData.OTHER_RANGE_WEAPONS) { if (c.playerEquipment[c.playerWeapon] == otherRangeId) { - usingOtherRangeWeapons = true; + c.usingRangeWeapon = true; } } } @@ -975,7 +1027,7 @@ public class CombatAssistant { if (c.spellId > 0) { c.usingMagic = true; } - c.attackTimer = getAttackDelay(); + if (c.duelRule[9]) { boolean canUseWeapon = false; @@ -991,12 +1043,13 @@ public class CombatAssistant { return; } } - if (c.duelRule[2] && (usingBow || usingOtherRangeWeapons)) { + + if (c.duelRule[2] && (c.usingBow || c.usingRangeWeapon)) { c.getActionSender().sendMessage( "Range has been disabled in this duel!"); return; } - if (c.duelRule[3] && !usingBow && !usingOtherRangeWeapons + if (c.duelRule[3] && !c.usingBow && !c.usingRangeWeapon && !c.usingMagic) { c.getActionSender().sendMessage( "Melee has been disabled in this duel!"); @@ -1010,34 +1063,40 @@ public class CombatAssistant { return; } + boolean projectile = c.usingBow || c.usingMagic || c.usingRangeWeapon; + + if (projectile && !PathFinder.isProjectilePathClear(c.absX, c.absY, c.heightLevel, PlayerHandler.players[i].absX, PlayerHandler.players[i].absY)) { + return; + } + if (!c.goodDistance(c.getX(), c.getY(), PlayerHandler.players[i].getX(), PlayerHandler.players[i].getY(), 4) - && usingOtherRangeWeapons - && !usingBow + && c.usingRangeWeapon + && !c.usingBow && !c.usingMagic || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 2) - && !usingOtherRangeWeapons + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 2) + && !c.usingRangeWeapon && RangeData.usingHally(c) - && !usingBow + && !c.usingBow && !c.usingMagic || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), - getRequiredDistance()) - && !usingOtherRangeWeapons + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), + getRequiredDistance()) + && !c.usingRangeWeapon && !RangeData.usingHally(c) - && !usingBow + && !c.usingBow && !c.usingMagic || !c.goodDistance(c.getX(), c.getY(), - PlayerHandler.players[i].getX(), - PlayerHandler.players[i].getY(), 10) - && (usingBow || c.usingMagic)) { + PlayerHandler.players[i].getX(), + PlayerHandler.players[i].getY(), 10) + && (c.usingBow || c.usingMagic)) { // c.getPacketDispatcher().sendMessage("Setting attack timer to 1"); - c.attackTimer = 1; - if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons + //c.attackTimer = 1; + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon && c.freezeTimer > 0) { resetPlayerAttack(); } @@ -1046,7 +1105,7 @@ public class CombatAssistant { if (!usingCross && !usingArrows - && usingBow + && c.usingBow && (c.playerEquipment[c.playerWeapon] < 4212 || c.playerEquipment[c.playerWeapon] > 4223) && !c.usingMagic) { c.getActionSender().sendMessage( @@ -1056,7 +1115,7 @@ public class CombatAssistant { return; } if (RangeData.correctBowAndArrows(c) < c.playerEquipment[c.playerArrows] - && Constants.CORRECT_ARROWS && usingBow + && Constants.CORRECT_ARROWS && c.usingBow && !RangeData.usingCrystalBow(c) && c.playerEquipment[c.playerWeapon] != 9185 && !c.usingMagic) { @@ -1065,12 +1124,12 @@ public class CombatAssistant { c.getActionSender().sendMessage( "You can't use " + ItemAssistant.getItemName( - c.playerEquipment[c.playerArrows]) - .toLowerCase() + c.playerEquipment[c.playerArrows]) + .toLowerCase() + "s with a " + ItemAssistant.getItemName( - c.playerEquipment[c.playerWeapon]) - .toLowerCase() + "."); + c.playerEquipment[c.playerWeapon]) + .toLowerCase() + "."); c.stopMovement(); resetPlayerAttack(); return; @@ -1084,25 +1143,11 @@ public class CombatAssistant { return; } - if (usingBow || c.usingMagic || usingOtherRangeWeapons + if (c.usingBow || c.usingMagic || c.usingRangeWeapon || RangeData.usingHally(c)) { c.stopMovement(); } - /** - * Player projectiles - */ - if(PlayerAssistant.pathBlocked(c, o)) { - if((c.usingBow || c.usingMagic || usingOtherRangeWeapons || c.autocasting)) { - PathFinder.getPathFinder().findRoute(c, o.absX, o.absY, true, 8, 8); - if(!c.usingBow && !c.usingMagic && !usingOtherRangeWeapons && !c.autocasting) { - PathFinder.getPathFinder().findRoute(c, o.absX, o.absY, true, 1, 1); - c.attackTimer = 0; - return; - } - } - } - if (!checkMagicReqs(c.spellId)) { c.stopMovement(); resetPlayerAttack(); @@ -1116,7 +1161,7 @@ public class CombatAssistant { && FightPits.getState(c) == null) { if (!c.attackedPlayers.contains(c.playerIndex) && !PlayerHandler.players[c.playerIndex].attackedPlayers - .contains(c.playerId)) { + .contains(c.playerId)) { c.attackedPlayers.add(c.playerIndex); c.isSkulled = true; c.skullTimer = Constants.SKULL_TIMER; @@ -1183,24 +1228,26 @@ public class CombatAssistant { 0); } } + + c.attackTimer = getAttackDelay(); PlayerHandler.players[i].underAttackBy = c.playerId; PlayerHandler.players[i].logoutDelay = System.currentTimeMillis(); PlayerHandler.players[i].singleCombatDelay = System.currentTimeMillis(); PlayerHandler.players[i].killerId = c.playerId; c.lastArrowUsed = 0; c.rangeItemUsed = 0; - if (!usingBow && !c.usingMagic && !usingOtherRangeWeapons) { // melee - // hit - // delay; + if (!c.usingBow && !c.usingMagic && !c.usingRangeWeapon) { // melee + // hit + // delay; c.followId = PlayerHandler.players[c.playerIndex].playerId; - c.getPlayerAssistant().followPlayer(); + //c.getPlayerAssistant().followPlayer(); c.hitDelay = getHitDelay(); c.delayedDamage = Misc.random(meleeMaxHit()); c.projectileStage = 0; c.oldPlayerIndex = i; } - if (usingBow && !usingOtherRangeWeapons && !c.usingMagic + if (c.usingBow && !c.usingRangeWeapon && !c.usingMagic || usingCross) { // range hit delay if (c.playerEquipment[c.playerWeapon] >= 4212 && c.playerEquipment[c.playerWeapon] <= 4223) { @@ -1219,7 +1266,7 @@ public class CombatAssistant { c.usingBow = true; c.followId = PlayerHandler.players[c.playerIndex].playerId; - c.getPlayerAssistant().followPlayer(); + //c.getPlayerAssistant().followPlayer(); c.lastWeaponUsed = c.playerEquipment[c.playerWeapon]; c.lastArrowUsed = c.playerEquipment[c.playerArrows]; c.gfx100(RangeData.getRangeStartGFX(c)); @@ -1229,12 +1276,12 @@ public class CombatAssistant { fireProjectilePlayer(); } - if (usingOtherRangeWeapons) { // knives, darts, etc hit delay + if (c.usingRangeWeapon) { // knives, darts, etc hit delay c.rangeItemUsed = c.playerEquipment[c.playerWeapon]; c.getItemAssistant().deleteEquipment(); c.usingRangeWeapon = true; c.followId = PlayerHandler.players[c.playerIndex].playerId; - c.getPlayerAssistant().followPlayer(); + //c.getPlayerAssistant().followPlayer(); c.gfx100(RangeData.getRangeStartGFX(c)); if (c.fightMode == 2) { c.attackTimer--; @@ -1307,42 +1354,42 @@ public class CombatAssistant { } } - if (usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal - // bow - // degrading + if (c.usingBow && Constants.CRYSTAL_BOW_DEGRADES) { // crystal + // bow + // degrading if (c.playerEquipment[c.playerWeapon] == 4212) { // new - // crystal - // bow - // becomes - // full - // bow - // on - // the - // first - // shot + // crystal + // bow + // becomes + // full + // bow + // on + // the + // first + // shot c.getItemAssistant().wearItem(4214, 1, 3); } if (c.crystalBowArrowCount >= 250) { switch (c.playerEquipment[c.playerWeapon]) { - case 4223: // 1/10 bow - c.getItemAssistant().wearItem(-1, 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow has fully degraded."); - if (!c.getItemAssistant().addItem(4207, 1)) { - Server.itemHandler.createGroundItem(c, 4207, - c.getX(), c.getY(), 1, c.getId()); - } - c.crystalBowArrowCount = 0; - break; + case 4223: // 1/10 bow + c.getItemAssistant().wearItem(-1, 1, 3); + c.getActionSender().sendMessage( + "Your crystal bow has fully degraded."); + if (!c.getItemAssistant().addItem(4207, 1)) { + Server.itemHandler.createGroundItem(c, 4207, + c.getX(), c.getY(), 1, c.getId()); + } + c.crystalBowArrowCount = 0; + break; - default: - c.getItemAssistant().wearItem( - ++c.playerEquipment[c.playerWeapon], 1, 3); - c.getActionSender().sendMessage( - "Your crystal bow degrades."); - c.crystalBowArrowCount = 0; - break; + default: + c.getItemAssistant().wearItem( + ++c.playerEquipment[c.playerWeapon], 1, 3); + c.getActionSender().sendMessage( + "Your crystal bow degrades."); + c.crystalBowArrowCount = 0; + break; } } } diff --git a/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java b/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java index 8b93151b..4221b5e4 100644 --- a/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java +++ b/2006Redone Server/src/redone/game/content/combat/magic/MagicTeleports.java @@ -51,31 +51,37 @@ public class MagicTeleports { public static final boolean MAGIC_LEVEL_REQUIRED = true, RUNES_REQUIRED = true; + public static boolean teleportCheck(Client player) { + if (player.teleTimer > 0) { + return false; + } + return true; + } + public static void paddewwaTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 54) { - player.getActionSender().sendMessage("You need a magic level of 54 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}}); - player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(64, player.playerMagic); + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); + return; } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 54) { + player.getActionSender().sendMessage("You need a magic level of 54 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 1}, {AIR_RUNE, 1}}); + player.getPlayerAssistant().startTeleport(PADDEWWA_X + Misc.random(2), PADDEWWA_Y - Misc.random(2), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(64, player.playerMagic); + } public static void senntisenTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { return; } RandomEventHandler.addRandom(player); @@ -93,12 +99,11 @@ public class MagicTeleports { } CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 1}}); player.getPlayerAssistant().startTeleport(SENNTISTEN_X + Misc.random(1), SENNTISTEN_Y - Misc.random(1), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); player.getPlayerAssistant().addSkillXP(70, player.playerMagic); } public static void kharyllTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { return; } RandomEventHandler.addRandom(player); @@ -116,60 +121,57 @@ public class MagicTeleports { } CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 1}}); player.getPlayerAssistant().startTeleport(KHARYRLL_X, KHARYRLL_Y, 0, "ancient"); - player.lastCast = System.currentTimeMillis(); player.getPlayerAssistant().addSkillXP(76, player.playerMagic); } public static void lassarTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 72) { - player.getActionSender().sendMessage("You need a magic level of 72 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}}); - player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(82, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 72) { + player.getActionSender().sendMessage("You need a magic level of 72 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 4}}); + player.getPlayerAssistant().startTeleport(LASSAR_X + Misc.random(2), LASSAR_Y - Misc.random(2), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(82, player.playerMagic); + } public static void dareeyakTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 78) { - player.getActionSender().sendMessage("You need a magic level of 78 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}}); - player.getPlayerAssistant().startTeleport( - DAREEYAK_X + Misc.random(1), - DAREEYAK_Y - Misc.random(1), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(88, player.playerMagic); + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); + return; } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 78) { + player.getActionSender().sendMessage("You need a magic level of 78 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 3}, {AIR_RUNE, 2}}); + player.getPlayerAssistant().startTeleport( + DAREEYAK_X + Misc.random(1), + DAREEYAK_Y - Misc.random(1), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(88, player.playerMagic); + } public static void carrallangarTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { return; } RandomEventHandler.addRandom(player); @@ -189,12 +191,11 @@ public class MagicTeleports { } CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {SOUL_RUNE, 2}}); player.getPlayerAssistant().startTeleport(CARRALLANGAR_X + Misc.random(2), CARRALLANGAR_Y - Misc.random(2), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); player.getPlayerAssistant().addSkillXP(94, player.playerMagic); } public static void annakarlTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { return; } RandomEventHandler.addRandom(player); @@ -212,224 +213,214 @@ public class MagicTeleports { } CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {BLOOD_RUNE, 2}}); player.getPlayerAssistant().startTeleport(ANNAKARL_X + Misc.random(1), ANNAKARL_Y - Misc.random(1), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); player.getPlayerAssistant().addSkillXP(100, player.playerMagic); } public static void ghorrockTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 96) { - player.getActionSender().sendMessage("You need a magic level of 96 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}}); - player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3), - GHORROCK_Y - Misc.random(3), 0, "ancient"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(106, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 96) { + player.getActionSender().sendMessage("You need a magic level of 96 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 8}}); + player.getPlayerAssistant().startTeleport(GHORROCK_X + Misc.random(3), + GHORROCK_Y - Misc.random(3), 0, "ancient"); + player.getPlayerAssistant().addSkillXP(106, player.playerMagic); + } public static void varrockTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 25) { - player.getActionSender().sendMessage("You need a magic level of 25 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); + return; } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 25) { + player.getActionSender().sendMessage("You need a magic level of 25 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {FIRE_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(VARROCK_X + Misc.random(2), VARROCK_Y - Misc.random(2), 0, "modern"); + player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + } public static void lumbridgeTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 32) { - player.getActionSender().sendMessage("You need a magic level of 32 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); + return; } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 32) { + player.getActionSender().sendMessage("You need a magic level of 32 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {EARTH_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(LUMBRIDGE_X, LUMBRIDGE_Y, 0, "modern"); + player.getPlayerAssistant().addSkillXP(35, player.playerMagic); + } public static void faladorTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 37) { - player.getActionSender().sendMessage("You need a magic level of 37 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}}); - player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(48, player.playerMagic); + /*if (!teleportCheck(player)) { + return; + }*/ + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); + return; } + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 37) { + player.getActionSender().sendMessage("You need a magic level of 37 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {WATER_RUNE, 1}, {AIR_RUNE, 3}}); + player.getPlayerAssistant().startTeleport(FALADOR_X + Misc.random(4), FALADOR_Y - Misc.random(4), 0, "modern"); + player.getPlayerAssistant().addSkillXP(48, player.playerMagic); + } public static void camelotTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 45) { - player.getActionSender().sendMessage("You need a magic level of 45 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}}); - // 2757, 3479 - player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 45) { + player.getActionSender().sendMessage("You need a magic level of 45 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 1}, {AIR_RUNE, 5}}); + // 2757, 3479 + player.getPlayerAssistant().startTeleport(CAMELOT_X + Misc.random(1), CAMELOT_Y - Misc.random(1), 0, "modern"); + player.getPlayerAssistant().addSkillXP(55.5, player.playerMagic); + } public static void ardougneTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 51) { - player.getActionSender().sendMessage("You need a magic level of 51 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4), - ARDOUGNE_Y - Misc.random(4), 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(61, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 51) { + player.getActionSender().sendMessage("You need a magic level of 51 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {WATER_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(ARDOUGNE_X + Misc.random(4), + ARDOUGNE_Y - Misc.random(4), 0, "modern"); + player.getPlayerAssistant().addSkillXP(61, player.playerMagic); + } public static void watchTowerTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 58) { - player.getActionSender().sendMessage( - "You need a magic level of 58 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(68, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 58) { + player.getActionSender().sendMessage( + "You need a magic level of 58 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {EARTH_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(WATCHTOWER_X, WATCHTOWER_Y, 1, "modern"); + player.getPlayerAssistant().addSkillXP(68, player.playerMagic); + } public static void trollhiemTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) { + player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); return; } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}})) { - player.getActionSender().sendMessage("You don't have the required runes to cast this spell."); - return; - } - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 61) { - player.getActionSender().sendMessage("You need a magic level of 61 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}}); - player.getPlayerAssistant().startTeleport(2892 + Misc.random(2), - 3679 - Misc.random(2), 0, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(68, player.playerMagic); } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 61) { + player.getActionSender().sendMessage("You need a magic level of 61 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}}); + player.getPlayerAssistant().startTeleport(2892 + Misc.random(2), + 3679 - Misc.random(2), 0, "modern"); + player.getPlayerAssistant().addSkillXP(68, player.playerMagic); + } public static void apeAtollTeleport(Client player) { - if (System.currentTimeMillis() - player.lastCast < 5000) { - return; - } - RandomEventHandler.addRandom(player); - if (RUNES_REQUIRED) { - if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) { - player.getActionSender().sendMessage("You don't have the required items to cast this spell."); - return; - } - } - if (player.questPoints < 19) { - player.getActionSender().sendMessage("You need " + 19 + " quest points to teleport here."); - return; - } - if (MAGIC_LEVEL_REQUIRED) { - if (player.playerLevel[player.playerMagic] < 64) { - player.getActionSender().sendMessage("You need a magic level of 64 to cast this spell."); - return; - } - } - CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}); - player.getItemAssistant().deleteItem2(BANANA, 1); - player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern"); - player.lastCast = System.currentTimeMillis(); - player.getPlayerAssistant().addSkillXP(76, player.playerMagic); + if (!teleportCheck(player)) { + return; + } + RandomEventHandler.addRandom(player); + if (RUNES_REQUIRED) { + if (!CastRequirements.hasRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}) || !player.getItemAssistant().playerHasItem(BANANA, 1)) { + player.getActionSender().sendMessage("You don't have the required items to cast this spell."); + return; } + } + if (player.questPoints < 19) { + player.getActionSender().sendMessage("You need " + 19 + " quest points to teleport here."); + return; + } + if (MAGIC_LEVEL_REQUIRED) { + if (player.playerLevel[player.playerMagic] < 64) { + player.getActionSender().sendMessage("You need a magic level of 64 to cast this spell."); + return; + } + } + CastRequirements.deleteRunes(player, new int[][]{{LAW_RUNE, 2}, {FIRE_RUNE, 2}, {WATER_RUNE, 2}}); + player.getItemAssistant().deleteItem2(BANANA, 1); + player.getPlayerAssistant().startTeleport(2798 + Misc.random(1), 2798 - Misc.random(1), 1, "modern"); + player.getPlayerAssistant().addSkillXP(76, player.playerMagic); + } } \ No newline at end of file diff --git a/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java b/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java index 74b10735..b4c4be03 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java +++ b/2006Redone Server/src/redone/game/globalworldobjects/GateHandler.java @@ -36,6 +36,7 @@ public class GateHandler { private static void openDoubleGate(Client player, int objectId, int objectId2, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int face1, int face2) { if (isGate(objectId) && isGate(objectId2) && gateAmount == 0) { + // open gate from default map object spawnGate(-1, x3, y3, player.heightLevel, 0); spawnGate(-1, x4, y4, player.heightLevel, 0); spawnGate(objectId, x1, y1, player.heightLevel, face1); @@ -47,6 +48,7 @@ public class GateHandler { ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, gateTicks); } else if (isGate(objectId) && isGate(objectId2) && gateAmount == 2) { + // close gate back to default ObjectManager.doubleGateTicks(player, objectId, x3, y3, x1, y1, x2, y2, player.heightLevel, face2, 0); ObjectManager.doubleGateTicks(player, objectId2, x4, y4, x1, y1, x2, y2, player.heightLevel, face2, 0); } diff --git a/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java b/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java index d8e074ce..57b04c84 100644 --- a/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java +++ b/2006Redone Server/src/redone/game/globalworldobjects/PassDoor.java @@ -20,13 +20,17 @@ public class PassDoor { client.getActionSender().sendMessage("You must wait longer to pass this door."); return false; } - client.getActionSender().object(objectType, client.objectX, client.objectY, height, face1, type); + + final int objX = client.objectX; + final int objY = client.objectY; + + client.getActionSender().object(objectType, objX, objY, height, face1, type); client.getPlayerAssistant().walkTo(x, y); client.stopPlayer = true; CycleEventHandler.getSingleton().addEvent(client, new CycleEvent() { @Override public void execute(CycleEventContainer container) { - client.getActionSender().object(objectType, client.objectX, client.objectY, height, face2, type); + client.getActionSender().object(objectType, objX, objY, height, face2, type); container.stop(); } @@ -96,6 +100,7 @@ public class PassDoor { if (Position.checkPosition(client, 3108, 3162, 0)) { passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0); } else if (Position.checkPosition(client, 3107, 3163, 0)) { + // wizz tower passThroughDoor(client, objectType, 2, 1, 9, -1, -1, 0); } else { if (client.heightLevel == 0) { diff --git a/2006Redone Server/src/redone/game/players/Client.java b/2006Redone Server/src/redone/game/players/Client.java index ae99e776..8cb12cad 100644 --- a/2006Redone Server/src/redone/game/players/Client.java +++ b/2006Redone Server/src/redone/game/players/Client.java @@ -26,6 +26,7 @@ import redone.game.content.combat.magic.MagicTeleports; import redone.game.content.combat.prayer.PrayerData; import redone.game.content.combat.prayer.PrayerDrain; import redone.game.content.combat.range.DwarfCannon; +import redone.game.content.combat.range.RangeData; import redone.game.content.consumables.Food; import redone.game.content.consumables.Potions; import redone.game.content.guilds.impl.RangersGuild; @@ -62,6 +63,7 @@ import redone.game.items.impl.PotionMixing; import redone.game.items.impl.Teles; import redone.game.items.impl.Weight; import redone.game.npcs.NpcActions; +import redone.game.npcs.NpcHandler; import redone.game.objects.ObjectsActions; import redone.game.players.antimacro.AntiBotting; import redone.game.shops.ShopAssistant; @@ -394,6 +396,10 @@ public class Client extends Player { currentTask = CycleEventHandler.getSingleton().addEvent(this, event, ticksBetweenExecution); } + public CycleEventContainer getCurrentTask() { + return currentTask; + } + public void endCurrentTask() { if (currentTask != null && currentTask.isRunning()) { currentTask.stop(); @@ -1069,11 +1075,11 @@ public class Client extends Player { teleTimer = 0; getPlayerAssistant().changeLocation(); } - if (teleTimer == 5) { + if (teleTimer == 4) { teleTimer--; getPlayerAssistant().processTeleport(); } - if (teleTimer == 9 && teleGfx > 0) { + if (teleTimer == 7 && teleGfx > 0) { teleTimer--; gfx100(teleGfx); } @@ -1091,6 +1097,9 @@ public class Client extends Player { } } + combatAssistant.attackingNpcTick(); + combatAssistant.attackingPlayerTick(); + if (attackTimer > 0) { attackTimer--; } diff --git a/2006Redone Server/src/redone/game/players/Player.java b/2006Redone Server/src/redone/game/players/Player.java index b07b1d0b..e2a77363 100644 --- a/2006Redone Server/src/redone/game/players/Player.java +++ b/2006Redone Server/src/redone/game/players/Player.java @@ -30,7 +30,7 @@ public abstract class Player { {2035, 0} }; - public long lastCast = 0, homeTele, lastDesert, eventTimer, lastRunRecovery, + public long homeTele, lastDesert, eventTimer, lastRunRecovery, lastButton, lastFire, lastLight, muteTime, waitTime, miscTimer, ladderTimer, webSlashDelay, climbDelay, lastReport = 0, lastPlayerMove, lastPoison, lastPoisonSip, poisonImmune, lastSpear, diff --git a/2006Redone Server/src/redone/game/players/PlayerAssistant.java b/2006Redone Server/src/redone/game/players/PlayerAssistant.java index 14cc4198..cd218ad2 100644 --- a/2006Redone Server/src/redone/game/players/PlayerAssistant.java +++ b/2006Redone Server/src/redone/game/players/PlayerAssistant.java @@ -555,7 +555,7 @@ public class PlayerAssistant { } } for (int i = 0; i < path.length; i++) { - if (!Region.getClipping(path[i][0], path[i][1], path[i][2], path[i][3], path[i][4]) && !Region.blockedShot(path[i][0], path[i][1], path[i][2])) { + if (!Region.getClipping(path[i][0], path[i][1], path[i][2], path[i][3], path[i][4])/* && !Region.blockedShot(path[i][0], path[i][1], path[i][2])*/) { return true; } } @@ -641,11 +641,11 @@ public class PlayerAssistant { return false; } } - for (int i = 0; i < path.length; i++) { + /*for (int i = 0; i < path.length; i++) { if (!Region.blockedShot(path[i][0], path[i][1], path[i][2])) { return true; } - } + }*/ return false; } @@ -756,9 +756,6 @@ public class PlayerAssistant { "You are teleblocked and can't teleport."); return; } - if (Constants.SOUND) { - player.getActionSender().sendSound(SoundList.TELEPORT, 100, 0); - } if (SkillHandler.isSkilling(player)) { player.getActionSender().sendMessage( "You can't teleport while skilling!"); @@ -782,9 +779,12 @@ public class PlayerAssistant { player.teleHeight = height; // client.resetShaking(); player.isTeleporting = true; + if (Constants.SOUND) { + player.getActionSender().sendSound(SoundList.TELEPORT, 100, 700); + } if (teleportType.equalsIgnoreCase("modern")) { - player.startAnimation(714); - player.teleTimer = 11; + player.startAnimation(714, 10); + player.teleTimer = 10; player.teleGfx = 308; player.teleEndAnimation = 715; } @@ -2081,6 +2081,42 @@ public class PlayerAssistant { player.newLocation = 0; } + public int[] getFollowLocation(int x, int y) { + int[] nonDiags = {0, 2, 4, 6}; + int[][] nodes = { + { x + Misc.directionDeltaX[nonDiags[0]], y + Misc.directionDeltaY[nonDiags[0]] }, + { x + Misc.directionDeltaX[nonDiags[1]], y + Misc.directionDeltaY[nonDiags[1]] }, + { x + Misc.directionDeltaX[nonDiags[2]], y + Misc.directionDeltaY[nonDiags[2]] }, + { x + Misc.directionDeltaX[nonDiags[3]], y + Misc.directionDeltaY[nonDiags[3]] } + }; + + int bestX = 0; + int bestY = 0; + double bestDist = 99999; + + boolean projectile = player.usingMagic || player.usingBow || player.usingRangeWeapon; + + for (int i = 0; i < nodes.length; i++) { + double dist = Misc.distance(player.absX, player.absY, nodes[i][0], nodes[i][1]); + if (dist < bestDist) { + if (PathFinder.getPathFinder().accessible(player.absX, player.absY, player.heightLevel, nodes[i][0], nodes[i][1])) { + if (!projectile || PathFinder.isProjectilePathClear(nodes[i][0], nodes[i][1], player.heightLevel, x, y)) { + bestDist = dist; + bestX = nodes[i][0]; + bestY = nodes[i][1]; + } + } + } + } + + if (bestX == 0 && bestY == 0) { + bestX = x; + bestY = y; + } + + return new int[] {bestX, bestY}; + } + public void followPlayer() { if (PlayerHandler.players[player.followId] == null || PlayerHandler.players[player.followId].isDead) { @@ -2097,7 +2133,7 @@ public class PlayerAssistant { int otherX = PlayerHandler.players[player.followId].getX(); int otherY = PlayerHandler.players[player.followId].getY(); - boolean sameSpot = player.absX == otherX && player.absY == otherY; + /*boolean sameSpot = player.absX == otherX && player.absY == otherY; if (sameSpot) stepAway(); @@ -2115,7 +2151,7 @@ public class PlayerAssistant { || player.autocasting || player.spellId > 0) && mageDistance; boolean playerRanging = player.usingRangeWeapon && rangeWeaponDistance; - boolean playerBowOrCross = player.usingBow && bowDistance; + boolean playerBowOrCross = player.usingBow && bowDistance;*/ if (!player.goodDistance(otherX, otherY, player.getX(), player.getY(), 25)) { @@ -2123,8 +2159,12 @@ public class PlayerAssistant { resetFollow(); return; } + + int[] follow = getFollowLocation(otherX, otherY); player.faceUpdate(player.followId + 32768); - if (!sameSpot) { + PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); + + /*if (!sameSpot) { if (player.playerIndex > 0 && !player.usingSpecial && player.inWild()) { if (player.usingSpecial && (playerRanging || playerBowOrCross)) { @@ -2194,30 +2234,28 @@ public class PlayerAssistant { playerWalk(otherX - 1, otherY + 1); } } - player.faceUpdate(player.followId + 32768); + player.faceUpdate(player.followId + 32768);*/ } public void followNpc() { - if (NpcHandler.npcs[player.followId] == null - || NpcHandler.npcs[player.followId].isDead) { - resetFollow(); - return; - } Npc npc = NpcHandler.npcs[player.followId2]; - if (npc.isDead) { + if (npc == null || npc.isDead) { return; } - int otherX = NpcHandler.npcs[player.followId2].getX(); - int otherY = NpcHandler.npcs[player.followId2].getY(); - if (!player.goodDistance(otherX, otherY, player.getX(), player.getY(), - 25)) { + int x = NpcHandler.npcs[player.followId2].getX(); + int y = NpcHandler.npcs[player.followId2].getY(); + if (!player.goodDistance(x, y, player.getX(), player.getY(),25)) { player.followId2 = 0; resetFollow(); return; } - player.faceUpdate(player.followId2 + 32768); - if (otherX == player.absX && otherY == player.absY) { + + int[] follow = getFollowLocation(x, y); + player.faceUpdate(player.followId2); + PathFinder.getPathFinder().findRoute(player, follow[0], follow[1], false, 1, 1); + + /*if (otherX == player.absX && otherY == player.absY) { int r = Misc.random(3); switch (r) { case 0: @@ -2251,8 +2289,7 @@ public class PlayerAssistant { } else if (otherX > player.getX() && otherY < player.getY()) { playerWalk(otherX - 1, otherY + 1); } - } - player.faceUpdate(player.followId2 + 32768); + }*/ } public int getRunningMove(int i, int j) { diff --git a/2006Redone Server/src/redone/game/players/PlayerHandler.java b/2006Redone Server/src/redone/game/players/PlayerHandler.java index 39d786d3..d9858b19 100644 --- a/2006Redone Server/src/redone/game/players/PlayerHandler.java +++ b/2006Redone Server/src/redone/game/players/PlayerHandler.java @@ -4,6 +4,7 @@ import java.net.InetSocketAddress; import redone.Constants; import redone.Server; +import redone.event.CycleEventHandler; import redone.game.content.minigames.castlewars.CastleWars; import redone.game.npcs.Npc; import redone.game.npcs.NpcHandler; @@ -158,19 +159,21 @@ public class PlayerHandler { continue; } - players[i].preProcessing(); + while (players[i].processQueuedPackets()) { ; } + players[i].process(); players[i].postProcessing(); players[i].getNextPlayerMovement(); - + players[i].preProcessing(); } catch (Exception e) { e.printStackTrace(); } } + for (int i = 0; i < PlayerHandler.players.length; i++) { if (players[i] == null || !players[i].isActive) { continue; diff --git a/2006Redone Server/src/redone/net/ActionSender.java b/2006Redone Server/src/redone/net/ActionSender.java index ac4f6e36..58495920 100644 --- a/2006Redone Server/src/redone/net/ActionSender.java +++ b/2006Redone Server/src/redone/net/ActionSender.java @@ -244,21 +244,8 @@ public class ActionSender { public ActionSender frame174(int sound, int vol, int delay) { player.outStream.createFrame(174); player.outStream.writeWord(sound); - player.outStream.writeByte(vol); player.outStream.writeWord(delay); - player.updateRequired = true; - player.appearanceUpdateRequired = true; - return this; - } - - public ActionSender frame174(int id, int type, int delay, int volume) { - if (player.outStream != null && player != null && id != -1) { - player.outStream.createFrame(174); - player.outStream.writeWord(id); - player.outStream.writeWord(delay); - player.outStream.writeWord(volume); - player.flushOutStream(); - } + player.outStream.writeByte(vol); return this; } @@ -567,8 +554,6 @@ public class ActionSender { public ActionSender sendSound(int id, int volume, int delay) { frame174(id, volume, delay); - player.updateRequired = true; - player.appearanceUpdateRequired = true; return this; } diff --git a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java b/2006Redone Server/src/redone/net/packets/impl/ClickObject.java index ea67e104..6252414b 100644 --- a/2006Redone Server/src/redone/net/packets/impl/ClickObject.java +++ b/2006Redone Server/src/redone/net/packets/impl/ClickObject.java @@ -43,7 +43,7 @@ public class ClickObject implements PacketType { int[] size = object.getObjectSize(); - player.startCurrentTask(1, new CycleEvent() { + CycleEvent objectWalkToEvent = new CycleEvent() { @Override public void execute(CycleEventContainer container) { if (objectX != player.objectX || objectY != player.objectY || objectId != player.objectId) { @@ -66,7 +66,10 @@ public class ClickObject implements PacketType { @Override public void stop() {} - }); + }; + + player.startCurrentTask(1, objectWalkToEvent); + objectWalkToEvent.execute(player.getCurrentTask()); // cheap hax for instant event execution, since we don't support it } @Override diff --git a/2006Redone Server/src/redone/util/Misc.java b/2006Redone Server/src/redone/util/Misc.java index 063738a6..4d76c102 100644 --- a/2006Redone Server/src/redone/util/Misc.java +++ b/2006Redone Server/src/redone/util/Misc.java @@ -19,6 +19,10 @@ public class Misc { return (int) Math.random() * range; } + public static double distance(int x1, int y1, int x2, int y2 ) { + return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)); + } + public static boolean goodDistance(int objectX, int objectY, int playerX, int playerY, int distance) { return objectX - playerX <= distance && objectX - playerX >= -distance && objectY - playerY <= distance && objectY - playerY >= -distance; } @@ -255,6 +259,20 @@ public class Misc { '&', '*', '\\', '\'', '@', '#', '+', '=', '\243', '$', '%', '"', '[', ']' }; + public static int[] delta(int x1, int y1, int x2, int y2) { + return new int[] {x2 - x1, y2 - y1}; + } + + public static int directionFromDelta(int x, int y) { + for (int a = 0; a < directionDeltaX.length; a++) { + if (directionDeltaX[a] == x && directionDeltaY[a] == y) { + return xlateDirectionToClient[a]; + } + } + + throw new IllegalArgumentException(String.format("Cannot find direction %d %d", x, y)); + } + public static int direction(int srcX, int srcY, int x, int y) { double dx = (double) x - srcX, dy = (double) y - srcY; double angle = Math.atan(dy / dx); @@ -273,10 +291,8 @@ public class Misc { */ } - public static byte directionDeltaX[] = new byte[] { 0, 1, 1, 1, 0, -1, -1, - -1 }; - public static byte directionDeltaY[] = new byte[] { 1, 1, 0, -1, -1, -1, 0, - 1 }; + public static byte directionDeltaX[] = new byte[] { 0, 1, 1, 1, 0, -1, -1, -1 }; + public static byte directionDeltaY[] = new byte[] { 1, 1, 0, -1, -1, -1, 0, 1 }; public static byte xlateDirectionToClient[] = new byte[] { 1, 2, 4, 7, 6, 5, 3, 0 }; diff --git a/2006Redone Server/src/redone/world/ObjectManager.java b/2006Redone Server/src/redone/world/ObjectManager.java index e12d97d9..2bd8a11b 100644 --- a/2006Redone Server/src/redone/world/ObjectManager.java +++ b/2006Redone Server/src/redone/world/ObjectManager.java @@ -63,7 +63,9 @@ public class ObjectManager { }, ticks); } - public static void doubleGateTicks(final Client player, final int objectId, final int objectX, final int objectY, final int x1, final int y1, final int x2, final int y2, final int objectH, final int face, int ticks) { + public static void doubleGateTicks(final Client player, final int objectId, final int objectX, final int objectY, + final int x1, final int y1, final int x2, final int y2, + final int objectH, final int face, int ticks) { CycleEventHandler.getSingleton().addEvent(player, new CycleEvent() { @Override public void execute(CycleEventContainer container) { diff --git a/2006Redone Server/src/redone/world/clip/ObjectDef.java b/2006Redone Server/src/redone/world/clip/ObjectDef.java index 02326f7e..01dad46c 100644 --- a/2006Redone Server/src/redone/world/clip/ObjectDef.java +++ b/2006Redone Server/src/redone/world/clip/ObjectDef.java @@ -279,6 +279,10 @@ public final class ObjectDef { return aBoolean767; } + public boolean isUnshootable() { + return aBoolean757; + } + public boolean aBoolean736; public String name; public int anInt744; diff --git a/2006Redone Server/src/redone/world/clip/PathFinder.java b/2006Redone Server/src/redone/world/clip/PathFinder.java index aceddf5c..4a2f5175 100644 --- a/2006Redone Server/src/redone/world/clip/PathFinder.java +++ b/2006Redone Server/src/redone/world/clip/PathFinder.java @@ -3,6 +3,7 @@ package redone.world.clip; import java.util.LinkedList; import redone.game.players.Client; +import redone.util.Misc; public class PathFinder { @@ -209,6 +210,207 @@ public class PathFinder { } } + public int getRegionCoordinate(int x) { + return (x >> 3) - 6; + } + + public int getLocalCoordinate(int x) { + return x - 8 * getRegionCoordinate(x); + } + + public boolean accessible(int x, int y, int heightLevel, int destX, int destY) { + destX = destX - 8 * getRegionCoordinate(x); + destY = destY - 8 * getRegionCoordinate(y); + int[][] via = new int[104][104]; + int[][] cost = new int[104][104]; + LinkedList tileQueueX = new LinkedList(); + LinkedList tileQueueY = new LinkedList(); + for (int xx = 0; xx < 104; xx++) { + for (int yy = 0; yy < 104; yy++) { + cost[xx][yy] = 99999999; + } + } + int curX = getLocalCoordinate(x); + int curY = getLocalCoordinate(y); + via[curX][curY] = 99; + cost[curX][curY] = 0; + int tail = 0; + tileQueueX.add(curX); + tileQueueY.add(curY); + boolean foundPath = false; + int pathLength = 4000; + while (tail != tileQueueX.size() && tileQueueX.size() < pathLength) { + curX = tileQueueX.get(tail); + curY = tileQueueY.get(tail); + int curAbsX = getRegionCoordinate(x) * 8 + curX; + int curAbsY = getRegionCoordinate(y) * 8 + curY; + if (curX == destX && curY == destY) { + foundPath = true; + break; + } + tail = (tail + 1) % pathLength; + int thisCost = cost[curX][curY] + 1; + if (curY > 0 + && via[curX][curY - 1] == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY - 1); + via[curX][curY - 1] = 1; + cost[curX][curY - 1] = thisCost; + } + if (curX > 0 + && via[curX - 1][curY] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY); + via[curX - 1][curY] = 2; + cost[curX - 1][curY] = thisCost; + } + if (curY < 104 - 1 + && via[curX][curY + 1] == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX); + tileQueueY.add(curY + 1); + via[curX][curY + 1] = 4; + cost[curX][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && via[curX + 1][curY] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY); + via[curX + 1][curY] = 8; + cost[curX + 1][curY] = thisCost; + } + if (curX > 0 + && curY > 0 + && via[curX - 1][curY - 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY - 1, + heightLevel) & 0x128010e) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY - 1); + via[curX - 1][curY - 1] = 3; + cost[curX - 1][curY - 1] = thisCost; + } + if (curX > 0 + && curY < 104 - 1 + && via[curX - 1][curY + 1] == 0 + && (Region.getClipping(curAbsX - 1, curAbsY + 1, + heightLevel) & 0x1280138) == 0 + && (Region.getClipping(curAbsX - 1, curAbsY, heightLevel) & 0x1280108) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX - 1); + tileQueueY.add(curY + 1); + via[curX - 1][curY + 1] = 6; + cost[curX - 1][curY + 1] = thisCost; + } + if (curX < 104 - 1 + && curY > 0 + && via[curX + 1][curY - 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY - 1, + heightLevel) & 0x1280183) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY - 1, heightLevel) & 0x1280102) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY - 1); + via[curX + 1][curY - 1] = 9; + cost[curX + 1][curY - 1] = thisCost; + } + if (curX < 104 - 1 + && curY < 104 - 1 + && via[curX + 1][curY + 1] == 0 + && (Region.getClipping(curAbsX + 1, curAbsY + 1, + heightLevel) & 0x12801e0) == 0 + && (Region.getClipping(curAbsX + 1, curAbsY, heightLevel) & 0x1280180) == 0 + && (Region.getClipping(curAbsX, curAbsY + 1, heightLevel) & 0x1280120) == 0) { + tileQueueX.add(curX + 1); + tileQueueY.add(curY + 1); + via[curX + 1][curY + 1] = 12; + cost[curX + 1][curY + 1] = thisCost; + } + } + return foundPath; + } + + public static boolean isProjectilePathClear(int x0, int y0, int z, int x1, int y1) { + int deltaX = x1 - x0; + int deltaY = y1 - y0; + + double error = 0; + final double deltaError = Math.abs( + (deltaY) / (deltaX == 0 + ? ((double) deltaY) + : ((double) deltaX))); + + int x = x0; + int y = y0; + + int pX = x; + int pY = y; + + boolean incrX = x0 < x1; + boolean incrY = y0 < y1; + + while (true) { + if (x != x1) { + x += (incrX ? 1 : -1); + } + + if (y != y1) { + error += deltaError; + + if (error >= 0.5) { + y += (incrY ? 1 : -1); + error -= 1; + } + } + + if (!shootable(x, y, z, pX, pY)) { + return false; + } + + if (incrX && incrY + && x >= x1 && y >= y1) { + break; + } else if (!incrX && !incrY + && x <= x1 && y <= y1) { + break; + } else if (!incrX && incrY + && x <= x1 && y >= y1) { + break; + } else if (incrX && !incrY + && x >= x1 && y <= y1) { + break; + } + + pX = x; + pY = y; + } + + return true; + } + + private static boolean shootable(int x, int y, int z, int px, int py) { + if (x == px && y == py) { + return true; + } + + int[] delta1 = Misc.delta(x, y, px, py); + int[] delta2 = Misc.delta(px, py, x, y); + + int dir = Misc.directionFromDelta(delta1[0], delta1[1]); + int dir2 = Misc.directionFromDelta(delta2[0], delta2[1]); + + if (dir == -1 || dir2 == -1) { + return false; + } + + return Region.canMove(x, y, z, dir) && Region.canMove(px, py, z, dir2) + || Region.canShoot(x, y, z, dir) && Region.canShoot(px, py, z, dir2); + } + public int localize(int x, int mapRegion) { return x - 8 * mapRegion; } diff --git a/2006Redone Server/src/redone/world/clip/Region.java b/2006Redone Server/src/redone/world/clip/Region.java index 3c1bf51b..ff209f9e 100644 --- a/2006Redone Server/src/redone/world/clip/Region.java +++ b/2006Redone Server/src/redone/world/clip/Region.java @@ -24,10 +24,6 @@ public class Region { } return null; } - - public static boolean blockedShot(int x, int y, int z) { - return (getClipping(x, y, z) & 0x20000) == 0; - } public static Objects getObject(int id, int x, int y, int z) { Region r = getRegion(x, y); @@ -65,7 +61,121 @@ public class Region { } clips[height][x - regionAbsX][y - regionAbsY] |= shift; } - + + private void addProjectileClip(int x, int y, int height, int shift) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (projectileClips[height] == null) { + projectileClips[height] = new int[64][64]; + } + projectileClips[height][x - regionAbsX][y - regionAbsY] |= shift; + } + + public static boolean canMove(int x, int y, int z, int direction) { + if (direction == 6) { + if ((Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 3) { + if ((Region.getClipping(x - 1, y, z) & 0x1280108) == 0) { + return true; + } + } else if (direction == 1) { + if ((Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == 4) { + if ((Region.getClipping(x + 1, y, z) & 0x1280180) == 0) { + return true; + } + } else if (direction == 5) { + if ((Region.getClipping(x - 1, y - 1, z) & 0x128010e) == 0 + && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 + && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 0) { + if ((Region.getClipping(x - 1, y + 1, z) & 0x1280138) == 0 + && (Region.getClipping(x - 1, y, z) & 0x1280108) == 0 + && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == 7) { + if ((Region.getClipping(x + 1, y - 1, z) & 0x1280183) == 0 + && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 + && (Region.getClipping(x, y - 1, z) & 0x1280102) == 0) { + return true; + } + } else if (direction == 2) { + if ((Region.getClipping(x + 1, y + 1, z) & 0x12801e0) == 0 + && (Region.getClipping(x + 1, y, z) & 0x1280180) == 0 + && (Region.getClipping(x, y + 1, z) & 0x1280120) == 0) { + return true; + } + } else if (direction == -1) { + throw new IllegalArgumentException("Invalid direction: " + direction); + } + + return false; + } + + public static boolean canShoot(int x, int y, int z, int direction) { + if (direction == 0) { + return !projectileBlockedNorthWest(x, y, z) && !projectileBlockedNorth(x, y, z) + && !projectileBlockedWest(x, y, z); + } else if (direction == 1) { + return !projectileBlockedNorth(x, y, z); + } else if (direction == 2) { + return !projectileBlockedNorthEast(x, y, z) && !projectileBlockedNorth(x, y, z) + && !projectileBlockedEast(x, y, z); + } else if (direction == 3) { + return !projectileBlockedWest(x, y, z); + } else if (direction == 4) { + return !projectileBlockedEast(x, y, z); + } else if (direction == 5) { + return !projectileBlockedSouthWest(x, y, z) && !projectileBlockedSouth(x, y, z) + && !projectileBlockedWest(x, y, z); + } else if (direction == 6) { + return !projectileBlockedSouth(x, y, z); + } else if (direction == 7) { + return !projectileBlockedSouthEast(x, y, z) && !projectileBlockedSouth(x, y, z) + && !projectileBlockedEast(x, y, z); + } + return false; + } + + public static boolean projectileBlockedNorth(int x, int y, int z) { + return (getProjectileClipping(x, y + 1, z) & 0x1280120) != 0; + } + + public static boolean projectileBlockedEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y, z) & 0x1280180) != 0; + } + + public static boolean projectileBlockedSouth(int x, int y, int z) { + return (getProjectileClipping(x, y - 1, z) & 0x1280102) != 0; + } + + public static boolean projectileBlockedWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y, z) & 0x1280108) != 0; + } + + public static boolean projectileBlockedNorthEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y + 1, z) & 0x12801e0) != 0; + } + + public static boolean projectileBlockedNorthWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y + 1, z) & 0x1280138) != 0; + } + + public static boolean projectileBlockedSouthEast(int x, int y, int z) { + return (getProjectileClipping(x + 1, y - 1, z) & 0x1280183) != 0; + } + + public static boolean projectileBlockedSouthWest(int x, int y, int z) { + return (getProjectileClipping(x - 1, y - 1, z) & 0x128010e) != 0; + } + public static boolean canMove(int startX, int startY, int endX, int endY, int height, int xLength, int yLength) { int diffX = endX - startX; int diffY = endY - startY; @@ -149,6 +259,15 @@ public class Region { return clips[height][x - regionAbsX][y - regionAbsY]; } + private int getProjectileClip(int x, int y, int height) { + int regionAbsX = (id >> 8) * 64; + int regionAbsY = (id & 0xff) * 64; + if (projectileClips[height] == null) { + return 0; + } + return projectileClips[height][x - regionAbsX][y - regionAbsY]; + } + private static void addClipping(int x, int y, int height, int shift) { int regionX = x >> 3; int regionY = y >> 3; @@ -161,9 +280,23 @@ public class Region { } } + private static void addProjectileClipping(int x, int y, int height, int shift) { + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + r.addProjectileClip(x, y, height, shift); + break; + } + } + } + + private static Region[] regions; private final int id; private final int[][][] clips = new int[4][][]; + private final int[][][] projectileClips = new int[4][][]; private boolean members = false; public Region(int id, boolean members) { @@ -298,6 +431,107 @@ public class Region { } } + private static void addProjectileClippingForVariableObject(int x, int y, int height, + int type, int direction, boolean flag) { + if (type == 0) { + if (direction == 0) { + addProjectileClipping(x, y, height, 128); + addProjectileClipping(x - 1, y, height, 8); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 2); + addProjectileClipping(x, y + 1, height, 32); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 8); + addProjectileClipping(x + 1, y, height, 128); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 32); + addProjectileClipping(x, y - 1, height, 2); + } + } else if (type == 1 || type == 3) { + if (direction == 0) { + addProjectileClipping(x, y, height, 1); + addProjectileClipping(x - 1, y, height, 16); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 4); + addProjectileClipping(x + 1, y + 1, height, 64); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 16); + addProjectileClipping(x + 1, y - 1, height, 1); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 64); + addProjectileClipping(x - 1, y - 1, height, 4); + } + } else if (type == 2) { + if (direction == 0) { + addProjectileClipping(x, y, height, 130); + addProjectileClipping(x - 1, y, height, 8); + addProjectileClipping(x, y + 1, height, 32); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 10); + addProjectileClipping(x, y + 1, height, 32); + addProjectileClipping(x + 1, y, height, 128); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 40); + addProjectileClipping(x + 1, y, height, 128); + addProjectileClipping(x, y - 1, height, 2); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 160); + addProjectileClipping(x, y - 1, height, 2); + addProjectileClipping(x - 1, y, height, 8); + } + } + if (flag) { + if (type == 0) { + if (direction == 0) { + addProjectileClipping(x, y, height, 65536); + addProjectileClipping(x - 1, y, height, 4096); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 1024); + addProjectileClipping(x, y + 1, height, 16384); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 4096); + addProjectileClipping(x + 1, y, height, 65536); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 16384); + addProjectileClipping(x, y - 1, height, 1024); + } + } + if (type == 1 || type == 3) { + if (direction == 0) { + addProjectileClipping(x, y, height, 512); + addProjectileClipping(x - 1, y + 1, height, 8192); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 2048); + addProjectileClipping(x + 1, y + 1, height, 32768); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 8192); + addProjectileClipping(x + 1, y + 1, height, 512); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 32768); + addProjectileClipping(x - 1, y - 1, height, 2048); + } + } else if (type == 2) { + if (direction == 0) { + addProjectileClipping(x, y, height, 66560); + addProjectileClipping(x - 1, y, height, 4096); + addProjectileClipping(x, y + 1, height, 16384); + } else if (direction == 1) { + addProjectileClipping(x, y, height, 5120); + addProjectileClipping(x, y + 1, height, 16384); + addProjectileClipping(x + 1, y, height, 65536); + } else if (direction == 2) { + addProjectileClipping(x, y, height, 20480); + addProjectileClipping(x + 1, y, height, 65536); + addProjectileClipping(x, y - 1, height, 1024); + } else if (direction == 3) { + addProjectileClipping(x, y, height, 81920); + addProjectileClipping(x, y - 1, height, 1024); + addProjectileClipping(x - 1, y, height, 4096); + } + } + } + } + private static void addClippingForSolidObject(int x, int y, int height, int xLength, int yLength, boolean flag) { int clipping = 256; @@ -311,6 +545,19 @@ public class Region { } } + private static void addProjectileClippingForSolidObject(int x, int y, int height, + int xLength, int yLength, boolean flag) { + int clipping = 256; + if (flag) { + clipping += 0x20000; + } + for (int i = x; i < x + xLength; i++) { + for (int i2 = y; i2 < y + yLength; i2++) { + addProjectileClipping(i, i2, height, clipping); + } + } + } + public static void addObject(int objectId, int x, int y, int height, int type, int direction, boolean startUp) { if (ObjectDef.getObjectDef(objectId) == null) { } @@ -327,16 +574,26 @@ public class Region { if (ObjectDef.getObjectDef(objectId).hasActions() && ObjectDef.getObjectDef(objectId).aBoolean767()) { addClipping(x, y, height, 0x200000); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClipping(x, y, height, 0x200000); + } } } else if (type >= 9) { if (ObjectDef.getObjectDef(objectId).aBoolean767()) { addClippingForSolidObject(x, y, height, xLength, yLength, ObjectDef.getObjectDef(objectId).solid()); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClippingForSolidObject(x, y, height, xLength, yLength, + ObjectDef.getObjectDef(objectId).solid()); + } } } else if (type >= 0 && type <= 3) { if (ObjectDef.getObjectDef(objectId).aBoolean767()) { addClippingForVariableObject(x, y, height, type, direction, ObjectDef.getObjectDef(objectId).solid()); + if (ObjectDef.getObjectDef(objectId).isUnshootable()) { + addProjectileClippingForVariableObject(x, y, height, type, direction, ObjectDef.getObjectDef(objectId).solid()); + } } } Region r = getRegion(x, y); @@ -363,6 +620,21 @@ public class Region { return 0; } + public static int getProjectileClipping(int x, int y, int height) { + if (height > 3) { + height = 0; + } + int regionX = x >> 3; + int regionY = y >> 3; + int regionId = (regionX / 8 << 8) + regionY / 8; + for (Region r : regions) { + if (r.id() == regionId) { + return r.getProjectileClip(x, y, height); + } + } + return 0; + } + public static boolean getClipping(int x, int y, int height, int moveTypeX, int moveTypeY) { try { diff --git a/CompiledServer/artifacts/local_client_jar/2006rebotted.jar b/CompiledServer/artifacts/local_client_jar/2006rebotted.jar new file mode 100644 index 00000000..6706ffe0 Binary files /dev/null and b/CompiledServer/artifacts/local_client_jar/2006rebotted.jar differ diff --git a/CompiledServer/artifacts/local_client_jar/run.bat b/CompiledServer/artifacts/local_client_jar/run.bat new file mode 100644 index 00000000..f969614c --- /dev/null +++ b/CompiledServer/artifacts/local_client_jar/run.bat @@ -0,0 +1,2 @@ +"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" -jar 2006rebotted.jar +pause \ No newline at end of file diff --git a/CompiledServer/production/2006rebotted/Game.class b/CompiledServer/production/2006rebotted/Game.class index 96e12611..f4bf335a 100644 Binary files a/CompiledServer/production/2006rebotted/Game.class and b/CompiledServer/production/2006rebotted/Game.class differ diff --git a/CompiledServer/production/2006rebotted/META-INF/MANIFEST.MF b/CompiledServer/production/2006rebotted/META-INF/MANIFEST.MF new file mode 100644 index 00000000..f20a7294 --- /dev/null +++ b/CompiledServer/production/2006rebotted/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: Client + diff --git a/CompiledServer/production/2006rebotted/redone/game/content/combat/CombatAssistant.class b/CompiledServer/production/2006rebotted/redone/game/content/combat/CombatAssistant.class index 50cdb2b5..a3505d2f 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/combat/CombatAssistant.class and b/CompiledServer/production/2006rebotted/redone/game/content/combat/CombatAssistant.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/MagicTeleports.class b/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/MagicTeleports.class index 150c182f..1732d6c9 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/MagicTeleports.class and b/CompiledServer/production/2006rebotted/redone/game/content/combat/magic/MagicTeleports.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/GateHandler.class b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/GateHandler.class index e996fc47..0135a611 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/GateHandler.class and b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/GateHandler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor$1.class b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor$1.class index 9dd6f3cc..d20efe1c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor$1.class and b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class index a29e9f2b..371ed059 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class and b/CompiledServer/production/2006rebotted/redone/game/globalworldobjects/PassDoor.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class index c30bad36..fcc36823 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$1.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class index 2bdf4c78..143e495c 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class index 853ce63b..20295378 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class index d65b15ae..c96fd286 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$4.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class b/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class index 5b6d718c..b82c6090 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client$TinterfaceText.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Client.class b/CompiledServer/production/2006rebotted/redone/game/players/Client.class index 26893cb8..0558e318 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Client.class and b/CompiledServer/production/2006rebotted/redone/game/players/Client.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/Player.class b/CompiledServer/production/2006rebotted/redone/game/players/Player.class index d194e391..0b027963 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/Player.class and b/CompiledServer/production/2006rebotted/redone/game/players/Player.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class index dcd629ef..4a408db9 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class and b/CompiledServer/production/2006rebotted/redone/game/players/PlayerAssistant.class differ diff --git a/CompiledServer/production/2006rebotted/redone/game/players/PlayerHandler.class b/CompiledServer/production/2006rebotted/redone/game/players/PlayerHandler.class index 26879e2a..4ea326cf 100644 Binary files a/CompiledServer/production/2006rebotted/redone/game/players/PlayerHandler.class and b/CompiledServer/production/2006rebotted/redone/game/players/PlayerHandler.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/ActionSender.class b/CompiledServer/production/2006rebotted/redone/net/ActionSender.class index d04f0a63..640c5433 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/ActionSender.class and b/CompiledServer/production/2006rebotted/redone/net/ActionSender.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class index 4e2927d0..f719ce0d 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$2.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class index 9e434214..d2d1d7a1 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class index a348cadc..98ea430b 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$4.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class index 0d8f5f4a..f60906b5 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$5.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class index 1c77b5dd..2420d53a 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject$6.class differ diff --git a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class index b3775ca7..85989bac 100644 Binary files a/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class and b/CompiledServer/production/2006rebotted/redone/net/packets/impl/ClickObject.class differ diff --git a/CompiledServer/production/2006rebotted/redone/util/Misc.class b/CompiledServer/production/2006rebotted/redone/util/Misc.class index 625552d8..d446050a 100644 Binary files a/CompiledServer/production/2006rebotted/redone/util/Misc.class and b/CompiledServer/production/2006rebotted/redone/util/Misc.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/ObjectManager$3.class b/CompiledServer/production/2006rebotted/redone/world/ObjectManager$3.class index 664cf51f..a7b90a74 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/ObjectManager$3.class and b/CompiledServer/production/2006rebotted/redone/world/ObjectManager$3.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class b/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class index 20204153..6231c3b8 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class and b/CompiledServer/production/2006rebotted/redone/world/ObjectManager.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/clip/ObjectDef.class b/CompiledServer/production/2006rebotted/redone/world/clip/ObjectDef.class index 7716776c..21f9e3c4 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/clip/ObjectDef.class and b/CompiledServer/production/2006rebotted/redone/world/clip/ObjectDef.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/clip/PathFinder.class b/CompiledServer/production/2006rebotted/redone/world/clip/PathFinder.class index 708cbcf8..74e879fe 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/clip/PathFinder.class and b/CompiledServer/production/2006rebotted/redone/world/clip/PathFinder.class differ diff --git a/CompiledServer/production/2006rebotted/redone/world/clip/Region.class b/CompiledServer/production/2006rebotted/redone/world/clip/Region.class index d4f3c040..155dd461 100644 Binary files a/CompiledServer/production/2006rebotted/redone/world/clip/Region.class and b/CompiledServer/production/2006rebotted/redone/world/clip/Region.class differ