diff --git a/.gitignore b/.gitignore index cafc79b..4a0fa21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ -.idea/workspace.xml -.idea/dynamic.xml +.idea/ + +**/target/ +**.iml +**.eml + +cachedump/*.zip diff --git a/MoparScape/pom.xml b/MoparScape/pom.xml new file mode 100755 index 0000000..8e7c160 --- /dev/null +++ b/MoparScape/pom.xml @@ -0,0 +1,30 @@ + + + + + + org.moparscape.client + main + 0.1-SNAPSHOT + + 4.0.0 + MoparScape + \ No newline at end of file diff --git a/MoparScape/src/main/java/org/moparscape/Debug.java b/MoparScape/src/main/java/org/moparscape/Debug.java new file mode 100755 index 0000000..c127e83 --- /dev/null +++ b/MoparScape/src/main/java/org/moparscape/Debug.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +package org.moparscape; + +/** + * This class is just for convenience, to handle debug levels and print developer info. + */ +public class Debug { + public static boolean debug = false; + + /** + * This is called when you only want to print something to the command line in debug mode. + * + * @param s String to print only in debug mode. + */ + public static void debug(String s) { + if (debug) + System.out.println(s); + } + + public static void debug(String s, String... args) { + if (debug) { + System.out.printf(s, args); + System.out.println(); + } + } + + public static void debug(Object[] o){ + if(!debug) + return; + for(int x = 0; x < o.length; ++x) + System.out.println(x+": "+o[x]); + } + + /** + * Called when you want to print an exception's Stack Trace only when in debug mode. + * + * @param e + */ + public static void debug(Exception e) { + if (debug && e != null) + e.printStackTrace(); + } + + /** + * Is debug on or not + * + * @return Whether MoparScape was run in debug mode + */ + public static boolean debug() { + return debug; + } +} diff --git a/src/org/moparscape/cacheutils/v317/ByteStream.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/ByteStream.java similarity index 97% rename from src/org/moparscape/cacheutils/v317/ByteStream.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v317/ByteStream.java index a275105..fcb35c0 100644 --- a/src/org/moparscape/cacheutils/v317/ByteStream.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/ByteStream.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.cacheutils.v317; diff --git a/src/org/moparscape/cacheutils/v317/CacheFile.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheFile.java similarity index 88% rename from src/org/moparscape/cacheutils/v317/CacheFile.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheFile.java index 506d6e9..f410825 100644 --- a/src/org/moparscape/cacheutils/v317/CacheFile.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheFile.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.cacheutils.v317; diff --git a/src/org/moparscape/cacheutils/v317/CacheIndex.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheIndex.java similarity index 96% rename from src/org/moparscape/cacheutils/v317/CacheIndex.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheIndex.java index cb6b3ab..daec13e 100644 --- a/src/org/moparscape/cacheutils/v317/CacheIndex.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/CacheIndex.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.cacheutils.v317; diff --git a/src/org/moparscape/cacheutils/v317/Main.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/Main.java similarity index 93% rename from src/org/moparscape/cacheutils/v317/Main.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v317/Main.java index 23990a8..cd1f305 100644 --- a/src/org/moparscape/cacheutils/v317/Main.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v317/Main.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.cacheutils.v317; diff --git a/src/org/moparscape/cacheutils/v508/CacheFile.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFile.java similarity index 92% rename from src/org/moparscape/cacheutils/v508/CacheFile.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFile.java index 2ed822a..33f974c 100644 --- a/src/org/moparscape/cacheutils/v508/CacheFile.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFile.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ /** diff --git a/src/org/moparscape/cacheutils/v508/CacheFileSet.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFileSet.java similarity index 83% rename from src/org/moparscape/cacheutils/v508/CacheFileSet.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFileSet.java index 6dcdc6e..aad4414 100644 --- a/src/org/moparscape/cacheutils/v508/CacheFileSet.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/CacheFileSet.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ /** diff --git a/src/org/moparscape/cacheutils/v508/FileOnDisk.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/FileOnDisk.java similarity index 87% rename from src/org/moparscape/cacheutils/v508/FileOnDisk.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/FileOnDisk.java index 570e8ae..498f611 100644 --- a/src/org/moparscape/cacheutils/v508/FileOnDisk.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/FileOnDisk.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ /** diff --git a/src/org/moparscape/cacheutils/v508/Main.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/Main.java similarity index 96% rename from src/org/moparscape/cacheutils/v508/Main.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/Main.java index ec80c69..db695d5 100644 --- a/src/org/moparscape/cacheutils/v508/Main.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/Main.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.cacheutils.v508; diff --git a/src/org/moparscape/cacheutils/v508/Misc.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/Misc.java similarity index 87% rename from src/org/moparscape/cacheutils/v508/Misc.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/Misc.java index 3694e89..3530e09 100644 --- a/src/org/moparscape/cacheutils/v508/Misc.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/Misc.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ /** diff --git a/src/org/moparscape/cacheutils/v508/RandomAccessFile.java b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/RandomAccessFile.java similarity index 94% rename from src/org/moparscape/cacheutils/v508/RandomAccessFile.java rename to MoparScape/src/main/java/org/moparscape/cacheutils/v508/RandomAccessFile.java index fd796e3..94edecd 100644 --- a/src/org/moparscape/cacheutils/v508/RandomAccessFile.java +++ b/MoparScape/src/main/java/org/moparscape/cacheutils/v508/RandomAccessFile.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ /** diff --git a/src/org/moparscape/classloader/CRCClassLoader.java b/MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoader.java similarity index 97% rename from src/org/moparscape/classloader/CRCClassLoader.java rename to MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoader.java index b7e6b13..ebcf74f 100644 --- a/src/org/moparscape/classloader/CRCClassLoader.java +++ b/MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoader.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.classloader; diff --git a/src/org/moparscape/classloader/CRCClassLoaderOrig.java b/MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoaderOrig.java similarity index 96% rename from src/org/moparscape/classloader/CRCClassLoaderOrig.java rename to MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoaderOrig.java index 3b342ad..0ce5572 100644 --- a/src/org/moparscape/classloader/CRCClassLoaderOrig.java +++ b/MoparScape/src/main/java/org/moparscape/classloader/CRCClassLoaderOrig.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.classloader; diff --git a/src/org/moparscape/classloader/CRCJar.java b/MoparScape/src/main/java/org/moparscape/classloader/CRCJar.java similarity index 81% rename from src/org/moparscape/classloader/CRCJar.java rename to MoparScape/src/main/java/org/moparscape/classloader/CRCJar.java index 31e1c7f..cb7d8a6 100644 --- a/src/org/moparscape/classloader/CRCJar.java +++ b/MoparScape/src/main/java/org/moparscape/classloader/CRCJar.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.classloader; diff --git a/MoparScape/src/main/java/org/moparscape/classloader/MoparScapeLinks.java b/MoparScape/src/main/java/org/moparscape/classloader/MoparScapeLinks.java new file mode 100644 index 0000000..c38fe7e --- /dev/null +++ b/MoparScape/src/main/java/org/moparscape/classloader/MoparScapeLinks.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +package org.moparscape.classloader; + +import org.moparscape.res.impl.Downloader; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.PrintStream; + +/** + * This outputs some HTML with handy links to test clients/servers/caches in MoparScape. + * + * @author mopar + */ +public class MoparScapeLinks { + + //public static final String mscpLink = "%s %s %s
\n"; + public static final String mscpLink = "%s %s %s
\n"; + public static final String mavenArtifact = "%1$s/%2$s/target/%2$s.%3$s"; + + public static void main(String[] args) throws Exception { + //System.out.println("args: "+ Arrays.toString(args)); if(true) return; + if (args.length < 2) { + System.out.println("Usage: CRCJar rootDir htmlFile"); + return; + } + final File rootDir = new File(args[0]).getCanonicalFile(); + final PrintStream html; + if (args[1].equals("-")) + html = System.out; + else + html = new PrintStream(new FileOutputStream(args[1])); + + html.println("MoparScape Test Links"); + + outputLink(rootDir, html, "client317", "server317", "complete317"); + outputLink(rootDir, html, "client508", "server508", "complete508"); + outputLink(rootDir, html, "renamed508", "server508", "complete508"); + outputLink(rootDir, html, "clientRSC", "server317", "completeRSC"); + + html.println(""); + } + + public static void outputLink(final File rootDir, final PrintStream html, final String client, final String server, final String cache) { + try { + final String clientJar = new File(rootDir, String.format(mavenArtifact, "clients", client, "jar")).getAbsolutePath(); + final String serverJar = new File(rootDir, String.format(mavenArtifact, "servers", server, "jar")).getAbsolutePath(); + final String serverZip = new File(rootDir, String.format(mavenArtifact, "servers", server, "zip")).getAbsolutePath(); + final String cacheZip = new File(rootDir, String.format("cachedump/%s.zip", cache)).getAbsolutePath(); + final long clientCRC = new CRCClassLoader(clientJar).getCRC(); + final long serverCRC = new CRCClassLoader(serverJar).getCRC(); + final long cacheCRC = Downloader.crcExtractFile(cacheZip); + html.printf(mscpLink, clientJar, clientCRC, cacheZip, cacheCRC, serverZip, serverCRC, client, server, cache); + } catch (Throwable e) { + e.printStackTrace(); + } + } +} diff --git a/src/org/moparscape/iface/ClientInterface.java b/MoparScape/src/main/java/org/moparscape/iface/ClientInterface.java similarity index 95% rename from src/org/moparscape/iface/ClientInterface.java rename to MoparScape/src/main/java/org/moparscape/iface/ClientInterface.java index ddf642a..b29b579 100644 --- a/src/org/moparscape/iface/ClientInterface.java +++ b/MoparScape/src/main/java/org/moparscape/iface/ClientInterface.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.iface; diff --git a/src/org/moparscape/iface/Hasher.java b/MoparScape/src/main/java/org/moparscape/iface/Hasher.java similarity index 90% rename from src/org/moparscape/iface/Hasher.java rename to MoparScape/src/main/java/org/moparscape/iface/Hasher.java index 5e33d0f..4bcf974 100644 --- a/src/org/moparscape/iface/Hasher.java +++ b/MoparScape/src/main/java/org/moparscape/iface/Hasher.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.iface; diff --git a/src/org/moparscape/iface/ServerInterface.java b/MoparScape/src/main/java/org/moparscape/iface/ServerInterface.java similarity index 78% rename from src/org/moparscape/iface/ServerInterface.java rename to MoparScape/src/main/java/org/moparscape/iface/ServerInterface.java index 66bc563..01591f9 100644 --- a/src/org/moparscape/iface/ServerInterface.java +++ b/MoparScape/src/main/java/org/moparscape/iface/ServerInterface.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.iface; diff --git a/src/org/moparscape/res/AbstractDownloadListener.java b/MoparScape/src/main/java/org/moparscape/res/AbstractDownloadListener.java similarity index 92% rename from src/org/moparscape/res/AbstractDownloadListener.java rename to MoparScape/src/main/java/org/moparscape/res/AbstractDownloadListener.java index cd13bb5..edf69fb 100644 --- a/src/org/moparscape/res/AbstractDownloadListener.java +++ b/MoparScape/src/main/java/org/moparscape/res/AbstractDownloadListener.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/Base32.java b/MoparScape/src/main/java/org/moparscape/res/Base32.java similarity index 86% rename from src/org/moparscape/res/Base32.java rename to MoparScape/src/main/java/org/moparscape/res/Base32.java index 811ba52..4a69c55 100644 --- a/src/org/moparscape/res/Base32.java +++ b/MoparScape/src/main/java/org/moparscape/res/Base32.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + /* (PD) 2006 The Bitzi Corporation * Please see http://bitzi.com/publicdomain for more info. * diff --git a/src/org/moparscape/res/ChecksumInfo.java b/MoparScape/src/main/java/org/moparscape/res/ChecksumInfo.java similarity index 96% rename from src/org/moparscape/res/ChecksumInfo.java rename to MoparScape/src/main/java/org/moparscape/res/ChecksumInfo.java index dcc3d66..c38dc48 100644 --- a/src/org/moparscape/res/ChecksumInfo.java +++ b/MoparScape/src/main/java/org/moparscape/res/ChecksumInfo.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/ChecksumInputStream.java b/MoparScape/src/main/java/org/moparscape/res/ChecksumInputStream.java similarity index 87% rename from src/org/moparscape/res/ChecksumInputStream.java rename to MoparScape/src/main/java/org/moparscape/res/ChecksumInputStream.java index c05587d..9c4b715 100644 --- a/src/org/moparscape/res/ChecksumInputStream.java +++ b/MoparScape/src/main/java/org/moparscape/res/ChecksumInputStream.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/CompleteRunnable.java b/MoparScape/src/main/java/org/moparscape/res/CompleteRunnable.java similarity index 86% rename from src/org/moparscape/res/CompleteRunnable.java rename to MoparScape/src/main/java/org/moparscape/res/CompleteRunnable.java index 4be8e82..51f2c16 100644 --- a/src/org/moparscape/res/CompleteRunnable.java +++ b/MoparScape/src/main/java/org/moparscape/res/CompleteRunnable.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/DownloadListener.java b/MoparScape/src/main/java/org/moparscape/res/DownloadListener.java similarity index 83% rename from src/org/moparscape/res/DownloadListener.java rename to MoparScape/src/main/java/org/moparscape/res/DownloadListener.java index 25655d8..230f1ce 100644 --- a/src/org/moparscape/res/DownloadListener.java +++ b/MoparScape/src/main/java/org/moparscape/res/DownloadListener.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/MakeTorrent.java b/MoparScape/src/main/java/org/moparscape/res/MakeTorrent.java similarity index 97% rename from src/org/moparscape/res/MakeTorrent.java rename to MoparScape/src/main/java/org/moparscape/res/MakeTorrent.java index b8dc6ae..b96e76b 100644 --- a/src/org/moparscape/res/MakeTorrent.java +++ b/MoparScape/src/main/java/org/moparscape/res/MakeTorrent.java @@ -1,24 +1,25 @@ -package org.moparscape.res; /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ +package org.moparscape.res; + import org.moparscape.Debug; import org.moparscape.classloader.CRCClassLoader; import org.moparscape.res.impl.Downloader; diff --git a/src/org/moparscape/res/NullOutputStream.java b/MoparScape/src/main/java/org/moparscape/res/NullOutputStream.java similarity index 76% rename from src/org/moparscape/res/NullOutputStream.java rename to MoparScape/src/main/java/org/moparscape/res/NullOutputStream.java index 65d2797..a4db44f 100644 --- a/src/org/moparscape/res/NullOutputStream.java +++ b/MoparScape/src/main/java/org/moparscape/res/NullOutputStream.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/ResourceGrabber.java b/MoparScape/src/main/java/org/moparscape/res/ResourceGrabber.java similarity index 99% rename from src/org/moparscape/res/ResourceGrabber.java rename to MoparScape/src/main/java/org/moparscape/res/ResourceGrabber.java index 3d80007..9079887 100644 --- a/src/org/moparscape/res/ResourceGrabber.java +++ b/MoparScape/src/main/java/org/moparscape/res/ResourceGrabber.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res; diff --git a/src/org/moparscape/res/impl/BTDownloader.java b/MoparScape/src/main/java/org/moparscape/res/impl/BTDownloader.java similarity index 98% rename from src/org/moparscape/res/impl/BTDownloader.java rename to MoparScape/src/main/java/org/moparscape/res/impl/BTDownloader.java index f0443db..cdf6ca5 100644 --- a/src/org/moparscape/res/impl/BTDownloader.java +++ b/MoparScape/src/main/java/org/moparscape/res/impl/BTDownloader.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res.impl; diff --git a/src/org/moparscape/res/impl/BTDownloaderCRCs.java b/MoparScape/src/main/java/org/moparscape/res/impl/BTDownloaderCRCs.java similarity index 78% rename from src/org/moparscape/res/impl/BTDownloaderCRCs.java rename to MoparScape/src/main/java/org/moparscape/res/impl/BTDownloaderCRCs.java index 5b1403b..db06a14 100644 --- a/src/org/moparscape/res/impl/BTDownloaderCRCs.java +++ b/MoparScape/src/main/java/org/moparscape/res/impl/BTDownloaderCRCs.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res.impl; diff --git a/src/org/moparscape/res/impl/Downloader.java b/MoparScape/src/main/java/org/moparscape/res/impl/Downloader.java similarity index 97% rename from src/org/moparscape/res/impl/Downloader.java rename to MoparScape/src/main/java/org/moparscape/res/impl/Downloader.java index 23f60f5..d1f8338 100644 --- a/src/org/moparscape/res/impl/Downloader.java +++ b/MoparScape/src/main/java/org/moparscape/res/impl/Downloader.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res.impl; diff --git a/src/org/moparscape/res/impl/URLDownloader.java b/MoparScape/src/main/java/org/moparscape/res/impl/URLDownloader.java similarity index 94% rename from src/org/moparscape/res/impl/URLDownloader.java rename to MoparScape/src/main/java/org/moparscape/res/impl/URLDownloader.java index a12c552..c601779 100644 --- a/src/org/moparscape/res/impl/URLDownloader.java +++ b/MoparScape/src/main/java/org/moparscape/res/impl/URLDownloader.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2011 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.res.impl; diff --git a/src/org/moparscape/rsakeys/Base64.java b/MoparScape/src/main/java/org/moparscape/rsakeys/Base64.java similarity index 99% rename from src/org/moparscape/rsakeys/Base64.java rename to MoparScape/src/main/java/org/moparscape/rsakeys/Base64.java index 13faedc..c3bbe15 100644 --- a/src/org/moparscape/rsakeys/Base64.java +++ b/MoparScape/src/main/java/org/moparscape/rsakeys/Base64.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2012 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.rsakeys; diff --git a/src/org/moparscape/rsakeys/KeyGenerator.java b/MoparScape/src/main/java/org/moparscape/rsakeys/KeyGenerator.java similarity index 86% rename from src/org/moparscape/rsakeys/KeyGenerator.java rename to MoparScape/src/main/java/org/moparscape/rsakeys/KeyGenerator.java index 1e02cec..35421a6 100644 --- a/src/org/moparscape/rsakeys/KeyGenerator.java +++ b/MoparScape/src/main/java/org/moparscape/rsakeys/KeyGenerator.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + package org.moparscape.rsakeys;/* * Copyright (C) 2012 moparisthebest * diff --git a/src/org/moparscape/security/SecurityManager.java b/MoparScape/src/main/java/org/moparscape/security/SecurityManager.java similarity index 98% rename from src/org/moparscape/security/SecurityManager.java rename to MoparScape/src/main/java/org/moparscape/security/SecurityManager.java index 5c739e5..ad0519d 100644 --- a/src/org/moparscape/security/SecurityManager.java +++ b/MoparScape/src/main/java/org/moparscape/security/SecurityManager.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.security; diff --git a/src/org/moparscape/userver/Server.java b/MoparScape/src/main/java/org/moparscape/userver/Server.java similarity index 94% rename from src/org/moparscape/userver/Server.java rename to MoparScape/src/main/java/org/moparscape/userver/Server.java index 5a10a68..5670ee1 100644 --- a/src/org/moparscape/userver/Server.java +++ b/MoparScape/src/main/java/org/moparscape/userver/Server.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.userver; diff --git a/src/org/moparscape/userver/v317/ConcurrentOndemandServer.java b/MoparScape/src/main/java/org/moparscape/userver/v317/ConcurrentOndemandServer.java similarity index 93% rename from src/org/moparscape/userver/v317/ConcurrentOndemandServer.java rename to MoparScape/src/main/java/org/moparscape/userver/v317/ConcurrentOndemandServer.java index d82901c..0a36651 100644 --- a/src/org/moparscape/userver/v317/ConcurrentOndemandServer.java +++ b/MoparScape/src/main/java/org/moparscape/userver/v317/ConcurrentOndemandServer.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.userver.v317; diff --git a/src/org/moparscape/userver/v317/JaggrabServer.java b/MoparScape/src/main/java/org/moparscape/userver/v317/JaggrabServer.java similarity index 92% rename from src/org/moparscape/userver/v317/JaggrabServer.java rename to MoparScape/src/main/java/org/moparscape/userver/v317/JaggrabServer.java index bb42a4f..fde6932 100644 --- a/src/org/moparscape/userver/v317/JaggrabServer.java +++ b/MoparScape/src/main/java/org/moparscape/userver/v317/JaggrabServer.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.userver.v317; diff --git a/src/org/moparscape/userver/v508/ConcurrentOndemandServer.java b/MoparScape/src/main/java/org/moparscape/userver/v508/ConcurrentOndemandServer.java similarity index 96% rename from src/org/moparscape/userver/v508/ConcurrentOndemandServer.java rename to MoparScape/src/main/java/org/moparscape/userver/v508/ConcurrentOndemandServer.java index eda1ba7..de9bbe4 100644 --- a/src/org/moparscape/userver/v508/ConcurrentOndemandServer.java +++ b/MoparScape/src/main/java/org/moparscape/userver/v508/ConcurrentOndemandServer.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.userver.v508; diff --git a/src/org/moparscape/userver/v508/OndemandServer.java b/MoparScape/src/main/java/org/moparscape/userver/v508/OndemandServer.java similarity index 97% rename from src/org/moparscape/userver/v508/OndemandServer.java rename to MoparScape/src/main/java/org/moparscape/userver/v508/OndemandServer.java index 7b77c22..c265f1c 100644 --- a/src/org/moparscape/userver/v508/OndemandServer.java +++ b/MoparScape/src/main/java/org/moparscape/userver/v508/OndemandServer.java @@ -1,21 +1,21 @@ /* - * Copyright (C) 2010 moparisthebest + * Copyright (C) 2009-2013 moparisthebest * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by + * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * GNU Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License + * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * * Official forums are http://www.moparscape.org/smf/ - * Email me at admin@moparisthebest.com , I read it but don't usually respond. + * Email me at admin@moparisthebest.com. */ package org.moparscape.userver.v508; diff --git a/cachedump/completeRSC/config.jag b/cachedump/completeRSC/config.jag new file mode 100755 index 0000000..b1a641f Binary files /dev/null and b/cachedump/completeRSC/config.jag differ diff --git a/cachedump/completeRSC/entity.jag b/cachedump/completeRSC/entity.jag new file mode 100755 index 0000000..1e484ae Binary files /dev/null and b/cachedump/completeRSC/entity.jag differ diff --git a/cachedump/completeRSC/entity.mem b/cachedump/completeRSC/entity.mem new file mode 100755 index 0000000..f70dc0c Binary files /dev/null and b/cachedump/completeRSC/entity.mem differ diff --git a/cachedump/completeRSC/filter.jag b/cachedump/completeRSC/filter.jag new file mode 100755 index 0000000..5f885f6 Binary files /dev/null and b/cachedump/completeRSC/filter.jag differ diff --git a/cachedump/completeRSC/fonts.jag b/cachedump/completeRSC/fonts.jag new file mode 100755 index 0000000..d8641ee Binary files /dev/null and b/cachedump/completeRSC/fonts.jag differ diff --git a/cachedump/completeRSC/land.jag b/cachedump/completeRSC/land.jag new file mode 100755 index 0000000..475941c Binary files /dev/null and b/cachedump/completeRSC/land.jag differ diff --git a/cachedump/completeRSC/land.mem b/cachedump/completeRSC/land.mem new file mode 100755 index 0000000..b95324b Binary files /dev/null and b/cachedump/completeRSC/land.mem differ diff --git a/cachedump/completeRSC/maps.jag b/cachedump/completeRSC/maps.jag new file mode 100755 index 0000000..9ed93ad Binary files /dev/null and b/cachedump/completeRSC/maps.jag differ diff --git a/cachedump/completeRSC/maps.mem b/cachedump/completeRSC/maps.mem new file mode 100755 index 0000000..d3e3862 Binary files /dev/null and b/cachedump/completeRSC/maps.mem differ diff --git a/cachedump/completeRSC/media.jag b/cachedump/completeRSC/media.jag new file mode 100755 index 0000000..f72fb1a Binary files /dev/null and b/cachedump/completeRSC/media.jag differ diff --git a/cachedump/completeRSC/models.jag b/cachedump/completeRSC/models.jag new file mode 100755 index 0000000..2715756 Binary files /dev/null and b/cachedump/completeRSC/models.jag differ diff --git a/cachedump/completeRSC/sounds.mem b/cachedump/completeRSC/sounds.mem new file mode 100755 index 0000000..302ac9c Binary files /dev/null and b/cachedump/completeRSC/sounds.mem differ diff --git a/cachedump/completeRSC/textures.jag b/cachedump/completeRSC/textures.jag new file mode 100755 index 0000000..2bbfdec Binary files /dev/null and b/cachedump/completeRSC/textures.jag differ diff --git a/clientRSC/src/mudclient b/clientRSC/src/mudclient deleted file mode 120000 index 7d0177f..0000000 --- a/clientRSC/src/mudclient +++ /dev/null @@ -1 +0,0 @@ -../../../mpc-client/src/mudclient \ No newline at end of file diff --git a/clients/client317/pom.xml b/clients/client317/pom.xml new file mode 100644 index 0000000..70dd2e7 --- /dev/null +++ b/clients/client317/pom.xml @@ -0,0 +1,30 @@ + + + + + + org.moparscape.client + clients + 0.1-SNAPSHOT + + 4.0.0 + client317 + \ No newline at end of file diff --git a/client317/src/client.java b/clients/client317/src/main/java/client.java similarity index 100% rename from client317/src/client.java rename to clients/client317/src/main/java/client.java diff --git a/client317/src/rs/Class11.java b/clients/client317/src/main/java/rs/Class11.java similarity index 100% rename from client317/src/rs/Class11.java rename to clients/client317/src/main/java/rs/Class11.java diff --git a/client317/src/rs/Class18.java b/clients/client317/src/main/java/rs/Class18.java similarity index 100% rename from client317/src/rs/Class18.java rename to clients/client317/src/main/java/rs/Class18.java diff --git a/client317/src/rs/Class21.java b/clients/client317/src/main/java/rs/Class21.java similarity index 100% rename from client317/src/rs/Class21.java rename to clients/client317/src/main/java/rs/Class21.java diff --git a/client317/src/rs/Class29.java b/clients/client317/src/main/java/rs/Class29.java similarity index 100% rename from client317/src/rs/Class29.java rename to clients/client317/src/main/java/rs/Class29.java diff --git a/client317/src/rs/Class30_Sub1.java b/clients/client317/src/main/java/rs/Class30_Sub1.java similarity index 100% rename from client317/src/rs/Class30_Sub1.java rename to clients/client317/src/main/java/rs/Class30_Sub1.java diff --git a/client317/src/rs/Class33.java b/clients/client317/src/main/java/rs/Class33.java similarity index 100% rename from client317/src/rs/Class33.java rename to clients/client317/src/main/java/rs/Class33.java diff --git a/client317/src/rs/Class36.java b/clients/client317/src/main/java/rs/Class36.java similarity index 100% rename from client317/src/rs/Class36.java rename to clients/client317/src/main/java/rs/Class36.java diff --git a/client317/src/rs/Class39.java b/clients/client317/src/main/java/rs/Class39.java similarity index 100% rename from client317/src/rs/Class39.java rename to clients/client317/src/main/java/rs/Class39.java diff --git a/client317/src/rs/Class4.java b/clients/client317/src/main/java/rs/Class4.java similarity index 100% rename from client317/src/rs/Class4.java rename to clients/client317/src/main/java/rs/Class4.java diff --git a/client317/src/rs/Class40.java b/clients/client317/src/main/java/rs/Class40.java similarity index 100% rename from client317/src/rs/Class40.java rename to clients/client317/src/main/java/rs/Class40.java diff --git a/client317/src/rs/Class43.java b/clients/client317/src/main/java/rs/Class43.java similarity index 100% rename from client317/src/rs/Class43.java rename to clients/client317/src/main/java/rs/Class43.java diff --git a/client317/src/rs/Class47.java b/clients/client317/src/main/java/rs/Class47.java similarity index 100% rename from client317/src/rs/Class47.java rename to clients/client317/src/main/java/rs/Class47.java diff --git a/client317/src/rs/Class6.java b/clients/client317/src/main/java/rs/Class6.java similarity index 100% rename from client317/src/rs/Class6.java rename to clients/client317/src/main/java/rs/Class6.java diff --git a/client317/src/rs/Ground.java b/clients/client317/src/main/java/rs/Ground.java similarity index 100% rename from client317/src/rs/Ground.java rename to clients/client317/src/main/java/rs/Ground.java diff --git a/client317/src/rs/MRUNodes.java b/clients/client317/src/main/java/rs/MRUNodes.java similarity index 100% rename from client317/src/rs/MRUNodes.java rename to clients/client317/src/main/java/rs/MRUNodes.java diff --git a/client317/src/rs/Node.java b/clients/client317/src/main/java/rs/Node.java similarity index 100% rename from client317/src/rs/Node.java rename to clients/client317/src/main/java/rs/Node.java diff --git a/client317/src/rs/NodeCache.java b/clients/client317/src/main/java/rs/NodeCache.java similarity index 100% rename from client317/src/rs/NodeCache.java rename to clients/client317/src/main/java/rs/NodeCache.java diff --git a/client317/src/rs/NodeList.java b/clients/client317/src/main/java/rs/NodeList.java similarity index 100% rename from client317/src/rs/NodeList.java rename to clients/client317/src/main/java/rs/NodeList.java diff --git a/client317/src/rs/NodeSub.java b/clients/client317/src/main/java/rs/NodeSub.java similarity index 100% rename from client317/src/rs/NodeSub.java rename to clients/client317/src/main/java/rs/NodeSub.java diff --git a/client317/src/rs/NodeSubList.java b/clients/client317/src/main/java/rs/NodeSubList.java similarity index 100% rename from client317/src/rs/NodeSubList.java rename to clients/client317/src/main/java/rs/NodeSubList.java diff --git a/client317/src/rs/Object1.java b/clients/client317/src/main/java/rs/Object1.java similarity index 100% rename from client317/src/rs/Object1.java rename to clients/client317/src/main/java/rs/Object1.java diff --git a/client317/src/rs/Object2.java b/clients/client317/src/main/java/rs/Object2.java similarity index 100% rename from client317/src/rs/Object2.java rename to clients/client317/src/main/java/rs/Object2.java diff --git a/client317/src/rs/Object3.java b/clients/client317/src/main/java/rs/Object3.java similarity index 100% rename from client317/src/rs/Object3.java rename to clients/client317/src/main/java/rs/Object3.java diff --git a/client317/src/rs/Object4.java b/clients/client317/src/main/java/rs/Object4.java similarity index 100% rename from client317/src/rs/Object4.java rename to clients/client317/src/main/java/rs/Object4.java diff --git a/client317/src/rs/Object5.java b/clients/client317/src/main/java/rs/Object5.java similarity index 100% rename from client317/src/rs/Object5.java rename to clients/client317/src/main/java/rs/Object5.java diff --git a/client317/src/rs/ObjectManager.java b/clients/client317/src/main/java/rs/ObjectManager.java similarity index 100% rename from client317/src/rs/ObjectManager.java rename to clients/client317/src/main/java/rs/ObjectManager.java diff --git a/client317/src/rs/RSApplet.java b/clients/client317/src/main/java/rs/RSApplet.java similarity index 100% rename from client317/src/rs/RSApplet.java rename to clients/client317/src/main/java/rs/RSApplet.java diff --git a/client317/src/rs/RSFrame.java b/clients/client317/src/main/java/rs/RSFrame.java similarity index 100% rename from client317/src/rs/RSFrame.java rename to clients/client317/src/main/java/rs/RSFrame.java diff --git a/client317/src/rs/RSInterface.java b/clients/client317/src/main/java/rs/RSInterface.java similarity index 100% rename from client317/src/rs/RSInterface.java rename to clients/client317/src/main/java/rs/RSInterface.java diff --git a/client317/src/rs/Sounds.java b/clients/client317/src/main/java/rs/Sounds.java similarity index 100% rename from client317/src/rs/Sounds.java rename to clients/client317/src/main/java/rs/Sounds.java diff --git a/client317/src/rs/TextClass.java b/clients/client317/src/main/java/rs/TextClass.java similarity index 100% rename from client317/src/rs/TextClass.java rename to clients/client317/src/main/java/rs/TextClass.java diff --git a/client317/src/rs/TextInput.java b/clients/client317/src/main/java/rs/TextInput.java similarity index 100% rename from client317/src/rs/TextInput.java rename to clients/client317/src/main/java/rs/TextInput.java diff --git a/client317/src/rs/WorldController.java b/clients/client317/src/main/java/rs/WorldController.java similarity index 100% rename from client317/src/rs/WorldController.java rename to clients/client317/src/main/java/rs/WorldController.java diff --git a/client317/src/rs/animable/Animable.java b/clients/client317/src/main/java/rs/animable/Animable.java similarity index 100% rename from client317/src/rs/animable/Animable.java rename to clients/client317/src/main/java/rs/animable/Animable.java diff --git a/client317/src/rs/animable/Animable_Sub3.java b/clients/client317/src/main/java/rs/animable/Animable_Sub3.java similarity index 100% rename from client317/src/rs/animable/Animable_Sub3.java rename to clients/client317/src/main/java/rs/animable/Animable_Sub3.java diff --git a/client317/src/rs/animable/Animable_Sub4.java b/clients/client317/src/main/java/rs/animable/Animable_Sub4.java similarity index 100% rename from client317/src/rs/animable/Animable_Sub4.java rename to clients/client317/src/main/java/rs/animable/Animable_Sub4.java diff --git a/client317/src/rs/animable/Animable_Sub5.java b/clients/client317/src/main/java/rs/animable/Animable_Sub5.java similarity index 100% rename from client317/src/rs/animable/Animable_Sub5.java rename to clients/client317/src/main/java/rs/animable/Animable_Sub5.java diff --git a/client317/src/rs/animable/Entity.java b/clients/client317/src/main/java/rs/animable/Entity.java similarity index 100% rename from client317/src/rs/animable/Entity.java rename to clients/client317/src/main/java/rs/animable/Entity.java diff --git a/client317/src/rs/animable/Item.java b/clients/client317/src/main/java/rs/animable/Item.java similarity index 100% rename from client317/src/rs/animable/Item.java rename to clients/client317/src/main/java/rs/animable/Item.java diff --git a/client317/src/rs/animable/Model.java b/clients/client317/src/main/java/rs/animable/Model.java similarity index 100% rename from client317/src/rs/animable/Model.java rename to clients/client317/src/main/java/rs/animable/Model.java diff --git a/client317/src/rs/animable/NPC.java b/clients/client317/src/main/java/rs/animable/NPC.java similarity index 100% rename from client317/src/rs/animable/NPC.java rename to clients/client317/src/main/java/rs/animable/NPC.java diff --git a/client317/src/rs/animable/Player.java b/clients/client317/src/main/java/rs/animable/Player.java similarity index 100% rename from client317/src/rs/animable/Player.java rename to clients/client317/src/main/java/rs/animable/Player.java diff --git a/client317/src/rs/anticheat/MouseDetection.java b/clients/client317/src/main/java/rs/anticheat/MouseDetection.java similarity index 100% rename from client317/src/rs/anticheat/MouseDetection.java rename to clients/client317/src/main/java/rs/anticheat/MouseDetection.java diff --git a/client317/src/rs/cache/Decompressor.java b/clients/client317/src/main/java/rs/cache/Decompressor.java similarity index 100% rename from client317/src/rs/cache/Decompressor.java rename to clients/client317/src/main/java/rs/cache/Decompressor.java diff --git a/client317/src/rs/cache/OnDemandData.java b/clients/client317/src/main/java/rs/cache/OnDemandData.java similarity index 100% rename from client317/src/rs/cache/OnDemandData.java rename to clients/client317/src/main/java/rs/cache/OnDemandData.java diff --git a/client317/src/rs/cache/OnDemandFetcher.java b/clients/client317/src/main/java/rs/cache/OnDemandFetcher.java similarity index 100% rename from client317/src/rs/cache/OnDemandFetcher.java rename to clients/client317/src/main/java/rs/cache/OnDemandFetcher.java diff --git a/client317/src/rs/cache/OnDemandFetcherParent.java b/clients/client317/src/main/java/rs/cache/OnDemandFetcherParent.java similarity index 100% rename from client317/src/rs/cache/OnDemandFetcherParent.java rename to clients/client317/src/main/java/rs/cache/OnDemandFetcherParent.java diff --git a/client317/src/rs/client.java b/clients/client317/src/main/java/rs/client.java similarity index 100% rename from client317/src/rs/client.java rename to clients/client317/src/main/java/rs/client.java diff --git a/client317/src/rs/config/Animation.java b/clients/client317/src/main/java/rs/config/Animation.java similarity index 100% rename from client317/src/rs/config/Animation.java rename to clients/client317/src/main/java/rs/config/Animation.java diff --git a/client317/src/rs/config/Censor.java b/clients/client317/src/main/java/rs/config/Censor.java similarity index 100% rename from client317/src/rs/config/Censor.java rename to clients/client317/src/main/java/rs/config/Censor.java diff --git a/client317/src/rs/config/EntityDef.java b/clients/client317/src/main/java/rs/config/EntityDef.java similarity index 100% rename from client317/src/rs/config/EntityDef.java rename to clients/client317/src/main/java/rs/config/EntityDef.java diff --git a/client317/src/rs/config/Flo.java b/clients/client317/src/main/java/rs/config/Flo.java similarity index 100% rename from client317/src/rs/config/Flo.java rename to clients/client317/src/main/java/rs/config/Flo.java diff --git a/client317/src/rs/config/IDK.java b/clients/client317/src/main/java/rs/config/IDK.java similarity index 100% rename from client317/src/rs/config/IDK.java rename to clients/client317/src/main/java/rs/config/IDK.java diff --git a/client317/src/rs/config/ItemDef.java b/clients/client317/src/main/java/rs/config/ItemDef.java similarity index 100% rename from client317/src/rs/config/ItemDef.java rename to clients/client317/src/main/java/rs/config/ItemDef.java diff --git a/client317/src/rs/config/ObjectDef.java b/clients/client317/src/main/java/rs/config/ObjectDef.java similarity index 100% rename from client317/src/rs/config/ObjectDef.java rename to clients/client317/src/main/java/rs/config/ObjectDef.java diff --git a/client317/src/rs/config/SpotAnim.java b/clients/client317/src/main/java/rs/config/SpotAnim.java similarity index 100% rename from client317/src/rs/config/SpotAnim.java rename to clients/client317/src/main/java/rs/config/SpotAnim.java diff --git a/client317/src/rs/config/VarBit.java b/clients/client317/src/main/java/rs/config/VarBit.java similarity index 100% rename from client317/src/rs/config/VarBit.java rename to clients/client317/src/main/java/rs/config/VarBit.java diff --git a/client317/src/rs/config/Varp.java b/clients/client317/src/main/java/rs/config/Varp.java similarity index 100% rename from client317/src/rs/config/Varp.java rename to clients/client317/src/main/java/rs/config/Varp.java diff --git a/client317/src/rs/constants/SizeConstants.java b/clients/client317/src/main/java/rs/constants/SizeConstants.java similarity index 100% rename from client317/src/rs/constants/SizeConstants.java rename to clients/client317/src/main/java/rs/constants/SizeConstants.java diff --git a/client317/src/rs/constants/Skills.java b/clients/client317/src/main/java/rs/constants/Skills.java similarity index 100% rename from client317/src/rs/constants/Skills.java rename to clients/client317/src/main/java/rs/constants/Skills.java diff --git a/client317/src/rs/graphics/Background.java b/clients/client317/src/main/java/rs/graphics/Background.java similarity index 100% rename from client317/src/rs/graphics/Background.java rename to clients/client317/src/main/java/rs/graphics/Background.java diff --git a/client317/src/rs/graphics/DrawingArea.java b/clients/client317/src/main/java/rs/graphics/DrawingArea.java similarity index 100% rename from client317/src/rs/graphics/DrawingArea.java rename to clients/client317/src/main/java/rs/graphics/DrawingArea.java diff --git a/client317/src/rs/graphics/RSImageProducer.java b/clients/client317/src/main/java/rs/graphics/RSImageProducer.java similarity index 100% rename from client317/src/rs/graphics/RSImageProducer.java rename to clients/client317/src/main/java/rs/graphics/RSImageProducer.java diff --git a/client317/src/rs/graphics/Sprite.java b/clients/client317/src/main/java/rs/graphics/Sprite.java similarity index 100% rename from client317/src/rs/graphics/Sprite.java rename to clients/client317/src/main/java/rs/graphics/Sprite.java diff --git a/client317/src/rs/graphics/TextDrawingArea.java b/clients/client317/src/main/java/rs/graphics/TextDrawingArea.java similarity index 100% rename from client317/src/rs/graphics/TextDrawingArea.java rename to clients/client317/src/main/java/rs/graphics/TextDrawingArea.java diff --git a/client317/src/rs/graphics/Texture.java b/clients/client317/src/main/java/rs/graphics/Texture.java similarity index 100% rename from client317/src/rs/graphics/Texture.java rename to clients/client317/src/main/java/rs/graphics/Texture.java diff --git a/client317/src/rs/net/ISAACRandomGen.java b/clients/client317/src/main/java/rs/net/ISAACRandomGen.java similarity index 100% rename from client317/src/rs/net/ISAACRandomGen.java rename to clients/client317/src/main/java/rs/net/ISAACRandomGen.java diff --git a/client317/src/rs/net/RSSocket.java b/clients/client317/src/main/java/rs/net/RSSocket.java similarity index 100% rename from client317/src/rs/net/RSSocket.java rename to clients/client317/src/main/java/rs/net/RSSocket.java diff --git a/client317/src/rs/sign/signlink.java b/clients/client317/src/main/java/rs/sign/signlink.java similarity index 100% rename from client317/src/rs/sign/signlink.java rename to clients/client317/src/main/java/rs/sign/signlink.java diff --git a/client317/src/rs/stream/Class13.java b/clients/client317/src/main/java/rs/stream/Class13.java similarity index 100% rename from client317/src/rs/stream/Class13.java rename to clients/client317/src/main/java/rs/stream/Class13.java diff --git a/client317/src/rs/stream/Class32.java b/clients/client317/src/main/java/rs/stream/Class32.java similarity index 100% rename from client317/src/rs/stream/Class32.java rename to clients/client317/src/main/java/rs/stream/Class32.java diff --git a/client317/src/rs/stream/Stream.java b/clients/client317/src/main/java/rs/stream/Stream.java similarity index 100% rename from client317/src/rs/stream/Stream.java rename to clients/client317/src/main/java/rs/stream/Stream.java diff --git a/client317/src/rs/stream/StreamLoader.java b/clients/client317/src/main/java/rs/stream/StreamLoader.java similarity index 100% rename from client317/src/rs/stream/StreamLoader.java rename to clients/client317/src/main/java/rs/stream/StreamLoader.java diff --git a/clients/client508/pom.xml b/clients/client508/pom.xml new file mode 100644 index 0000000..556091f --- /dev/null +++ b/clients/client508/pom.xml @@ -0,0 +1,30 @@ + + + + + + org.moparscape.client + clients + 0.1-SNAPSHOT + + 4.0.0 + client508 + \ No newline at end of file diff --git a/client508/src/Animable.java b/clients/client508/src/main/java/Animable.java similarity index 100% rename from client508/src/Animable.java rename to clients/client508/src/main/java/Animable.java diff --git a/client508/src/Applet_Sub1.java b/clients/client508/src/main/java/Applet_Sub1.java similarity index 100% rename from client508/src/Applet_Sub1.java rename to clients/client508/src/main/java/Applet_Sub1.java diff --git a/client508/src/Canvas_Sub1.java b/clients/client508/src/main/java/Canvas_Sub1.java similarity index 100% rename from client508/src/Canvas_Sub1.java rename to clients/client508/src/main/java/Canvas_Sub1.java diff --git a/client508/src/Class10.java b/clients/client508/src/main/java/Class10.java similarity index 100% rename from client508/src/Class10.java rename to clients/client508/src/main/java/Class10.java diff --git a/client508/src/Class101.java b/clients/client508/src/main/java/Class101.java similarity index 100% rename from client508/src/Class101.java rename to clients/client508/src/main/java/Class101.java diff --git a/client508/src/Class102.java b/clients/client508/src/main/java/Class102.java similarity index 100% rename from client508/src/Class102.java rename to clients/client508/src/main/java/Class102.java diff --git a/client508/src/Class103.java b/clients/client508/src/main/java/Class103.java similarity index 100% rename from client508/src/Class103.java rename to clients/client508/src/main/java/Class103.java diff --git a/client508/src/Class104.java b/clients/client508/src/main/java/Class104.java similarity index 100% rename from client508/src/Class104.java rename to clients/client508/src/main/java/Class104.java diff --git a/client508/src/Class105.java b/clients/client508/src/main/java/Class105.java similarity index 100% rename from client508/src/Class105.java rename to clients/client508/src/main/java/Class105.java diff --git a/client508/src/Class105_Sub1.java b/clients/client508/src/main/java/Class105_Sub1.java similarity index 100% rename from client508/src/Class105_Sub1.java rename to clients/client508/src/main/java/Class105_Sub1.java diff --git a/client508/src/Class106.java b/clients/client508/src/main/java/Class106.java similarity index 100% rename from client508/src/Class106.java rename to clients/client508/src/main/java/Class106.java diff --git a/client508/src/Class107.java b/clients/client508/src/main/java/Class107.java similarity index 100% rename from client508/src/Class107.java rename to clients/client508/src/main/java/Class107.java diff --git a/client508/src/Class108.java b/clients/client508/src/main/java/Class108.java similarity index 100% rename from client508/src/Class108.java rename to clients/client508/src/main/java/Class108.java diff --git a/client508/src/Class109.java b/clients/client508/src/main/java/Class109.java similarity index 100% rename from client508/src/Class109.java rename to clients/client508/src/main/java/Class109.java diff --git a/client508/src/Class11.java b/clients/client508/src/main/java/Class11.java similarity index 100% rename from client508/src/Class11.java rename to clients/client508/src/main/java/Class11.java diff --git a/client508/src/Class110.java b/clients/client508/src/main/java/Class110.java similarity index 100% rename from client508/src/Class110.java rename to clients/client508/src/main/java/Class110.java diff --git a/client508/src/Class112.java b/clients/client508/src/main/java/Class112.java similarity index 100% rename from client508/src/Class112.java rename to clients/client508/src/main/java/Class112.java diff --git a/client508/src/Class113.java b/clients/client508/src/main/java/Class113.java similarity index 100% rename from client508/src/Class113.java rename to clients/client508/src/main/java/Class113.java diff --git a/client508/src/Class114.java b/clients/client508/src/main/java/Class114.java similarity index 100% rename from client508/src/Class114.java rename to clients/client508/src/main/java/Class114.java diff --git a/client508/src/Class115.java b/clients/client508/src/main/java/Class115.java similarity index 100% rename from client508/src/Class115.java rename to clients/client508/src/main/java/Class115.java diff --git a/client508/src/Class116.java b/clients/client508/src/main/java/Class116.java similarity index 100% rename from client508/src/Class116.java rename to clients/client508/src/main/java/Class116.java diff --git a/client508/src/Class118.java b/clients/client508/src/main/java/Class118.java similarity index 100% rename from client508/src/Class118.java rename to clients/client508/src/main/java/Class118.java diff --git a/client508/src/Class119.java b/clients/client508/src/main/java/Class119.java similarity index 100% rename from client508/src/Class119.java rename to clients/client508/src/main/java/Class119.java diff --git a/client508/src/Class12.java b/clients/client508/src/main/java/Class12.java similarity index 100% rename from client508/src/Class12.java rename to clients/client508/src/main/java/Class12.java diff --git a/client508/src/Class120.java b/clients/client508/src/main/java/Class120.java similarity index 100% rename from client508/src/Class120.java rename to clients/client508/src/main/java/Class120.java diff --git a/client508/src/Class121.java b/clients/client508/src/main/java/Class121.java similarity index 100% rename from client508/src/Class121.java rename to clients/client508/src/main/java/Class121.java diff --git a/client508/src/Class122.java b/clients/client508/src/main/java/Class122.java similarity index 100% rename from client508/src/Class122.java rename to clients/client508/src/main/java/Class122.java diff --git a/client508/src/Class123.java b/clients/client508/src/main/java/Class123.java similarity index 100% rename from client508/src/Class123.java rename to clients/client508/src/main/java/Class123.java diff --git a/client508/src/Class124.java b/clients/client508/src/main/java/Class124.java similarity index 100% rename from client508/src/Class124.java rename to clients/client508/src/main/java/Class124.java diff --git a/client508/src/Class125.java b/clients/client508/src/main/java/Class125.java similarity index 100% rename from client508/src/Class125.java rename to clients/client508/src/main/java/Class125.java diff --git a/client508/src/Class127.java b/clients/client508/src/main/java/Class127.java similarity index 100% rename from client508/src/Class127.java rename to clients/client508/src/main/java/Class127.java diff --git a/client508/src/Class128.java b/clients/client508/src/main/java/Class128.java similarity index 100% rename from client508/src/Class128.java rename to clients/client508/src/main/java/Class128.java diff --git a/client508/src/Class13.java b/clients/client508/src/main/java/Class13.java similarity index 100% rename from client508/src/Class13.java rename to clients/client508/src/main/java/Class13.java diff --git a/client508/src/Class13_Sub1.java b/clients/client508/src/main/java/Class13_Sub1.java similarity index 100% rename from client508/src/Class13_Sub1.java rename to clients/client508/src/main/java/Class13_Sub1.java diff --git a/client508/src/Class13_Sub2.java b/clients/client508/src/main/java/Class13_Sub2.java similarity index 100% rename from client508/src/Class13_Sub2.java rename to clients/client508/src/main/java/Class13_Sub2.java diff --git a/client508/src/Class13_Sub3.java b/clients/client508/src/main/java/Class13_Sub3.java similarity index 100% rename from client508/src/Class13_Sub3.java rename to clients/client508/src/main/java/Class13_Sub3.java diff --git a/client508/src/Class13_Sub4.java b/clients/client508/src/main/java/Class13_Sub4.java similarity index 100% rename from client508/src/Class13_Sub4.java rename to clients/client508/src/main/java/Class13_Sub4.java diff --git a/client508/src/Class14.java b/clients/client508/src/main/java/Class14.java similarity index 100% rename from client508/src/Class14.java rename to clients/client508/src/main/java/Class14.java diff --git a/client508/src/Class15.java b/clients/client508/src/main/java/Class15.java similarity index 100% rename from client508/src/Class15.java rename to clients/client508/src/main/java/Class15.java diff --git a/client508/src/Class15_Sub1.java b/clients/client508/src/main/java/Class15_Sub1.java similarity index 100% rename from client508/src/Class15_Sub1.java rename to clients/client508/src/main/java/Class15_Sub1.java diff --git a/client508/src/Class16.java b/clients/client508/src/main/java/Class16.java similarity index 100% rename from client508/src/Class16.java rename to clients/client508/src/main/java/Class16.java diff --git a/client508/src/Class17.java b/clients/client508/src/main/java/Class17.java similarity index 100% rename from client508/src/Class17.java rename to clients/client508/src/main/java/Class17.java diff --git a/client508/src/Class18.java b/clients/client508/src/main/java/Class18.java similarity index 100% rename from client508/src/Class18.java rename to clients/client508/src/main/java/Class18.java diff --git a/client508/src/Class1_Sub1.java b/clients/client508/src/main/java/Class1_Sub1.java similarity index 100% rename from client508/src/Class1_Sub1.java rename to clients/client508/src/main/java/Class1_Sub1.java diff --git a/client508/src/Class1_Sub2.java b/clients/client508/src/main/java/Class1_Sub2.java similarity index 100% rename from client508/src/Class1_Sub2.java rename to clients/client508/src/main/java/Class1_Sub2.java diff --git a/client508/src/Class1_Sub3.java b/clients/client508/src/main/java/Class1_Sub3.java similarity index 100% rename from client508/src/Class1_Sub3.java rename to clients/client508/src/main/java/Class1_Sub3.java diff --git a/client508/src/Class1_Sub3_Sub1.java b/clients/client508/src/main/java/Class1_Sub3_Sub1.java similarity index 100% rename from client508/src/Class1_Sub3_Sub1.java rename to clients/client508/src/main/java/Class1_Sub3_Sub1.java diff --git a/client508/src/Class1_Sub4.java b/clients/client508/src/main/java/Class1_Sub4.java similarity index 100% rename from client508/src/Class1_Sub4.java rename to clients/client508/src/main/java/Class1_Sub4.java diff --git a/client508/src/Class1_Sub5.java b/clients/client508/src/main/java/Class1_Sub5.java similarity index 100% rename from client508/src/Class1_Sub5.java rename to clients/client508/src/main/java/Class1_Sub5.java diff --git a/client508/src/Class1_Sub6.java b/clients/client508/src/main/java/Class1_Sub6.java similarity index 100% rename from client508/src/Class1_Sub6.java rename to clients/client508/src/main/java/Class1_Sub6.java diff --git a/client508/src/Class1_Sub6_Sub1.java b/clients/client508/src/main/java/Class1_Sub6_Sub1.java similarity index 100% rename from client508/src/Class1_Sub6_Sub1.java rename to clients/client508/src/main/java/Class1_Sub6_Sub1.java diff --git a/client508/src/Class1_Sub6_Sub2.java b/clients/client508/src/main/java/Class1_Sub6_Sub2.java similarity index 100% rename from client508/src/Class1_Sub6_Sub2.java rename to clients/client508/src/main/java/Class1_Sub6_Sub2.java diff --git a/client508/src/Class1_Sub7.java b/clients/client508/src/main/java/Class1_Sub7.java similarity index 100% rename from client508/src/Class1_Sub7.java rename to clients/client508/src/main/java/Class1_Sub7.java diff --git a/client508/src/Class2.java b/clients/client508/src/main/java/Class2.java similarity index 100% rename from client508/src/Class2.java rename to clients/client508/src/main/java/Class2.java diff --git a/client508/src/Class20.java b/clients/client508/src/main/java/Class20.java similarity index 100% rename from client508/src/Class20.java rename to clients/client508/src/main/java/Class20.java diff --git a/client508/src/Class21_Sub1.java b/clients/client508/src/main/java/Class21_Sub1.java similarity index 100% rename from client508/src/Class21_Sub1.java rename to clients/client508/src/main/java/Class21_Sub1.java diff --git a/client508/src/Class21renamed.java b/clients/client508/src/main/java/Class21renamed.java similarity index 100% rename from client508/src/Class21renamed.java rename to clients/client508/src/main/java/Class21renamed.java diff --git a/client508/src/Class22.java b/clients/client508/src/main/java/Class22.java similarity index 100% rename from client508/src/Class22.java rename to clients/client508/src/main/java/Class22.java diff --git a/client508/src/Class23.java b/clients/client508/src/main/java/Class23.java similarity index 100% rename from client508/src/Class23.java rename to clients/client508/src/main/java/Class23.java diff --git a/client508/src/Class24.java b/clients/client508/src/main/java/Class24.java similarity index 100% rename from client508/src/Class24.java rename to clients/client508/src/main/java/Class24.java diff --git a/client508/src/Class25.java b/clients/client508/src/main/java/Class25.java similarity index 100% rename from client508/src/Class25.java rename to clients/client508/src/main/java/Class25.java diff --git a/client508/src/Class26.java b/clients/client508/src/main/java/Class26.java similarity index 100% rename from client508/src/Class26.java rename to clients/client508/src/main/java/Class26.java diff --git a/client508/src/Class27.java b/clients/client508/src/main/java/Class27.java similarity index 100% rename from client508/src/Class27.java rename to clients/client508/src/main/java/Class27.java diff --git a/client508/src/Class28.java b/clients/client508/src/main/java/Class28.java similarity index 100% rename from client508/src/Class28.java rename to clients/client508/src/main/java/Class28.java diff --git a/client508/src/Class29.java b/clients/client508/src/main/java/Class29.java similarity index 100% rename from client508/src/Class29.java rename to clients/client508/src/main/java/Class29.java diff --git a/client508/src/Class3.java b/clients/client508/src/main/java/Class3.java similarity index 100% rename from client508/src/Class3.java rename to clients/client508/src/main/java/Class3.java diff --git a/client508/src/Class30.java b/clients/client508/src/main/java/Class30.java similarity index 100% rename from client508/src/Class30.java rename to clients/client508/src/main/java/Class30.java diff --git a/client508/src/Class32.java b/clients/client508/src/main/java/Class32.java similarity index 100% rename from client508/src/Class32.java rename to clients/client508/src/main/java/Class32.java diff --git a/client508/src/Class33.java b/clients/client508/src/main/java/Class33.java similarity index 100% rename from client508/src/Class33.java rename to clients/client508/src/main/java/Class33.java diff --git a/client508/src/Class34.java b/clients/client508/src/main/java/Class34.java similarity index 100% rename from client508/src/Class34.java rename to clients/client508/src/main/java/Class34.java diff --git a/client508/src/Class35.java b/clients/client508/src/main/java/Class35.java similarity index 100% rename from client508/src/Class35.java rename to clients/client508/src/main/java/Class35.java diff --git a/client508/src/Class35_Sub1.java b/clients/client508/src/main/java/Class35_Sub1.java similarity index 100% rename from client508/src/Class35_Sub1.java rename to clients/client508/src/main/java/Class35_Sub1.java diff --git a/client508/src/Class35_Sub2.java b/clients/client508/src/main/java/Class35_Sub2.java similarity index 100% rename from client508/src/Class35_Sub2.java rename to clients/client508/src/main/java/Class35_Sub2.java diff --git a/client508/src/Class36.java b/clients/client508/src/main/java/Class36.java similarity index 100% rename from client508/src/Class36.java rename to clients/client508/src/main/java/Class36.java diff --git a/client508/src/Class37.java b/clients/client508/src/main/java/Class37.java similarity index 100% rename from client508/src/Class37.java rename to clients/client508/src/main/java/Class37.java diff --git a/client508/src/Class39.java b/clients/client508/src/main/java/Class39.java similarity index 100% rename from client508/src/Class39.java rename to clients/client508/src/main/java/Class39.java diff --git a/client508/src/Class4.java b/clients/client508/src/main/java/Class4.java similarity index 100% rename from client508/src/Class4.java rename to clients/client508/src/main/java/Class4.java diff --git a/client508/src/Class40.java b/clients/client508/src/main/java/Class40.java similarity index 100% rename from client508/src/Class40.java rename to clients/client508/src/main/java/Class40.java diff --git a/client508/src/Class41.java b/clients/client508/src/main/java/Class41.java similarity index 100% rename from client508/src/Class41.java rename to clients/client508/src/main/java/Class41.java diff --git a/client508/src/Class42.java b/clients/client508/src/main/java/Class42.java similarity index 100% rename from client508/src/Class42.java rename to clients/client508/src/main/java/Class42.java diff --git a/client508/src/Class43.java b/clients/client508/src/main/java/Class43.java similarity index 100% rename from client508/src/Class43.java rename to clients/client508/src/main/java/Class43.java diff --git a/client508/src/Class44.java b/clients/client508/src/main/java/Class44.java similarity index 100% rename from client508/src/Class44.java rename to clients/client508/src/main/java/Class44.java diff --git a/client508/src/Class45.java b/clients/client508/src/main/java/Class45.java similarity index 100% rename from client508/src/Class45.java rename to clients/client508/src/main/java/Class45.java diff --git a/client508/src/Class46.java b/clients/client508/src/main/java/Class46.java similarity index 100% rename from client508/src/Class46.java rename to clients/client508/src/main/java/Class46.java diff --git a/client508/src/Class47.java b/clients/client508/src/main/java/Class47.java similarity index 100% rename from client508/src/Class47.java rename to clients/client508/src/main/java/Class47.java diff --git a/client508/src/Class48.java b/clients/client508/src/main/java/Class48.java similarity index 100% rename from client508/src/Class48.java rename to clients/client508/src/main/java/Class48.java diff --git a/client508/src/Class49.java b/clients/client508/src/main/java/Class49.java similarity index 100% rename from client508/src/Class49.java rename to clients/client508/src/main/java/Class49.java diff --git a/client508/src/Class5.java b/clients/client508/src/main/java/Class5.java similarity index 100% rename from client508/src/Class5.java rename to clients/client508/src/main/java/Class5.java diff --git a/client508/src/Class50.java b/clients/client508/src/main/java/Class50.java similarity index 100% rename from client508/src/Class50.java rename to clients/client508/src/main/java/Class50.java diff --git a/client508/src/Class50_Sub1.java b/clients/client508/src/main/java/Class50_Sub1.java similarity index 100% rename from client508/src/Class50_Sub1.java rename to clients/client508/src/main/java/Class50_Sub1.java diff --git a/client508/src/Class50_Sub2.java b/clients/client508/src/main/java/Class50_Sub2.java similarity index 100% rename from client508/src/Class50_Sub2.java rename to clients/client508/src/main/java/Class50_Sub2.java diff --git a/client508/src/Class51.java b/clients/client508/src/main/java/Class51.java similarity index 100% rename from client508/src/Class51.java rename to clients/client508/src/main/java/Class51.java diff --git a/client508/src/Class52.java b/clients/client508/src/main/java/Class52.java similarity index 100% rename from client508/src/Class52.java rename to clients/client508/src/main/java/Class52.java diff --git a/client508/src/Class53.java b/clients/client508/src/main/java/Class53.java similarity index 100% rename from client508/src/Class53.java rename to clients/client508/src/main/java/Class53.java diff --git a/client508/src/Class54.java b/clients/client508/src/main/java/Class54.java similarity index 100% rename from client508/src/Class54.java rename to clients/client508/src/main/java/Class54.java diff --git a/client508/src/Class55.java b/clients/client508/src/main/java/Class55.java similarity index 100% rename from client508/src/Class55.java rename to clients/client508/src/main/java/Class55.java diff --git a/client508/src/Class56.java b/clients/client508/src/main/java/Class56.java similarity index 100% rename from client508/src/Class56.java rename to clients/client508/src/main/java/Class56.java diff --git a/client508/src/Class57.java b/clients/client508/src/main/java/Class57.java similarity index 100% rename from client508/src/Class57.java rename to clients/client508/src/main/java/Class57.java diff --git a/client508/src/Class58.java b/clients/client508/src/main/java/Class58.java similarity index 100% rename from client508/src/Class58.java rename to clients/client508/src/main/java/Class58.java diff --git a/client508/src/Class59.java b/clients/client508/src/main/java/Class59.java similarity index 100% rename from client508/src/Class59.java rename to clients/client508/src/main/java/Class59.java diff --git a/client508/src/Class6.java b/clients/client508/src/main/java/Class6.java similarity index 100% rename from client508/src/Class6.java rename to clients/client508/src/main/java/Class6.java diff --git a/client508/src/Class60.java b/clients/client508/src/main/java/Class60.java similarity index 100% rename from client508/src/Class60.java rename to clients/client508/src/main/java/Class60.java diff --git a/client508/src/Class62.java b/clients/client508/src/main/java/Class62.java similarity index 100% rename from client508/src/Class62.java rename to clients/client508/src/main/java/Class62.java diff --git a/client508/src/Class63.java b/clients/client508/src/main/java/Class63.java similarity index 100% rename from client508/src/Class63.java rename to clients/client508/src/main/java/Class63.java diff --git a/client508/src/Class64.java b/clients/client508/src/main/java/Class64.java similarity index 100% rename from client508/src/Class64.java rename to clients/client508/src/main/java/Class64.java diff --git a/client508/src/Class65.java b/clients/client508/src/main/java/Class65.java similarity index 100% rename from client508/src/Class65.java rename to clients/client508/src/main/java/Class65.java diff --git a/client508/src/Class66.java b/clients/client508/src/main/java/Class66.java similarity index 100% rename from client508/src/Class66.java rename to clients/client508/src/main/java/Class66.java diff --git a/client508/src/Class67.java b/clients/client508/src/main/java/Class67.java similarity index 100% rename from client508/src/Class67.java rename to clients/client508/src/main/java/Class67.java diff --git a/client508/src/Class68.java b/clients/client508/src/main/java/Class68.java similarity index 100% rename from client508/src/Class68.java rename to clients/client508/src/main/java/Class68.java diff --git a/client508/src/Class68_Sub1.java b/clients/client508/src/main/java/Class68_Sub1.java similarity index 100% rename from client508/src/Class68_Sub1.java rename to clients/client508/src/main/java/Class68_Sub1.java diff --git a/client508/src/Class68_Sub10.java b/clients/client508/src/main/java/Class68_Sub10.java similarity index 100% rename from client508/src/Class68_Sub10.java rename to clients/client508/src/main/java/Class68_Sub10.java diff --git a/client508/src/Class68_Sub11.java b/clients/client508/src/main/java/Class68_Sub11.java similarity index 100% rename from client508/src/Class68_Sub11.java rename to clients/client508/src/main/java/Class68_Sub11.java diff --git a/client508/src/Class68_Sub11_Sub1.java b/clients/client508/src/main/java/Class68_Sub11_Sub1.java similarity index 100% rename from client508/src/Class68_Sub11_Sub1.java rename to clients/client508/src/main/java/Class68_Sub11_Sub1.java diff --git a/client508/src/Class68_Sub12.java b/clients/client508/src/main/java/Class68_Sub12.java similarity index 100% rename from client508/src/Class68_Sub12.java rename to clients/client508/src/main/java/Class68_Sub12.java diff --git a/client508/src/Class68_Sub13.java b/clients/client508/src/main/java/Class68_Sub13.java similarity index 100% rename from client508/src/Class68_Sub13.java rename to clients/client508/src/main/java/Class68_Sub13.java diff --git a/client508/src/Class68_Sub13_Sub1.java b/clients/client508/src/main/java/Class68_Sub13_Sub1.java similarity index 100% rename from client508/src/Class68_Sub13_Sub1.java rename to clients/client508/src/main/java/Class68_Sub13_Sub1.java diff --git a/client508/src/Class68_Sub13_Sub10.java b/clients/client508/src/main/java/Class68_Sub13_Sub10.java similarity index 100% rename from client508/src/Class68_Sub13_Sub10.java rename to clients/client508/src/main/java/Class68_Sub13_Sub10.java diff --git a/client508/src/Class68_Sub13_Sub11.java b/clients/client508/src/main/java/Class68_Sub13_Sub11.java similarity index 100% rename from client508/src/Class68_Sub13_Sub11.java rename to clients/client508/src/main/java/Class68_Sub13_Sub11.java diff --git a/client508/src/Class68_Sub13_Sub12.java b/clients/client508/src/main/java/Class68_Sub13_Sub12.java similarity index 100% rename from client508/src/Class68_Sub13_Sub12.java rename to clients/client508/src/main/java/Class68_Sub13_Sub12.java diff --git a/client508/src/Class68_Sub13_Sub13.java b/clients/client508/src/main/java/Class68_Sub13_Sub13.java similarity index 100% rename from client508/src/Class68_Sub13_Sub13.java rename to clients/client508/src/main/java/Class68_Sub13_Sub13.java diff --git a/client508/src/Class68_Sub13_Sub14.java b/clients/client508/src/main/java/Class68_Sub13_Sub14.java similarity index 100% rename from client508/src/Class68_Sub13_Sub14.java rename to clients/client508/src/main/java/Class68_Sub13_Sub14.java diff --git a/client508/src/Class68_Sub13_Sub15.java b/clients/client508/src/main/java/Class68_Sub13_Sub15.java similarity index 100% rename from client508/src/Class68_Sub13_Sub15.java rename to clients/client508/src/main/java/Class68_Sub13_Sub15.java diff --git a/client508/src/Class68_Sub13_Sub16.java b/clients/client508/src/main/java/Class68_Sub13_Sub16.java similarity index 100% rename from client508/src/Class68_Sub13_Sub16.java rename to clients/client508/src/main/java/Class68_Sub13_Sub16.java diff --git a/client508/src/Class68_Sub13_Sub17.java b/clients/client508/src/main/java/Class68_Sub13_Sub17.java similarity index 100% rename from client508/src/Class68_Sub13_Sub17.java rename to clients/client508/src/main/java/Class68_Sub13_Sub17.java diff --git a/client508/src/Class68_Sub13_Sub18.java b/clients/client508/src/main/java/Class68_Sub13_Sub18.java similarity index 100% rename from client508/src/Class68_Sub13_Sub18.java rename to clients/client508/src/main/java/Class68_Sub13_Sub18.java diff --git a/client508/src/Class68_Sub13_Sub19.java b/clients/client508/src/main/java/Class68_Sub13_Sub19.java similarity index 100% rename from client508/src/Class68_Sub13_Sub19.java rename to clients/client508/src/main/java/Class68_Sub13_Sub19.java diff --git a/client508/src/Class68_Sub13_Sub2.java b/clients/client508/src/main/java/Class68_Sub13_Sub2.java similarity index 100% rename from client508/src/Class68_Sub13_Sub2.java rename to clients/client508/src/main/java/Class68_Sub13_Sub2.java diff --git a/client508/src/Class68_Sub13_Sub20.java b/clients/client508/src/main/java/Class68_Sub13_Sub20.java similarity index 100% rename from client508/src/Class68_Sub13_Sub20.java rename to clients/client508/src/main/java/Class68_Sub13_Sub20.java diff --git a/client508/src/Class68_Sub13_Sub21.java b/clients/client508/src/main/java/Class68_Sub13_Sub21.java similarity index 100% rename from client508/src/Class68_Sub13_Sub21.java rename to clients/client508/src/main/java/Class68_Sub13_Sub21.java diff --git a/client508/src/Class68_Sub13_Sub22.java b/clients/client508/src/main/java/Class68_Sub13_Sub22.java similarity index 100% rename from client508/src/Class68_Sub13_Sub22.java rename to clients/client508/src/main/java/Class68_Sub13_Sub22.java diff --git a/client508/src/Class68_Sub13_Sub23.java b/clients/client508/src/main/java/Class68_Sub13_Sub23.java similarity index 100% rename from client508/src/Class68_Sub13_Sub23.java rename to clients/client508/src/main/java/Class68_Sub13_Sub23.java diff --git a/client508/src/Class68_Sub13_Sub24.java b/clients/client508/src/main/java/Class68_Sub13_Sub24.java similarity index 100% rename from client508/src/Class68_Sub13_Sub24.java rename to clients/client508/src/main/java/Class68_Sub13_Sub24.java diff --git a/client508/src/Class68_Sub13_Sub25.java b/clients/client508/src/main/java/Class68_Sub13_Sub25.java similarity index 100% rename from client508/src/Class68_Sub13_Sub25.java rename to clients/client508/src/main/java/Class68_Sub13_Sub25.java diff --git a/client508/src/Class68_Sub13_Sub26.java b/clients/client508/src/main/java/Class68_Sub13_Sub26.java similarity index 100% rename from client508/src/Class68_Sub13_Sub26.java rename to clients/client508/src/main/java/Class68_Sub13_Sub26.java diff --git a/client508/src/Class68_Sub13_Sub26_Sub1.java b/clients/client508/src/main/java/Class68_Sub13_Sub26_Sub1.java similarity index 100% rename from client508/src/Class68_Sub13_Sub26_Sub1.java rename to clients/client508/src/main/java/Class68_Sub13_Sub26_Sub1.java diff --git a/client508/src/Class68_Sub13_Sub27.java b/clients/client508/src/main/java/Class68_Sub13_Sub27.java similarity index 100% rename from client508/src/Class68_Sub13_Sub27.java rename to clients/client508/src/main/java/Class68_Sub13_Sub27.java diff --git a/client508/src/Class68_Sub13_Sub28.java b/clients/client508/src/main/java/Class68_Sub13_Sub28.java similarity index 100% rename from client508/src/Class68_Sub13_Sub28.java rename to clients/client508/src/main/java/Class68_Sub13_Sub28.java diff --git a/client508/src/Class68_Sub13_Sub29.java b/clients/client508/src/main/java/Class68_Sub13_Sub29.java similarity index 100% rename from client508/src/Class68_Sub13_Sub29.java rename to clients/client508/src/main/java/Class68_Sub13_Sub29.java diff --git a/client508/src/Class68_Sub13_Sub3.java b/clients/client508/src/main/java/Class68_Sub13_Sub3.java similarity index 100% rename from client508/src/Class68_Sub13_Sub3.java rename to clients/client508/src/main/java/Class68_Sub13_Sub3.java diff --git a/client508/src/Class68_Sub13_Sub30.java b/clients/client508/src/main/java/Class68_Sub13_Sub30.java similarity index 100% rename from client508/src/Class68_Sub13_Sub30.java rename to clients/client508/src/main/java/Class68_Sub13_Sub30.java diff --git a/client508/src/Class68_Sub13_Sub31.java b/clients/client508/src/main/java/Class68_Sub13_Sub31.java similarity index 100% rename from client508/src/Class68_Sub13_Sub31.java rename to clients/client508/src/main/java/Class68_Sub13_Sub31.java diff --git a/client508/src/Class68_Sub13_Sub32.java b/clients/client508/src/main/java/Class68_Sub13_Sub32.java similarity index 100% rename from client508/src/Class68_Sub13_Sub32.java rename to clients/client508/src/main/java/Class68_Sub13_Sub32.java diff --git a/client508/src/Class68_Sub13_Sub33.java b/clients/client508/src/main/java/Class68_Sub13_Sub33.java similarity index 100% rename from client508/src/Class68_Sub13_Sub33.java rename to clients/client508/src/main/java/Class68_Sub13_Sub33.java diff --git a/client508/src/Class68_Sub13_Sub34.java b/clients/client508/src/main/java/Class68_Sub13_Sub34.java similarity index 100% rename from client508/src/Class68_Sub13_Sub34.java rename to clients/client508/src/main/java/Class68_Sub13_Sub34.java diff --git a/client508/src/Class68_Sub13_Sub35.java b/clients/client508/src/main/java/Class68_Sub13_Sub35.java similarity index 100% rename from client508/src/Class68_Sub13_Sub35.java rename to clients/client508/src/main/java/Class68_Sub13_Sub35.java diff --git a/client508/src/Class68_Sub13_Sub36.java b/clients/client508/src/main/java/Class68_Sub13_Sub36.java similarity index 100% rename from client508/src/Class68_Sub13_Sub36.java rename to clients/client508/src/main/java/Class68_Sub13_Sub36.java diff --git a/client508/src/Class68_Sub13_Sub37.java b/clients/client508/src/main/java/Class68_Sub13_Sub37.java similarity index 100% rename from client508/src/Class68_Sub13_Sub37.java rename to clients/client508/src/main/java/Class68_Sub13_Sub37.java diff --git a/client508/src/Class68_Sub13_Sub38.java b/clients/client508/src/main/java/Class68_Sub13_Sub38.java similarity index 100% rename from client508/src/Class68_Sub13_Sub38.java rename to clients/client508/src/main/java/Class68_Sub13_Sub38.java diff --git a/client508/src/Class68_Sub13_Sub39.java b/clients/client508/src/main/java/Class68_Sub13_Sub39.java similarity index 100% rename from client508/src/Class68_Sub13_Sub39.java rename to clients/client508/src/main/java/Class68_Sub13_Sub39.java diff --git a/client508/src/Class68_Sub13_Sub4.java b/clients/client508/src/main/java/Class68_Sub13_Sub4.java similarity index 100% rename from client508/src/Class68_Sub13_Sub4.java rename to clients/client508/src/main/java/Class68_Sub13_Sub4.java diff --git a/client508/src/Class68_Sub13_Sub5.java b/clients/client508/src/main/java/Class68_Sub13_Sub5.java similarity index 100% rename from client508/src/Class68_Sub13_Sub5.java rename to clients/client508/src/main/java/Class68_Sub13_Sub5.java diff --git a/client508/src/Class68_Sub13_Sub6.java b/clients/client508/src/main/java/Class68_Sub13_Sub6.java similarity index 100% rename from client508/src/Class68_Sub13_Sub6.java rename to clients/client508/src/main/java/Class68_Sub13_Sub6.java diff --git a/client508/src/Class68_Sub13_Sub7.java b/clients/client508/src/main/java/Class68_Sub13_Sub7.java similarity index 100% rename from client508/src/Class68_Sub13_Sub7.java rename to clients/client508/src/main/java/Class68_Sub13_Sub7.java diff --git a/client508/src/Class68_Sub13_Sub8.java b/clients/client508/src/main/java/Class68_Sub13_Sub8.java similarity index 100% rename from client508/src/Class68_Sub13_Sub8.java rename to clients/client508/src/main/java/Class68_Sub13_Sub8.java diff --git a/client508/src/Class68_Sub13_Sub9.java b/clients/client508/src/main/java/Class68_Sub13_Sub9.java similarity index 100% rename from client508/src/Class68_Sub13_Sub9.java rename to clients/client508/src/main/java/Class68_Sub13_Sub9.java diff --git a/client508/src/Class68_Sub15.java b/clients/client508/src/main/java/Class68_Sub15.java similarity index 100% rename from client508/src/Class68_Sub15.java rename to clients/client508/src/main/java/Class68_Sub15.java diff --git a/client508/src/Class68_Sub16.java b/clients/client508/src/main/java/Class68_Sub16.java similarity index 100% rename from client508/src/Class68_Sub16.java rename to clients/client508/src/main/java/Class68_Sub16.java diff --git a/client508/src/Class68_Sub17.java b/clients/client508/src/main/java/Class68_Sub17.java similarity index 100% rename from client508/src/Class68_Sub17.java rename to clients/client508/src/main/java/Class68_Sub17.java diff --git a/client508/src/Class68_Sub18.java b/clients/client508/src/main/java/Class68_Sub18.java similarity index 100% rename from client508/src/Class68_Sub18.java rename to clients/client508/src/main/java/Class68_Sub18.java diff --git a/client508/src/Class68_Sub19.java b/clients/client508/src/main/java/Class68_Sub19.java similarity index 100% rename from client508/src/Class68_Sub19.java rename to clients/client508/src/main/java/Class68_Sub19.java diff --git a/client508/src/Class68_Sub2.java b/clients/client508/src/main/java/Class68_Sub2.java similarity index 100% rename from client508/src/Class68_Sub2.java rename to clients/client508/src/main/java/Class68_Sub2.java diff --git a/client508/src/Class68_Sub20.java b/clients/client508/src/main/java/Class68_Sub20.java similarity index 100% rename from client508/src/Class68_Sub20.java rename to clients/client508/src/main/java/Class68_Sub20.java diff --git a/client508/src/Class68_Sub20_Sub1.java b/clients/client508/src/main/java/Class68_Sub20_Sub1.java similarity index 100% rename from client508/src/Class68_Sub20_Sub1.java rename to clients/client508/src/main/java/Class68_Sub20_Sub1.java diff --git a/client508/src/Class68_Sub20_Sub10.java b/clients/client508/src/main/java/Class68_Sub20_Sub10.java similarity index 100% rename from client508/src/Class68_Sub20_Sub10.java rename to clients/client508/src/main/java/Class68_Sub20_Sub10.java diff --git a/client508/src/Class68_Sub20_Sub11.java b/clients/client508/src/main/java/Class68_Sub20_Sub11.java similarity index 100% rename from client508/src/Class68_Sub20_Sub11.java rename to clients/client508/src/main/java/Class68_Sub20_Sub11.java diff --git a/client508/src/Class68_Sub20_Sub12.java b/clients/client508/src/main/java/Class68_Sub20_Sub12.java similarity index 100% rename from client508/src/Class68_Sub20_Sub12.java rename to clients/client508/src/main/java/Class68_Sub20_Sub12.java diff --git a/client508/src/Class68_Sub20_Sub13.java b/clients/client508/src/main/java/Class68_Sub20_Sub13.java similarity index 100% rename from client508/src/Class68_Sub20_Sub13.java rename to clients/client508/src/main/java/Class68_Sub20_Sub13.java diff --git a/client508/src/Class68_Sub20_Sub13_Sub1.java b/clients/client508/src/main/java/Class68_Sub20_Sub13_Sub1.java similarity index 100% rename from client508/src/Class68_Sub20_Sub13_Sub1.java rename to clients/client508/src/main/java/Class68_Sub20_Sub13_Sub1.java diff --git a/client508/src/Class68_Sub20_Sub13_Sub2.java b/clients/client508/src/main/java/Class68_Sub20_Sub13_Sub2.java similarity index 100% rename from client508/src/Class68_Sub20_Sub13_Sub2.java rename to clients/client508/src/main/java/Class68_Sub20_Sub13_Sub2.java diff --git a/client508/src/Class68_Sub20_Sub14.java b/clients/client508/src/main/java/Class68_Sub20_Sub14.java similarity index 100% rename from client508/src/Class68_Sub20_Sub14.java rename to clients/client508/src/main/java/Class68_Sub20_Sub14.java diff --git a/client508/src/Class68_Sub20_Sub15.java b/clients/client508/src/main/java/Class68_Sub20_Sub15.java similarity index 100% rename from client508/src/Class68_Sub20_Sub15.java rename to clients/client508/src/main/java/Class68_Sub20_Sub15.java diff --git a/client508/src/Class68_Sub20_Sub16.java b/clients/client508/src/main/java/Class68_Sub20_Sub16.java similarity index 100% rename from client508/src/Class68_Sub20_Sub16.java rename to clients/client508/src/main/java/Class68_Sub20_Sub16.java diff --git a/client508/src/Class68_Sub20_Sub17.java b/clients/client508/src/main/java/Class68_Sub20_Sub17.java similarity index 100% rename from client508/src/Class68_Sub20_Sub17.java rename to clients/client508/src/main/java/Class68_Sub20_Sub17.java diff --git a/client508/src/Class68_Sub20_Sub18.java b/clients/client508/src/main/java/Class68_Sub20_Sub18.java similarity index 100% rename from client508/src/Class68_Sub20_Sub18.java rename to clients/client508/src/main/java/Class68_Sub20_Sub18.java diff --git a/client508/src/Class68_Sub20_Sub19.java b/clients/client508/src/main/java/Class68_Sub20_Sub19.java similarity index 100% rename from client508/src/Class68_Sub20_Sub19.java rename to clients/client508/src/main/java/Class68_Sub20_Sub19.java diff --git a/client508/src/Class68_Sub20_Sub1_Sub1.java b/clients/client508/src/main/java/Class68_Sub20_Sub1_Sub1.java similarity index 100% rename from client508/src/Class68_Sub20_Sub1_Sub1.java rename to clients/client508/src/main/java/Class68_Sub20_Sub1_Sub1.java diff --git a/client508/src/Class68_Sub20_Sub2.java b/clients/client508/src/main/java/Class68_Sub20_Sub2.java similarity index 100% rename from client508/src/Class68_Sub20_Sub2.java rename to clients/client508/src/main/java/Class68_Sub20_Sub2.java diff --git a/client508/src/Class68_Sub20_Sub3.java b/clients/client508/src/main/java/Class68_Sub20_Sub3.java similarity index 100% rename from client508/src/Class68_Sub20_Sub3.java rename to clients/client508/src/main/java/Class68_Sub20_Sub3.java diff --git a/client508/src/Class68_Sub20_Sub4.java b/clients/client508/src/main/java/Class68_Sub20_Sub4.java similarity index 100% rename from client508/src/Class68_Sub20_Sub4.java rename to clients/client508/src/main/java/Class68_Sub20_Sub4.java diff --git a/client508/src/Class68_Sub20_Sub5.java b/clients/client508/src/main/java/Class68_Sub20_Sub5.java similarity index 100% rename from client508/src/Class68_Sub20_Sub5.java rename to clients/client508/src/main/java/Class68_Sub20_Sub5.java diff --git a/client508/src/Class68_Sub20_Sub6.java b/clients/client508/src/main/java/Class68_Sub20_Sub6.java similarity index 100% rename from client508/src/Class68_Sub20_Sub6.java rename to clients/client508/src/main/java/Class68_Sub20_Sub6.java diff --git a/client508/src/Class68_Sub20_Sub7.java b/clients/client508/src/main/java/Class68_Sub20_Sub7.java similarity index 100% rename from client508/src/Class68_Sub20_Sub7.java rename to clients/client508/src/main/java/Class68_Sub20_Sub7.java diff --git a/client508/src/Class68_Sub20_Sub8.java b/clients/client508/src/main/java/Class68_Sub20_Sub8.java similarity index 100% rename from client508/src/Class68_Sub20_Sub8.java rename to clients/client508/src/main/java/Class68_Sub20_Sub8.java diff --git a/client508/src/Class68_Sub20_Sub9.java b/clients/client508/src/main/java/Class68_Sub20_Sub9.java similarity index 100% rename from client508/src/Class68_Sub20_Sub9.java rename to clients/client508/src/main/java/Class68_Sub20_Sub9.java diff --git a/client508/src/Class68_Sub21.java b/clients/client508/src/main/java/Class68_Sub21.java similarity index 100% rename from client508/src/Class68_Sub21.java rename to clients/client508/src/main/java/Class68_Sub21.java diff --git a/client508/src/Class68_Sub22.java b/clients/client508/src/main/java/Class68_Sub22.java similarity index 100% rename from client508/src/Class68_Sub22.java rename to clients/client508/src/main/java/Class68_Sub22.java diff --git a/client508/src/Class68_Sub23.java b/clients/client508/src/main/java/Class68_Sub23.java similarity index 100% rename from client508/src/Class68_Sub23.java rename to clients/client508/src/main/java/Class68_Sub23.java diff --git a/client508/src/Class68_Sub24.java b/clients/client508/src/main/java/Class68_Sub24.java similarity index 100% rename from client508/src/Class68_Sub24.java rename to clients/client508/src/main/java/Class68_Sub24.java diff --git a/client508/src/Class68_Sub25.java b/clients/client508/src/main/java/Class68_Sub25.java similarity index 100% rename from client508/src/Class68_Sub25.java rename to clients/client508/src/main/java/Class68_Sub25.java diff --git a/client508/src/Class68_Sub26.java b/clients/client508/src/main/java/Class68_Sub26.java similarity index 100% rename from client508/src/Class68_Sub26.java rename to clients/client508/src/main/java/Class68_Sub26.java diff --git a/client508/src/Class68_Sub27.java b/clients/client508/src/main/java/Class68_Sub27.java similarity index 100% rename from client508/src/Class68_Sub27.java rename to clients/client508/src/main/java/Class68_Sub27.java diff --git a/client508/src/Class68_Sub28.java b/clients/client508/src/main/java/Class68_Sub28.java similarity index 100% rename from client508/src/Class68_Sub28.java rename to clients/client508/src/main/java/Class68_Sub28.java diff --git a/client508/src/Class68_Sub28_Sub1.java b/clients/client508/src/main/java/Class68_Sub28_Sub1.java similarity index 100% rename from client508/src/Class68_Sub28_Sub1.java rename to clients/client508/src/main/java/Class68_Sub28_Sub1.java diff --git a/client508/src/Class68_Sub28_Sub2.java b/clients/client508/src/main/java/Class68_Sub28_Sub2.java similarity index 100% rename from client508/src/Class68_Sub28_Sub2.java rename to clients/client508/src/main/java/Class68_Sub28_Sub2.java diff --git a/client508/src/Class68_Sub28_Sub3.java b/clients/client508/src/main/java/Class68_Sub28_Sub3.java similarity index 100% rename from client508/src/Class68_Sub28_Sub3.java rename to clients/client508/src/main/java/Class68_Sub28_Sub3.java diff --git a/client508/src/Class68_Sub28_Sub4.java b/clients/client508/src/main/java/Class68_Sub28_Sub4.java similarity index 100% rename from client508/src/Class68_Sub28_Sub4.java rename to clients/client508/src/main/java/Class68_Sub28_Sub4.java diff --git a/client508/src/Class68_Sub29.java b/clients/client508/src/main/java/Class68_Sub29.java similarity index 100% rename from client508/src/Class68_Sub29.java rename to clients/client508/src/main/java/Class68_Sub29.java diff --git a/client508/src/Class68_Sub3.java b/clients/client508/src/main/java/Class68_Sub3.java similarity index 100% rename from client508/src/Class68_Sub3.java rename to clients/client508/src/main/java/Class68_Sub3.java diff --git a/client508/src/Class68_Sub4.java b/clients/client508/src/main/java/Class68_Sub4.java similarity index 100% rename from client508/src/Class68_Sub4.java rename to clients/client508/src/main/java/Class68_Sub4.java diff --git a/client508/src/Class68_Sub5.java b/clients/client508/src/main/java/Class68_Sub5.java similarity index 100% rename from client508/src/Class68_Sub5.java rename to clients/client508/src/main/java/Class68_Sub5.java diff --git a/client508/src/Class68_Sub6.java b/clients/client508/src/main/java/Class68_Sub6.java similarity index 100% rename from client508/src/Class68_Sub6.java rename to clients/client508/src/main/java/Class68_Sub6.java diff --git a/client508/src/Class68_Sub7.java b/clients/client508/src/main/java/Class68_Sub7.java similarity index 100% rename from client508/src/Class68_Sub7.java rename to clients/client508/src/main/java/Class68_Sub7.java diff --git a/client508/src/Class68_Sub8.java b/clients/client508/src/main/java/Class68_Sub8.java similarity index 100% rename from client508/src/Class68_Sub8.java rename to clients/client508/src/main/java/Class68_Sub8.java diff --git a/client508/src/Class68_Sub9.java b/clients/client508/src/main/java/Class68_Sub9.java similarity index 100% rename from client508/src/Class68_Sub9.java rename to clients/client508/src/main/java/Class68_Sub9.java diff --git a/client508/src/Class69.java b/clients/client508/src/main/java/Class69.java similarity index 100% rename from client508/src/Class69.java rename to clients/client508/src/main/java/Class69.java diff --git a/client508/src/Class7.java b/clients/client508/src/main/java/Class7.java similarity index 100% rename from client508/src/Class7.java rename to clients/client508/src/main/java/Class7.java diff --git a/client508/src/Class70.java b/clients/client508/src/main/java/Class70.java similarity index 100% rename from client508/src/Class70.java rename to clients/client508/src/main/java/Class70.java diff --git a/client508/src/Class71.java b/clients/client508/src/main/java/Class71.java similarity index 100% rename from client508/src/Class71.java rename to clients/client508/src/main/java/Class71.java diff --git a/client508/src/Class71_Sub1.java b/clients/client508/src/main/java/Class71_Sub1.java similarity index 100% rename from client508/src/Class71_Sub1.java rename to clients/client508/src/main/java/Class71_Sub1.java diff --git a/client508/src/Class72.java b/clients/client508/src/main/java/Class72.java similarity index 100% rename from client508/src/Class72.java rename to clients/client508/src/main/java/Class72.java diff --git a/client508/src/Class72_Sub1.java b/clients/client508/src/main/java/Class72_Sub1.java similarity index 100% rename from client508/src/Class72_Sub1.java rename to clients/client508/src/main/java/Class72_Sub1.java diff --git a/client508/src/Class72_Sub2.java b/clients/client508/src/main/java/Class72_Sub2.java similarity index 100% rename from client508/src/Class72_Sub2.java rename to clients/client508/src/main/java/Class72_Sub2.java diff --git a/client508/src/Class73.java b/clients/client508/src/main/java/Class73.java similarity index 100% rename from client508/src/Class73.java rename to clients/client508/src/main/java/Class73.java diff --git a/client508/src/Class74.java b/clients/client508/src/main/java/Class74.java similarity index 100% rename from client508/src/Class74.java rename to clients/client508/src/main/java/Class74.java diff --git a/client508/src/Class75.java b/clients/client508/src/main/java/Class75.java similarity index 100% rename from client508/src/Class75.java rename to clients/client508/src/main/java/Class75.java diff --git a/client508/src/Class75_Sub1.java b/clients/client508/src/main/java/Class75_Sub1.java similarity index 100% rename from client508/src/Class75_Sub1.java rename to clients/client508/src/main/java/Class75_Sub1.java diff --git a/client508/src/Class75_Sub1_Sub1.java b/clients/client508/src/main/java/Class75_Sub1_Sub1.java similarity index 100% rename from client508/src/Class75_Sub1_Sub1.java rename to clients/client508/src/main/java/Class75_Sub1_Sub1.java diff --git a/client508/src/Class75_Sub2.java b/clients/client508/src/main/java/Class75_Sub2.java similarity index 100% rename from client508/src/Class75_Sub2.java rename to clients/client508/src/main/java/Class75_Sub2.java diff --git a/client508/src/Class75_Sub3.java b/clients/client508/src/main/java/Class75_Sub3.java similarity index 100% rename from client508/src/Class75_Sub3.java rename to clients/client508/src/main/java/Class75_Sub3.java diff --git a/client508/src/Class75_Sub3_Sub1.java b/clients/client508/src/main/java/Class75_Sub3_Sub1.java similarity index 100% rename from client508/src/Class75_Sub3_Sub1.java rename to clients/client508/src/main/java/Class75_Sub3_Sub1.java diff --git a/client508/src/Class76.java b/clients/client508/src/main/java/Class76.java similarity index 100% rename from client508/src/Class76.java rename to clients/client508/src/main/java/Class76.java diff --git a/client508/src/Class77.java b/clients/client508/src/main/java/Class77.java similarity index 100% rename from client508/src/Class77.java rename to clients/client508/src/main/java/Class77.java diff --git a/client508/src/Class78.java b/clients/client508/src/main/java/Class78.java similarity index 100% rename from client508/src/Class78.java rename to clients/client508/src/main/java/Class78.java diff --git a/client508/src/Class79.java b/clients/client508/src/main/java/Class79.java similarity index 100% rename from client508/src/Class79.java rename to clients/client508/src/main/java/Class79.java diff --git a/client508/src/Class8.java b/clients/client508/src/main/java/Class8.java similarity index 100% rename from client508/src/Class8.java rename to clients/client508/src/main/java/Class8.java diff --git a/client508/src/Class80.java b/clients/client508/src/main/java/Class80.java similarity index 100% rename from client508/src/Class80.java rename to clients/client508/src/main/java/Class80.java diff --git a/client508/src/Class83.java b/clients/client508/src/main/java/Class83.java similarity index 100% rename from client508/src/Class83.java rename to clients/client508/src/main/java/Class83.java diff --git a/client508/src/Class84.java b/clients/client508/src/main/java/Class84.java similarity index 100% rename from client508/src/Class84.java rename to clients/client508/src/main/java/Class84.java diff --git a/client508/src/Class85.java b/clients/client508/src/main/java/Class85.java similarity index 100% rename from client508/src/Class85.java rename to clients/client508/src/main/java/Class85.java diff --git a/client508/src/Class86.java b/clients/client508/src/main/java/Class86.java similarity index 100% rename from client508/src/Class86.java rename to clients/client508/src/main/java/Class86.java diff --git a/client508/src/Class87.java b/clients/client508/src/main/java/Class87.java similarity index 100% rename from client508/src/Class87.java rename to clients/client508/src/main/java/Class87.java diff --git a/client508/src/Class88.java b/clients/client508/src/main/java/Class88.java similarity index 100% rename from client508/src/Class88.java rename to clients/client508/src/main/java/Class88.java diff --git a/client508/src/Class9.java b/clients/client508/src/main/java/Class9.java similarity index 100% rename from client508/src/Class9.java rename to clients/client508/src/main/java/Class9.java diff --git a/client508/src/Class90.java b/clients/client508/src/main/java/Class90.java similarity index 100% rename from client508/src/Class90.java rename to clients/client508/src/main/java/Class90.java diff --git a/client508/src/Class91.java b/clients/client508/src/main/java/Class91.java similarity index 100% rename from client508/src/Class91.java rename to clients/client508/src/main/java/Class91.java diff --git a/client508/src/Class92.java b/clients/client508/src/main/java/Class92.java similarity index 100% rename from client508/src/Class92.java rename to clients/client508/src/main/java/Class92.java diff --git a/client508/src/Class92_Sub1.java b/clients/client508/src/main/java/Class92_Sub1.java similarity index 100% rename from client508/src/Class92_Sub1.java rename to clients/client508/src/main/java/Class92_Sub1.java diff --git a/client508/src/Class93.java b/clients/client508/src/main/java/Class93.java similarity index 100% rename from client508/src/Class93.java rename to clients/client508/src/main/java/Class93.java diff --git a/client508/src/Class94.java b/clients/client508/src/main/java/Class94.java similarity index 100% rename from client508/src/Class94.java rename to clients/client508/src/main/java/Class94.java diff --git a/client508/src/Class95.java b/clients/client508/src/main/java/Class95.java similarity index 100% rename from client508/src/Class95.java rename to clients/client508/src/main/java/Class95.java diff --git a/client508/src/Class96.java b/clients/client508/src/main/java/Class96.java similarity index 100% rename from client508/src/Class96.java rename to clients/client508/src/main/java/Class96.java diff --git a/client508/src/Class97.java b/clients/client508/src/main/java/Class97.java similarity index 100% rename from client508/src/Class97.java rename to clients/client508/src/main/java/Class97.java diff --git a/client508/src/Class97_Sub1.java b/clients/client508/src/main/java/Class97_Sub1.java similarity index 100% rename from client508/src/Class97_Sub1.java rename to clients/client508/src/main/java/Class97_Sub1.java diff --git a/client508/src/Class98.java b/clients/client508/src/main/java/Class98.java similarity index 100% rename from client508/src/Class98.java rename to clients/client508/src/main/java/Class98.java diff --git a/client508/src/Class99.java b/clients/client508/src/main/java/Class99.java similarity index 100% rename from client508/src/Class99.java rename to clients/client508/src/main/java/Class99.java diff --git a/client508/src/GameException.java b/clients/client508/src/main/java/GameException.java similarity index 100% rename from client508/src/GameException.java rename to clients/client508/src/main/java/GameException.java diff --git a/client508/src/GameSocket.java b/clients/client508/src/main/java/GameSocket.java similarity index 100% rename from client508/src/GameSocket.java rename to clients/client508/src/main/java/GameSocket.java diff --git a/client508/src/GroundData.java b/clients/client508/src/main/java/GroundData.java similarity index 100% rename from client508/src/GroundData.java rename to clients/client508/src/main/java/GroundData.java diff --git a/client508/src/ISAACRandomGen.java b/clients/client508/src/main/java/ISAACRandomGen.java similarity index 100% rename from client508/src/ISAACRandomGen.java rename to clients/client508/src/main/java/ISAACRandomGen.java diff --git a/client508/src/Interface1.java b/clients/client508/src/main/java/Interface1.java similarity index 100% rename from client508/src/Interface1.java rename to clients/client508/src/main/java/Interface1.java diff --git a/client508/src/Interface2.java b/clients/client508/src/main/java/Interface2.java similarity index 100% rename from client508/src/Interface2.java rename to clients/client508/src/main/java/Interface2.java diff --git a/client508/src/Interface3.java b/clients/client508/src/main/java/Interface3.java similarity index 100% rename from client508/src/Interface3.java rename to clients/client508/src/main/java/Interface3.java diff --git a/client508/src/Interface4.java b/clients/client508/src/main/java/Interface4.java similarity index 100% rename from client508/src/Interface4.java rename to clients/client508/src/main/java/Interface4.java diff --git a/client508/src/ItemDef.java b/clients/client508/src/main/java/ItemDef.java similarity index 100% rename from client508/src/ItemDef.java rename to clients/client508/src/main/java/ItemDef.java diff --git a/client508/src/JagSocket.java b/clients/client508/src/main/java/JagSocket.java similarity index 100% rename from client508/src/JagSocket.java rename to clients/client508/src/main/java/JagSocket.java diff --git a/client508/src/Login.java b/clients/client508/src/main/java/Login.java similarity index 100% rename from client508/src/Login.java rename to clients/client508/src/main/java/Login.java diff --git a/client508/src/PacketParser.java b/clients/client508/src/main/java/PacketParser.java similarity index 100% rename from client508/src/PacketParser.java rename to clients/client508/src/main/java/PacketParser.java diff --git a/client508/src/PacketStream.java b/clients/client508/src/main/java/PacketStream.java similarity index 100% rename from client508/src/PacketStream.java rename to clients/client508/src/main/java/PacketStream.java diff --git a/client508/src/PlayerDefinition.java b/clients/client508/src/main/java/PlayerDefinition.java similarity index 100% rename from client508/src/PlayerDefinition.java rename to clients/client508/src/main/java/PlayerDefinition.java diff --git a/client508/src/RSString.java b/clients/client508/src/main/java/RSString.java similarity index 100% rename from client508/src/RSString.java rename to clients/client508/src/main/java/RSString.java diff --git a/client508/src/SignLink.java b/clients/client508/src/main/java/SignLink.java similarity index 100% rename from client508/src/SignLink.java rename to clients/client508/src/main/java/SignLink.java diff --git a/client508/src/Sprite.java b/clients/client508/src/main/java/Sprite.java similarity index 100% rename from client508/src/Sprite.java rename to clients/client508/src/main/java/Sprite.java diff --git a/client508/src/Sprite_Sub1.java b/clients/client508/src/main/java/Sprite_Sub1.java similarity index 100% rename from client508/src/Sprite_Sub1.java rename to clients/client508/src/main/java/Sprite_Sub1.java diff --git a/client508/src/Stream.java b/clients/client508/src/main/java/Stream.java similarity index 100% rename from client508/src/Stream.java rename to clients/client508/src/main/java/Stream.java diff --git a/client508/src/Unknown.java b/clients/client508/src/main/java/Unknown.java similarity index 100% rename from client508/src/Unknown.java rename to clients/client508/src/main/java/Unknown.java diff --git a/client508/src/client.java b/clients/client508/src/main/java/client.java similarity index 100% rename from client508/src/client.java rename to clients/client508/src/main/java/client.java diff --git a/clients/clientRSC/pom.xml b/clients/clientRSC/pom.xml new file mode 100644 index 0000000..303b12a --- /dev/null +++ b/clients/clientRSC/pom.xml @@ -0,0 +1,30 @@ + + + + + + org.moparscape.client + clients + 0.1-SNAPSHOT + + 4.0.0 + clientRSC + \ No newline at end of file diff --git a/clientRSC/src/client.java b/clients/clientRSC/src/main/java/client.java similarity index 100% rename from clientRSC/src/client.java rename to clients/clientRSC/src/main/java/client.java diff --git a/clients/clientRSC/src/main/java/mudclient/AudioReader.java b/clients/clientRSC/src/main/java/mudclient/AudioReader.java new file mode 100755 index 0000000..8126581 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/AudioReader.java @@ -0,0 +1,41 @@ +package mudclient; + +import java.io.InputStream; +import sun.audio.AudioPlayer; + +public class AudioReader extends InputStream { + + public AudioReader() { + AudioPlayer.player.start(this); + } + + public void stop() { + AudioPlayer.player.stop(this); + } + + public void play(byte abyte0[], int i, int j) { + data = abyte0; + offset = i; + length = i + j; + } + + public int read(byte arg0[], int arg1, int arg2) { + for(int i = 0; i < arg2; i++) + if(offset < length) + arg0[arg1 + i] = data[offset++]; + else + arg0[arg1 + i] = -1; + + return arg2; + } + + public int read() { + byte abyte0[] = new byte[1]; + read(abyte0, 0, 1); + return abyte0[0]; + } + + byte data[]; + int offset; + int length; +} diff --git a/clients/clientRSC/src/main/java/mudclient/Camera.java b/clients/clientRSC/src/main/java/mudclient/Camera.java new file mode 100755 index 0000000..6df9829 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Camera.java @@ -0,0 +1,3161 @@ +package mudclient; + +public class Camera { + + public Camera(GameImage arg0, int arg1, int arg2, int arg3) { + bba = 50; + bbb = new int[bba]; + bbc = new int[bba][256]; + bbf = 5; + zoom1 = 1000; + zoom2 = 1000; + zoom3 = 20; + zoom4 = 10; + bbm = false; + bbn = 1.1000000000000001D; + bca = 1; + bcb = false; + bcf = 100; + bcg = new GameObject[bcf]; + bch = new int[bcf]; + bci = 512; + bcj = 256; + bck = 192; + bcl = 256; + bcm = 256; + bcn = 8; + bda = 4; + bfl = new int[40]; + bfm = new int[40]; + bfn = new int[40]; + bga = new int[40]; + bgb = new int[40]; + bgc = new int[40]; + bgd = false; + bfg = arg0; + bcj = arg0.gameWidth / 2; + bck = arg0.gameHeight / 2; + bfh = arg0.pixels; + currentModelCount = 0; + maxModelCount = arg1; + bdj = new GameObject[maxModelCount]; + bdk = new int[maxModelCount]; + bdl = 0; + bdm = new CameraModel[arg2]; + for(int k = 0; k < arg2; k++) + bdm[k] = new CameraModel(); + + bdn = 0; + highlightedObject = new GameObject(arg3 * 2, arg3); + bea = new int[arg3]; + bee = new int[arg3]; + bef = new int[arg3]; + beb = new int[arg3]; + bec = new int[arg3]; + bed = new int[arg3]; + beg = new int[arg3]; + if(bfe == null) + bfe = new byte[17691]; + bdb = 0; + bdc = 0; + bdd = 0; + bde = 0; + bdf = 0; + bdg = 0; + for(int i1 = 0; i1 < 256; i1++) { + bbl[i1] = (int)(Math.sin((double)i1 * 0.02454369D) * 32768D); + bbl[i1 + 256] = (int)(Math.cos((double)i1 * 0.02454369D) * 32768D); + } + + for(int j1 = 0; j1 < 1024; j1++) { + bbk[j1] = (int)(Math.sin((double)j1 * 0.00613592315D) * 32768D); + bbk[j1 + 1024] = (int)(Math.cos((double)j1 * 0.00613592315D) * 32768D); + } + + } + + public void addModel(GameObject k) { + if(k == null) + System.out.println("Warning tried to add null object!"); + if(currentModelCount < maxModelCount) { + bdk[currentModelCount] = 0; + bdj[currentModelCount++] = k; + } + } + + public void removeModel(GameObject arg0) { + for(int k = 0; k < currentModelCount; k++) + if(bdj[k] == arg0) { + currentModelCount--; + for(int i1 = k; i1 < currentModelCount; i1++) { + bdj[i1] = bdj[i1 + 1]; + bdk[i1] = bdk[i1 + 1]; + } + + } + + } + + public void cleanUp() { + bhb(); + for(int k = 0; k < currentModelCount; k++) + bdj[k] = null; + + currentModelCount = 0; + } + + public void bhb() { + bdn = 0; + highlightedObject.clk(); + } + + public void removeLastUpdates(int k) { + bdn -= k; + highlightedObject.cll(k, k * 2); + if(bdn < 0) + bdn = 0; + } + + public int bhd(int k, int i1, int j1, int k1, int l1, int i2, int j2) { + bea[bdn] = k; + beb[bdn] = i1; + bec[bdn] = j1; + bed[bdn] = k1; + bee[bdn] = l1; + bef[bdn] = i2; + beg[bdn] = 0; + int k2 = highlightedObject.cma(i1, j1, k1); + int l2 = highlightedObject.cma(i1, j1 - i2, k1); + int ai[] = { + k2, l2 + }; + highlightedObject.cmb(2, ai, 0, 0); + highlightedObject.entityType[bdn] = j2; + highlightedObject.chm[bdn++] = 0; + return bdn - 1; + } + + public void bhe(int k) { + highlightedObject.chm[k] = 1; + } + + public void bhf(int k, int i1) { + beg[k] = i1; + } + + public void setMousePosition(int k, int i1) { + bcc = k - bcl; + bcd = i1; + bce = 0; + bcb = true; + } + + public int getOptionCount() { + return bce; + } + + public int[] getHighlightedPlayers() { + return bch; + } + + public GameObject[] getHighlightedObjects() { + return bcg; + } + + public void setCameraSize(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + bcj = arg2; + bck = arg3; + bcl = arg0; + bcm = arg1; + bci = arg4; + bcn = arg5; + bfi = new CameraVariable[arg3 + arg1]; + for(int k = 0; k < arg3 + arg1; k++) + bfi[k] = new CameraVariable(); + + } + + private void bhl(CameraModel arg0[], int arg1, int arg2) { + if(arg1 < arg2) { + int k = arg1 - 1; + int i1 = arg2 + 1; + int j1 = (arg1 + arg2) / 2; + CameraModel l1 = arg0[j1]; + arg0[j1] = arg0[arg1]; + arg0[arg1] = l1; + int k1 = l1.bkl; + while(k < i1) { + do + i1--; + while(arg0[i1].bkl < k1); + do + k++; + while(arg0[k].bkl > k1); + if(k < i1) { + CameraModel l2 = arg0[k]; + arg0[k] = arg0[i1]; + arg0[i1] = l2; + } + } + bhl(arg0, arg1, i1); + bhl(arg0, i1 + 1, arg2); + } + } + + public void bhm(int arg0, CameraModel arg1[], int arg2) { + for(int k = 0; k <= arg2; k++) { + arg1[k].bld = false; + arg1[k].ble = k; + arg1[k].blf = -1; + } + + int i1 = 0; + do { + while(arg1[i1].bld) + i1++; + if(i1 == arg2) + return; + CameraModel l1 = arg1[i1]; + l1.bld = true; + int j1 = i1; + int k1 = i1 + arg0; + if(k1 >= arg2) + k1 = arg2 - 1; + for(int i2 = k1; i2 >= j1 + 1; i2--) { + CameraModel l2 = arg1[i2]; + if(l1.bkd < l2.bkf && l2.bkd < l1.bkf && l1.bke < l2.bkg && l2.bke < l1.bkg && l1.ble != l2.blf && !bjc(l1, l2) && bjd(l2, l1)) { + bhn(arg1, j1, i2); + if(arg1[i2] != l2) + i2++; + j1 = bgk; + l2.blf = l1.ble; + } + } + + } while(true); + } + + public boolean bhn(CameraModel arg0[], int arg1, int arg2) { + do { + CameraModel l1 = arg0[arg1]; + for(int k = arg1 + 1; k <= arg2; k++) { + CameraModel l2 = arg0[k]; + if(!bjc(l2, l1)) + break; + arg0[arg1] = l2; + arg0[k] = l1; + arg1 = k; + if(arg1 == arg2) { + bgk = arg1; + bgl = arg1 - 1; + return true; + } + } + + CameraModel l3 = arg0[arg2]; + for(int i1 = arg2 - 1; i1 >= arg1; i1--) { + CameraModel l4 = arg0[i1]; + if(!bjc(l3, l4)) + break; + arg0[arg2] = l4; + arg0[i1] = l3; + arg2 = i1; + if(arg1 == arg2) { + bgk = arg2 + 1; + bgl = arg2; + return true; + } + } + + if(arg1 + 1 >= arg2) { + bgk = arg1; + bgl = arg2; + return false; + } + if(!bhn(arg0, arg1 + 1, arg2)) { + bgk = arg1; + return false; + } + arg2 = bgl; + } while(true); + } + + public void bia(int k, int i1, int j1) { + int k1 = -bde + 1024 & 0x3ff; + int l1 = -bdf + 1024 & 0x3ff; + int i2 = -bdg + 1024 & 0x3ff; + if(i2 != 0) { + int j2 = bbk[i2]; + int i3 = bbk[i2 + 1024]; + int l3 = i1 * j2 + k * i3 >> 15; + i1 = i1 * i3 - k * j2 >> 15; + k = l3; + } + if(k1 != 0) { + int k2 = bbk[k1]; + int j3 = bbk[k1 + 1024]; + int i4 = i1 * j3 - j1 * k2 >> 15; + j1 = i1 * k2 + j1 * j3 >> 15; + i1 = i4; + } + if(l1 != 0) { + int l2 = bbk[l1]; + int k3 = bbk[l1 + 1024]; + int j4 = j1 * l2 + k * k3 >> 15; + j1 = j1 * k3 - k * l2 >> 15; + k = j4; + } + if(k < bge) + bge = k; + if(k > bgf) + bgf = k; + if(i1 < bgg) + bgg = i1; + if(i1 > bgh) + bgh = i1; + if(j1 < bgi) + bgi = j1; + if(j1 > bgj) + bgj = j1; + } + + public void finishCamera() { + bgd = bfg.interlace; + int k4 = bcj * zoom1 >> bcn; + int l4 = bck * zoom1 >> bcn; + bge = 0; + bgf = 0; + bgg = 0; + bgh = 0; + bgi = 0; + bgj = 0; + bia(-k4, -l4, zoom1); + bia(-k4, l4, zoom1); + bia(k4, -l4, zoom1); + bia(k4, l4, zoom1); + bia(-bcj, -bck, 0); + bia(-bcj, bck, 0); + bia(bcj, -bck, 0); + bia(bcj, bck, 0); + bge += bdb; + bgf += bdb; + bgg += bdc; + bgh += bdc; + bgi += bdd; + bgj += bdd; + bdj[currentModelCount] = highlightedObject; + highlightedObject.cgn = 2; + for(int k1 = 0; k1 < currentModelCount; k1++) + bdj[k1].cnh(bdb, bdc, bdd, bde, bdf, bdg, bcn, bbf); + + bdj[currentModelCount].cnh(bdb, bdc, bdd, bde, bdf, bdg, bcn, bbf); + bdl = 0; + for(int i5 = 0; i5 < currentModelCount; i5++) { + GameObject k = bdj[i5]; + if(k.cha) { + for(int l1 = 0; l1 < k.cgb; l1++) { + int j5 = k.cgc[l1]; + int ai1[] = k.cgd[l1]; + boolean flag = false; + for(int i6 = 0; i6 < j5; i6++) { + int k2 = k.cfk[ai1[i6]]; + if(k2 <= bbf || k2 >= zoom1) + continue; + flag = true; + break; + } + + if(flag) { + int j3 = 0; + for(int j7 = 0; j7 < j5; j7++) { + int l2 = k.cfl[ai1[j7]]; + if(l2 > -bcj) + j3 |= 1; + if(l2 < bcj) + j3 |= 2; + if(j3 == 3) + break; + } + + if(j3 == 3) { + int k3 = 0; + for(int k8 = 0; k8 < j5; k8++) { + int i3 = k.cfm[ai1[k8]]; + if(i3 > -bck) + k3 |= 1; + if(i3 < bck) + k3 |= 2; + if(k3 == 3) + break; + } + + if(k3 == 3) { + CameraModel l9 = bdm[bdl]; + l9.object = k; + l9.bkk = l1; + bja(bdl); + int l10; + if(l9.blb < 0) + l10 = k.cge[l1]; + else + l10 = k.cgf[l1]; + if(l10 != 0xbc614e) { + int l3 = 0; + for(int l11 = 0; l11 < j5; l11++) + l3 += k.cfk[ai1[l11]]; + + l9.bkl = l3 / j5 + k.cgm; + l9.blc = l10; + bdl++; + } + } + } + } + } + + } + } + + GameObject i1 = highlightedObject; + if(i1.cha) { + for(int i2 = 0; i2 < i1.cgb; i2++) { + int ai[] = i1.cgd[i2]; + int l5 = ai[0]; + int j6 = i1.cfl[l5]; + int k7 = i1.cfm[l5]; + int l8 = i1.cfk[l5]; + if(l8 > bbf && l8 < zoom2) { + int i10 = (bee[i2] << bcn) / l8; + int i11 = (bef[i2] << bcn) / l8; + if(j6 - i10 / 2 <= bcj && j6 + i10 / 2 >= -bcj && k7 - i11 <= bck && k7 >= -bck) { + CameraModel l12 = bdm[bdl]; + l12.object = i1; + l12.bkk = i2; + bjb(bdl); + l12.bkl = (l8 + i1.cfk[ai[1]]) / 2; + bdl++; + } + } + } + + } + if(bdl == 0) + return; + bbe = bdl; + bhl(bdm, 0, bdl - 1); + bhm(100, bdm, bdl); + for(int k5 = 0; k5 < bdl; k5++) { + CameraModel l6 = bdm[k5]; + GameObject j1 = l6.object; + int j2 = l6.bkk; + if(j1 == highlightedObject) { + int ai2[] = j1.cgd[j2]; + int l7 = ai2[0]; + int i9 = j1.cfl[l7]; + int j10 = j1.cfm[l7]; + int j11 = j1.cfk[l7]; + int i12 = (bee[j2] << bcn) / j11; + int k12 = (bef[j2] << bcn) / j11; + int j13 = j10 - j1.cfm[ai2[1]]; + int k13 = ((j1.cfl[ai2[1]] - i9) * j13) / k12; + k13 = j1.cfl[ai2[1]] - i9; + int i14 = i9 - i12 / 2; + int k14 = (bcm + j10) - k12; + bfg.drawVisibleEntity(i14 + bcl, k14, i12, k12, bea[j2], k13, (256 << bcn) / j11); + if(bcb && bce < bcf) { + i14 += (beg[j2] << bcn) / j11; + if(bcd >= k14 && bcd <= k14 + k12 && bcc >= i14 && bcc <= i14 + i12 && !j1.cic && j1.chm[j2] == 0) { + bcg[bce] = j1; + bch[bce] = j2; + bce++; + } + } + } else { + int k10 = 0; + int j12 = 0; + int i13 = j1.cgc[j2]; + int ai3[] = j1.cgd[j2]; + if(j1.cgi[j2] != 0xbc614e) + if(l6.blb < 0) + j12 = j1.clf - j1.cgi[j2]; + else + j12 = j1.clf + j1.cgi[j2]; + for(int l13 = 0; l13 < i13; l13++) { + int i4 = ai3[l13]; + bga[l13] = j1.cfi[i4]; + bgb[l13] = j1.cfj[i4]; + bgc[l13] = j1.cfk[i4]; + if(j1.cgi[j2] == 0xbc614e) + if(l6.blb < 0) + j12 = (j1.clf - j1.cfn[i4]) + j1.cga[i4]; + else + j12 = j1.clf + j1.cfn[i4] + j1.cga[i4]; + if(j1.cfk[i4] >= bbf) { + bfl[k10] = j1.cfl[i4]; + bfm[k10] = j1.cfm[i4]; + bfn[k10] = j12; + if(j1.cfk[i4] > zoom4) + bfn[k10] += (j1.cfk[i4] - zoom4) / zoom3; + k10++; + } else { + int k11; + if(l13 == 0) + k11 = ai3[i13 - 1]; + else + k11 = ai3[l13 - 1]; + if(j1.cfk[k11] >= bbf) { + int j9 = j1.cfk[i4] - j1.cfk[k11]; + int k6 = j1.cfi[i4] - ((j1.cfi[i4] - j1.cfi[k11]) * (j1.cfk[i4] - bbf)) / j9; + int i8 = j1.cfj[i4] - ((j1.cfj[i4] - j1.cfj[k11]) * (j1.cfk[i4] - bbf)) / j9; + bfl[k10] = (k6 << bcn) / bbf; + bfm[k10] = (i8 << bcn) / bbf; + bfn[k10] = j12; + k10++; + } + if(l13 == i13 - 1) + k11 = ai3[0]; + else + k11 = ai3[l13 + 1]; + if(j1.cfk[k11] >= bbf) { + int k9 = j1.cfk[i4] - j1.cfk[k11]; + int i7 = j1.cfi[i4] - ((j1.cfi[i4] - j1.cfi[k11]) * (j1.cfk[i4] - bbf)) / k9; + int j8 = j1.cfj[i4] - ((j1.cfj[i4] - j1.cfj[k11]) * (j1.cfk[i4] - bbf)) / k9; + bfl[k10] = (i7 << bcn) / bbf; + bfm[k10] = (j8 << bcn) / bbf; + bfn[k10] = j12; + k10++; + } + } + } + + for(int j14 = 0; j14 < i13; j14++) { + if(bfn[j14] < 0) + bfn[j14] = 0; + else + if(bfn[j14] > 255) + bfn[j14] = 255; + if(l6.blc >= 0) + if(bel[l6.blc] == 1) + bfn[j14] <<= 9; + else + bfn[j14] <<= 6; + } + + bic(0, 0, 0, 0, k10, bfl, bfm, bfn, j1, j2); + if(bfk > bfj) + bid(0, 0, i13, bga, bgb, bgc, l6.blc, j1); + } + } + + bcb = false; + } + + private void bic(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5[], int arg6[], + int arg7[], GameObject arg8, int arg9) { + if(arg4 == 3) { + int k = arg6[0] + bcm; + int l1 = arg6[1] + bcm; + int l2 = arg6[2] + bcm; + int l3 = arg5[0]; + int i5 = arg5[1]; + int k6 = arg5[2]; + int i8 = arg7[0]; + int k9 = arg7[1]; + int k10 = arg7[2]; + int k11 = (bcm + bck) - 1; + int i12 = 0; + int k12 = 0; + int i13 = 0; + int k13 = 0; + int i14 = 0xbc614e; + int k14 = 0xff439eb2; + if(l2 != k) { + k12 = (k6 - l3 << 8) / (l2 - k); + k13 = (k10 - i8 << 8) / (l2 - k); + if(k < l2) { + i12 = l3 << 8; + i13 = i8 << 8; + i14 = k; + k14 = l2; + } else { + i12 = k6 << 8; + i13 = k10 << 8; + i14 = l2; + k14 = k; + } + if(i14 < 0) { + i12 -= k12 * i14; + i13 -= k13 * i14; + i14 = 0; + } + if(k14 > k11) + k14 = k11; + } + int i15 = 0; + int k15 = 0; + int i16 = 0; + int k16 = 0; + int i17 = 0xbc614e; + int k17 = 0xff439eb2; + if(l1 != k) { + k15 = (i5 - l3 << 8) / (l1 - k); + k16 = (k9 - i8 << 8) / (l1 - k); + if(k < l1) { + i15 = l3 << 8; + i16 = i8 << 8; + i17 = k; + k17 = l1; + } else { + i15 = i5 << 8; + i16 = k9 << 8; + i17 = l1; + k17 = k; + } + if(i17 < 0) { + i15 -= k15 * i17; + i16 -= k16 * i17; + i17 = 0; + } + if(k17 > k11) + k17 = k11; + } + int i18 = 0; + int k18 = 0; + int i19 = 0; + int k19 = 0; + int i20 = 0xbc614e; + int k20 = 0xff439eb2; + if(l2 != l1) { + k18 = (k6 - i5 << 8) / (l2 - l1); + k19 = (k10 - k9 << 8) / (l2 - l1); + if(l1 < l2) { + i18 = i5 << 8; + i19 = k9 << 8; + i20 = l1; + k20 = l2; + } else { + i18 = k6 << 8; + i19 = k10 << 8; + i20 = l2; + k20 = l1; + } + if(i20 < 0) { + i18 -= k18 * i20; + i19 -= k19 * i20; + i20 = 0; + } + if(k20 > k11) + k20 = k11; + } + bfj = i14; + if(i17 < bfj) + bfj = i17; + if(i20 < bfj) + bfj = i20; + bfk = k14; + if(k17 > bfk) + bfk = k17; + if(k20 > bfk) + bfk = k20; + int i21 = 0; + for(arg2 = bfj; arg2 < bfk; arg2++) { + if(arg2 >= i14 && arg2 < k14) { + arg0 = arg1 = i12; + arg3 = i21 = i13; + i12 += k12; + i13 += k13; + } else { + arg0 = 0xa0000; + arg1 = 0xfff60000; + } + if(arg2 >= i17 && arg2 < k17) { + if(i15 < arg0) { + arg0 = i15; + arg3 = i16; + } + if(i15 > arg1) { + arg1 = i15; + i21 = i16; + } + i15 += k15; + i16 += k16; + } + if(arg2 >= i20 && arg2 < k20) { + if(i18 < arg0) { + arg0 = i18; + arg3 = i19; + } + if(i18 > arg1) { + arg1 = i18; + i21 = i19; + } + i18 += k18; + i19 += k19; + } + CameraVariable m7 = bfi[arg2]; + m7.flm = arg0; + m7.fln = arg1; + m7.fma = arg3; + m7.fmb = i21; + } + + if(bfj < bcm - bck) + bfj = bcm - bck; + } else + if(arg4 == 4) { + int i1 = arg6[0] + bcm; + int i2 = arg6[1] + bcm; + int i3 = arg6[2] + bcm; + int i4 = arg6[3] + bcm; + int j5 = arg5[0]; + int l6 = arg5[1]; + int j8 = arg5[2]; + int l9 = arg5[3]; + int l10 = arg7[0]; + int l11 = arg7[1]; + int j12 = arg7[2]; + int l12 = arg7[3]; + int j13 = (bcm + bck) - 1; + int l13 = 0; + int j14 = 0; + int l14 = 0; + int j15 = 0; + int l15 = 0xbc614e; + int j16 = 0xff439eb2; + if(i4 != i1) { + j14 = (l9 - j5 << 8) / (i4 - i1); + j15 = (l12 - l10 << 8) / (i4 - i1); + if(i1 < i4) { + l13 = j5 << 8; + l14 = l10 << 8; + l15 = i1; + j16 = i4; + } else { + l13 = l9 << 8; + l14 = l12 << 8; + l15 = i4; + j16 = i1; + } + if(l15 < 0) { + l13 -= j14 * l15; + l14 -= j15 * l15; + l15 = 0; + } + if(j16 > j13) + j16 = j13; + } + int l16 = 0; + int j17 = 0; + int l17 = 0; + int j18 = 0; + int l18 = 0xbc614e; + int j19 = 0xff439eb2; + if(i2 != i1) { + j17 = (l6 - j5 << 8) / (i2 - i1); + j18 = (l11 - l10 << 8) / (i2 - i1); + if(i1 < i2) { + l16 = j5 << 8; + l17 = l10 << 8; + l18 = i1; + j19 = i2; + } else { + l16 = l6 << 8; + l17 = l11 << 8; + l18 = i2; + j19 = i1; + } + if(l18 < 0) { + l16 -= j17 * l18; + l17 -= j18 * l18; + l18 = 0; + } + if(j19 > j13) + j19 = j13; + } + int l19 = 0; + int j20 = 0; + int l20 = 0; + int j21 = 0; + int k21 = 0xbc614e; + int l21 = 0xff439eb2; + if(i3 != i2) { + j20 = (j8 - l6 << 8) / (i3 - i2); + j21 = (j12 - l11 << 8) / (i3 - i2); + if(i2 < i3) { + l19 = l6 << 8; + l20 = l11 << 8; + k21 = i2; + l21 = i3; + } else { + l19 = j8 << 8; + l20 = j12 << 8; + k21 = i3; + l21 = i2; + } + if(k21 < 0) { + l19 -= j20 * k21; + l20 -= j21 * k21; + k21 = 0; + } + if(l21 > j13) + l21 = j13; + } + int i22 = 0; + int j22 = 0; + int k22 = 0; + int l22 = 0; + int i23 = 0xbc614e; + int j23 = 0xff439eb2; + if(i4 != i3) { + j22 = (l9 - j8 << 8) / (i4 - i3); + l22 = (l12 - j12 << 8) / (i4 - i3); + if(i3 < i4) { + i22 = j8 << 8; + k22 = j12 << 8; + i23 = i3; + j23 = i4; + } else { + i22 = l9 << 8; + k22 = l12 << 8; + i23 = i4; + j23 = i3; + } + if(i23 < 0) { + i22 -= j22 * i23; + k22 -= l22 * i23; + i23 = 0; + } + if(j23 > j13) + j23 = j13; + } + bfj = l15; + if(l18 < bfj) + bfj = l18; + if(k21 < bfj) + bfj = k21; + if(i23 < bfj) + bfj = i23; + bfk = j16; + if(j19 > bfk) + bfk = j19; + if(l21 > bfk) + bfk = l21; + if(j23 > bfk) + bfk = j23; + int k23 = 0; + for(arg2 = bfj; arg2 < bfk; arg2++) { + if(arg2 >= l15 && arg2 < j16) { + arg0 = arg1 = l13; + arg3 = k23 = l14; + l13 += j14; + l14 += j15; + } else { + arg0 = 0xa0000; + arg1 = 0xfff60000; + } + if(arg2 >= l18 && arg2 < j19) { + if(l16 < arg0) { + arg0 = l16; + arg3 = l17; + } + if(l16 > arg1) { + arg1 = l16; + k23 = l17; + } + l16 += j17; + l17 += j18; + } + if(arg2 >= k21 && arg2 < l21) { + if(l19 < arg0) { + arg0 = l19; + arg3 = l20; + } + if(l19 > arg1) { + arg1 = l19; + k23 = l20; + } + l19 += j20; + l20 += j21; + } + if(arg2 >= i23 && arg2 < j23) { + if(i22 < arg0) { + arg0 = i22; + arg3 = k22; + } + if(i22 > arg1) { + arg1 = i22; + k23 = k22; + } + i22 += j22; + k22 += l22; + } + CameraVariable m8 = bfi[arg2]; + m8.flm = arg0; + m8.fln = arg1; + m8.fma = arg3; + m8.fmb = k23; + } + + if(bfj < bcm - bck) + bfj = bcm - bck; + } else { + bfk = bfj = arg6[0] += bcm; + for(arg2 = 1; arg2 < arg4; arg2++) { + int j1; + if((j1 = arg6[arg2] += bcm) < bfj) + bfj = j1; + else + if(j1 > bfk) + bfk = j1; + } + + if(bfj < bcm - bck) + bfj = bcm - bck; + if(bfk >= bcm + bck) + bfk = (bcm + bck) - 1; + if(bfj >= bfk) + return; + for(arg2 = bfj; arg2 < bfk; arg2++) { + CameraVariable m1 = bfi[arg2]; + m1.flm = 0xa0000; + m1.fln = 0xfff60000; + } + + int k1 = arg4 - 1; + int j2 = arg6[0]; + int j3 = arg6[k1]; + if(j2 < j3) { + int j4 = arg5[0] << 8; + int k5 = (arg5[k1] - arg5[0] << 8) / (j3 - j2); + int i7 = arg7[0] << 8; + int k8 = (arg7[k1] - arg7[0] << 8) / (j3 - j2); + if(j2 < 0) { + j4 -= k5 * j2; + i7 -= k8 * j2; + j2 = 0; + } + if(j3 > bfk) + j3 = bfk; + for(arg2 = j2; arg2 <= j3; arg2++) { + CameraVariable m3 = bfi[arg2]; + m3.flm = m3.fln = j4; + m3.fma = m3.fmb = i7; + j4 += k5; + i7 += k8; + } + + } else + if(j2 > j3) { + int k4 = arg5[k1] << 8; + int l5 = (arg5[0] - arg5[k1] << 8) / (j2 - j3); + int j7 = arg7[k1] << 8; + int l8 = (arg7[0] - arg7[k1] << 8) / (j2 - j3); + if(j3 < 0) { + k4 -= l5 * j3; + j7 -= l8 * j3; + j3 = 0; + } + if(j2 > bfk) + j2 = bfk; + for(arg2 = j3; arg2 <= j2; arg2++) { + CameraVariable m4 = bfi[arg2]; + m4.flm = m4.fln = k4; + m4.fma = m4.fmb = j7; + k4 += l5; + j7 += l8; + } + + } + for(arg2 = 0; arg2 < k1; arg2++) { + int l4 = arg2 + 1; + int k2 = arg6[arg2]; + int k3 = arg6[l4]; + if(k2 < k3) { + int i6 = arg5[arg2] << 8; + int k7 = (arg5[l4] - arg5[arg2] << 8) / (k3 - k2); + int i9 = arg7[arg2] << 8; + int i10 = (arg7[l4] - arg7[arg2] << 8) / (k3 - k2); + if(k2 < 0) { + i6 -= k7 * k2; + i9 -= i10 * k2; + k2 = 0; + } + if(k3 > bfk) + k3 = bfk; + for(int i11 = k2; i11 <= k3; i11++) { + CameraVariable m5 = bfi[i11]; + if(i6 < m5.flm) { + m5.flm = i6; + m5.fma = i9; + } + if(i6 > m5.fln) { + m5.fln = i6; + m5.fmb = i9; + } + i6 += k7; + i9 += i10; + } + + } else + if(k2 > k3) { + int j6 = arg5[l4] << 8; + int l7 = (arg5[arg2] - arg5[l4] << 8) / (k2 - k3); + int j9 = arg7[l4] << 8; + int j10 = (arg7[arg2] - arg7[l4] << 8) / (k2 - k3); + if(k3 < 0) { + j6 -= l7 * k3; + j9 -= j10 * k3; + k3 = 0; + } + if(k2 > bfk) + k2 = bfk; + for(int j11 = k3; j11 <= k2; j11++) { + CameraVariable m6 = bfi[j11]; + if(j6 < m6.flm) { + m6.flm = j6; + m6.fma = j9; + } + if(j6 > m6.fln) { + m6.fln = j6; + m6.fmb = j9; + } + j6 += l7; + j9 += j10; + } + + } + } + + if(bfj < bcm - bck) + bfj = bcm - bck; + } + if(bcb && bce < bcf && bcd >= bfj && bcd < bfk) { + CameraVariable m2 = bfi[bcd]; + if(bcc >= m2.flm >> 8 && bcc <= m2.fln >> 8 && m2.flm <= m2.fln && !arg8.cic && arg8.chm[arg9] == 0) { + bcg[bce] = arg8; + bch[bce] = arg9; + bce++; + } + } + } + + private void bid(int arg0, int arg1, int arg2, int arg3[], int arg4[], int arg5[], int arg6, + GameObject arg7) { + if(arg6 == -2) + return; + if(arg6 >= 0) { + if(arg6 >= bei) + arg6 = 0; + bjg(arg6); + int k = arg3[0]; + int j1 = arg4[0]; + int i2 = arg5[0]; + int l2 = k - arg3[1]; + int j3 = j1 - arg4[1]; + int l3 = i2 - arg5[1]; + arg2--; + int l5 = arg3[arg2] - k; + int i7 = arg4[arg2] - j1; + int j8 = arg5[arg2] - i2; + if(bel[arg6] == 1) { + int k9 = l5 * j1 - i7 * k << 12; + int j10 = i7 * i2 - j8 * j1 << (5 - bcn) + 7 + 4; + int l10 = j8 * k - l5 * i2 << (5 - bcn) + 7; + int j11 = l2 * j1 - j3 * k << 12; + int l11 = j3 * i2 - l3 * j1 << (5 - bcn) + 7 + 4; + int j12 = l3 * k - l2 * i2 << (5 - bcn) + 7; + int l12 = j3 * l5 - l2 * i7 << 5; + int j13 = l3 * i7 - j3 * j8 << (5 - bcn) + 4; + int l13 = l2 * j8 - l3 * l5 >> bcn - 5; + int j14 = j10 >> 4; + int l14 = l11 >> 4; + int j15 = j13 >> 4; + int l15 = bfj - bcm; + int j16 = bci; + int l16 = bcl + bfj * j16; + byte byte1 = 1; + k9 += l10 * l15; + j11 += j12 * l15; + l12 += l13 * l15; + if(bgd) { + if((bfj & 1) == 1) { + bfj++; + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } + l10 <<= 1; + j12 <<= 1; + l13 <<= 1; + j16 <<= 1; + byte1 = 2; + } + if(arg7.chi) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte1) { + CameraVariable m4 = bfi[arg0]; + arg1 = m4.flm >> 8; + int j17 = m4.fln >> 8; + int j20 = j17 - arg1; + if(j20 <= 0) { + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } else { + int l21 = m4.fma; + int j23 = (m4.fmb - l21) / j20; + if(arg1 < -bcj) { + l21 += (-bcj - arg1) * j23; + arg1 = -bcj; + j20 = j17 - arg1; + } + if(j17 > bcj) { + int k17 = bcj; + j20 = k17 - arg1; + } + bif(bfh, ben[arg6], 0, 0, k9 + j14 * arg1, j11 + l14 * arg1, l12 + j15 * arg1, j10, l11, j13, j20, l16 + arg1, l21, j23 << 2); + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } + } + + return; + } + if(!bfa[arg6]) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte1) { + CameraVariable m5 = bfi[arg0]; + arg1 = m5.flm >> 8; + int l17 = m5.fln >> 8; + int k20 = l17 - arg1; + if(k20 <= 0) { + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } else { + int i22 = m5.fma; + int k23 = (m5.fmb - i22) / k20; + if(arg1 < -bcj) { + i22 += (-bcj - arg1) * k23; + arg1 = -bcj; + k20 = l17 - arg1; + } + if(l17 > bcj) { + int i18 = bcj; + k20 = i18 - arg1; + } + bie(bfh, ben[arg6], 0, 0, k9 + j14 * arg1, j11 + l14 * arg1, l12 + j15 * arg1, j10, l11, j13, k20, l16 + arg1, i22, k23 << 2); + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } + } + + return; + } + for(arg0 = bfj; arg0 < bfk; arg0 += byte1) { + CameraVariable m6 = bfi[arg0]; + arg1 = m6.flm >> 8; + int j18 = m6.fln >> 8; + int l20 = j18 - arg1; + if(l20 <= 0) { + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } else { + int j22 = m6.fma; + int l23 = (m6.fmb - j22) / l20; + if(arg1 < -bcj) { + j22 += (-bcj - arg1) * l23; + arg1 = -bcj; + l20 = j18 - arg1; + } + if(j18 > bcj) { + int k18 = bcj; + l20 = k18 - arg1; + } + big(bfh, 0, 0, 0, ben[arg6], k9 + j14 * arg1, j11 + l14 * arg1, l12 + j15 * arg1, j10, l11, j13, l20, l16 + arg1, j22, l23); + k9 += l10; + j11 += j12; + l12 += l13; + l16 += j16; + } + } + + return; + } + int l9 = l5 * j1 - i7 * k << 11; + int k10 = i7 * i2 - j8 * j1 << (5 - bcn) + 6 + 4; + int i11 = j8 * k - l5 * i2 << (5 - bcn) + 6; + int k11 = l2 * j1 - j3 * k << 11; + int i12 = j3 * i2 - l3 * j1 << (5 - bcn) + 6 + 4; + int k12 = l3 * k - l2 * i2 << (5 - bcn) + 6; + int i13 = j3 * l5 - l2 * i7 << 5; + int k13 = l3 * i7 - j3 * j8 << (5 - bcn) + 4; + int i14 = l2 * j8 - l3 * l5 >> bcn - 5; + int k14 = k10 >> 4; + int i15 = i12 >> 4; + int k15 = k13 >> 4; + int i16 = bfj - bcm; + int k16 = bci; + int i17 = bcl + bfj * k16; + byte byte2 = 1; + l9 += i11 * i16; + k11 += k12 * i16; + i13 += i14 * i16; + if(bgd) { + if((bfj & 1) == 1) { + bfj++; + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } + i11 <<= 1; + k12 <<= 1; + i14 <<= 1; + k16 <<= 1; + byte2 = 2; + } + if(arg7.chi) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte2) { + CameraVariable m7 = bfi[arg0]; + arg1 = m7.flm >> 8; + int l18 = m7.fln >> 8; + int i21 = l18 - arg1; + if(i21 <= 0) { + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } else { + int k22 = m7.fma; + int i24 = (m7.fmb - k22) / i21; + if(arg1 < -bcj) { + k22 += (-bcj - arg1) * i24; + arg1 = -bcj; + i21 = l18 - arg1; + } + if(l18 > bcj) { + int i19 = bcj; + i21 = i19 - arg1; + } + bii(bfh, ben[arg6], 0, 0, l9 + k14 * arg1, k11 + i15 * arg1, i13 + k15 * arg1, k10, i12, k13, i21, i17 + arg1, k22, i24); + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } + } + + return; + } + if(!bfa[arg6]) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte2) { + CameraVariable m8 = bfi[arg0]; + arg1 = m8.flm >> 8; + int j19 = m8.fln >> 8; + int j21 = j19 - arg1; + if(j21 <= 0) { + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } else { + int l22 = m8.fma; + int j24 = (m8.fmb - l22) / j21; + if(arg1 < -bcj) { + l22 += (-bcj - arg1) * j24; + arg1 = -bcj; + j21 = j19 - arg1; + } + if(j19 > bcj) { + int k19 = bcj; + j21 = k19 - arg1; + } + bih(bfh, ben[arg6], 0, 0, l9 + k14 * arg1, k11 + i15 * arg1, i13 + k15 * arg1, k10, i12, k13, j21, i17 + arg1, l22, j24); + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } + } + + return; + } + for(arg0 = bfj; arg0 < bfk; arg0 += byte2) { + CameraVariable m9 = bfi[arg0]; + arg1 = m9.flm >> 8; + int l19 = m9.fln >> 8; + int k21 = l19 - arg1; + if(k21 <= 0) { + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } else { + int i23 = m9.fma; + int k24 = (m9.fmb - i23) / k21; + if(arg1 < -bcj) { + i23 += (-bcj - arg1) * k24; + arg1 = -bcj; + k21 = l19 - arg1; + } + if(l19 > bcj) { + int i20 = bcj; + k21 = i20 - arg1; + } + bij(bfh, 0, 0, 0, ben[arg6], l9 + k14 * arg1, k11 + i15 * arg1, i13 + k15 * arg1, k10, i12, k13, k21, i17 + arg1, i23, k24); + l9 += i11; + k11 += k12; + i13 += i14; + i17 += k16; + } + } + + return; + } + for(int i1 = 0; i1 < bba; i1++) { + if(bbb[i1] == arg6) { + bbd = bbc[i1]; + break; + } + if(i1 == bba - 1) { + int k1 = (int)(Math.random() * (double)bba); + bbb[k1] = arg6; + arg6 = -1 - arg6; + int j2 = (arg6 >> 10 & 0x1f) * 8; + int i3 = (arg6 >> 5 & 0x1f) * 8; + int k3 = (arg6 & 0x1f) * 8; + for(int i4 = 0; i4 < 256; i4++) { + int i6 = i4 * i4; + int j7 = (j2 * i6) / 0x10000; + int k8 = (i3 * i6) / 0x10000; + int i10 = (k3 * i6) / 0x10000; + bbc[k1][255 - i4] = (j7 << 16) + (k8 << 8) + i10; + } + + bbd = bbc[k1]; + } + } + + int l1 = bci; + int k2 = bcl + bfj * l1; + byte byte0 = 1; + if(bgd) { + if((bfj & 1) == 1) { + bfj++; + k2 += l1; + } + l1 <<= 1; + byte0 = 2; + } + if(arg7.isGiantCrystal) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte0) { + CameraVariable m1 = bfi[arg0]; + arg1 = m1.flm >> 8; + int j4 = m1.fln >> 8; + int j6 = j4 - arg1; + if(j6 <= 0) { + k2 += l1; + } else { + int k7 = m1.fma; + int l8 = (m1.fmb - k7) / j6; + if(arg1 < -bcj) { + k7 += (-bcj - arg1) * l8; + arg1 = -bcj; + j6 = j4 - arg1; + } + if(j4 > bcj) { + int k4 = bcj; + j6 = k4 - arg1; + } + bil(bfh, -j6, k2 + arg1, 0, bbd, k7, l8); + k2 += l1; + } + } + + return; + } + if(bbm) { + for(arg0 = bfj; arg0 < bfk; arg0 += byte0) { + CameraVariable m2 = bfi[arg0]; + arg1 = m2.flm >> 8; + int l4 = m2.fln >> 8; + int k6 = l4 - arg1; + if(k6 <= 0) { + k2 += l1; + } else { + int l7 = m2.fma; + int i9 = (m2.fmb - l7) / k6; + if(arg1 < -bcj) { + l7 += (-bcj - arg1) * i9; + arg1 = -bcj; + k6 = l4 - arg1; + } + if(l4 > bcj) { + int i5 = bcj; + k6 = i5 - arg1; + } + bik(bfh, -k6, k2 + arg1, 0, bbd, l7, i9); + k2 += l1; + } + } + + return; + } + for(arg0 = bfj; arg0 < bfk; arg0 += byte0) { + CameraVariable m3 = bfi[arg0]; + arg1 = m3.flm >> 8; + int j5 = m3.fln >> 8; + int l6 = j5 - arg1; + if(l6 <= 0) { + k2 += l1; + } else { + int i8 = m3.fma; + int j9 = (m3.fmb - i8) / l6; + if(arg1 < -bcj) { + i8 += (-bcj - arg1) * j9; + arg1 = -bcj; + l6 = j5 - arg1; + } + if(j5 > bcj) { + int k5 = bcj; + l6 = k5 - arg1; + } + bim(bfh, -l6, k2 + arg1, 0, bbd, i8, j9); + k2 += l1; + } + } + + } + + private static void bie(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + if(arg10 <= 0) + return; + int k = 0; + int i1 = 0; + int l1 = 0; + if(arg6 != 0) { + arg2 = arg4 / arg6 << 7; + arg3 = arg5 / arg6 << 7; + } + if(arg2 < 0) + arg2 = 0; + else + if(arg2 > 16256) + arg2 = 16256; + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + if(arg6 != 0) { + k = arg4 / arg6 << 7; + i1 = arg5 / arg6 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + for(int i2 = arg10 >> 4; i2 > 0; i2--) { + arg2 += arg12 & 0x600000; + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 = k; + arg3 = i1; + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + if(arg6 != 0) { + k = arg4 / arg6 << 7; + i1 = arg5 / arg6 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + j1 = k - arg2 >> 4; + k1 = i1 - arg3 >> 4; + } + + for(int j2 = 0; j2 < (arg10 & 0xf); j2++) { + if((j2 & 3) == 0) { + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + } + arg0[arg11++] = arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1; + arg2 += j1; + arg3 += k1; + } + + } + + private static void bif(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + if(arg10 <= 0) + return; + int k = 0; + int i1 = 0; + int l1 = 0; + if(arg6 != 0) { + arg2 = arg4 / arg6 << 7; + arg3 = arg5 / arg6 << 7; + } + if(arg2 < 0) + arg2 = 0; + else + if(arg2 > 16256) + arg2 = 16256; + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + if(arg6 != 0) { + k = arg4 / arg6 << 7; + i1 = arg5 / arg6 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + for(int i2 = arg10 >> 4; i2 > 0; i2--) { + arg2 += arg12 & 0x600000; + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 = k; + arg3 = i1; + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + if(arg6 != 0) { + k = arg4 / arg6 << 7; + i1 = arg5 / arg6 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + j1 = k - arg2 >> 4; + k1 = i1 - arg3 >> 4; + } + + for(int j2 = 0; j2 < (arg10 & 0xf); j2++) { + if((j2 & 3) == 0) { + arg2 = (arg2 & 0x3fff) + (arg12 & 0x600000); + l1 = arg12 >> 23; + arg12 += arg13; + } + arg0[arg11++] = (arg1[(arg3 & 0x3f80) + (arg2 >> 7)] >>> l1) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + } + + } + + private static void big(int arg0[], int arg1, int arg2, int arg3, int arg4[], int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, int arg14) { + if(arg11 <= 0) + return; + int k = 0; + int i1 = 0; + arg14 <<= 2; + if(arg7 != 0) { + k = arg5 / arg7 << 7; + i1 = arg6 / arg7 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + for(int l1 = arg11; l1 > 0; l1 -= 16) { + arg5 += arg8; + arg6 += arg9; + arg7 += arg10; + arg2 = k; + arg3 = i1; + if(arg7 != 0) { + k = arg5 / arg7 << 7; + i1 = arg6 / arg7 << 7; + } + if(k < 0) + k = 0; + else + if(k > 16256) + k = 16256; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + int i2 = arg13 >> 23; + arg2 += arg13 & 0x600000; + arg13 += arg14; + if(l1 < 16) { + for(int j2 = 0; j2 < l1; j2++) { + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((j2 & 3) == 3) { + arg2 = (arg2 & 0x3fff) + (arg13 & 0x600000); + i2 = arg13 >> 23; + arg13 += arg14; + } + } + + } else { + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg13 & 0x600000); + i2 = arg13 >> 23; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg13 & 0x600000); + i2 = arg13 >> 23; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0x3fff) + (arg13 & 0x600000); + i2 = arg13 >> 23; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0x3f80) + (arg2 >> 7)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + } + } + + } + + private static void bih(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + if(arg10 <= 0) + return; + int k = 0; + int i1 = 0; + arg13 <<= 2; + if(arg6 != 0) { + k = arg4 / arg6 << 6; + i1 = arg5 / arg6 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + for(int l1 = arg10; l1 > 0; l1 -= 16) { + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + arg2 = k; + arg3 = i1; + if(arg6 != 0) { + k = arg4 / arg6 << 6; + i1 = arg5 / arg6 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + int i2 = arg12 >> 20; + arg2 += arg12 & 0xc0000; + arg12 += arg13; + if(l1 < 16) { + for(int j2 = 0; j2 < l1; j2++) { + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + if((j2 & 3) == 3) { + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + } + } + + } else { + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + arg2 += j1; + arg3 += k1; + arg0[arg11++] = arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2; + } + } + + } + + private static void bii(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + if(arg10 <= 0) + return; + int k = 0; + int i1 = 0; + arg13 <<= 2; + if(arg6 != 0) { + k = arg4 / arg6 << 6; + i1 = arg5 / arg6 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + for(int l1 = arg10; l1 > 0; l1 -= 16) { + arg4 += arg7; + arg5 += arg8; + arg6 += arg9; + arg2 = k; + arg3 = i1; + if(arg6 != 0) { + k = arg4 / arg6 << 6; + i1 = arg5 / arg6 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + int i2 = arg12 >> 20; + arg2 += arg12 & 0xc0000; + arg12 += arg13; + if(l1 < 16) { + for(int j2 = 0; j2 < l1; j2++) { + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + if((j2 & 3) == 3) { + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + } + } + + } else { + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg12 & 0xc0000); + i2 = arg12 >> 20; + arg12 += arg13; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + arg2 += j1; + arg3 += k1; + arg0[arg11++] = (arg1[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) + (arg0[arg11] >> 1 & 0x7f7f7f); + } + } + + } + + private static void bij(int arg0[], int arg1, int arg2, int arg3, int arg4[], int arg5, int arg6, int arg7, + int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, int arg14) { + if(arg11 <= 0) + return; + int k = 0; + int i1 = 0; + arg14 <<= 2; + if(arg7 != 0) { + k = arg5 / arg7 << 6; + i1 = arg6 / arg7 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + for(int l1 = arg11; l1 > 0; l1 -= 16) { + arg5 += arg8; + arg6 += arg9; + arg7 += arg10; + arg2 = k; + arg3 = i1; + if(arg7 != 0) { + k = arg5 / arg7 << 6; + i1 = arg6 / arg7 << 6; + } + if(k < 0) + k = 0; + else + if(k > 4032) + k = 4032; + int j1 = k - arg2 >> 4; + int k1 = i1 - arg3 >> 4; + int i2 = arg13 >> 20; + arg2 += arg13 & 0xc0000; + arg13 += arg14; + if(l1 < 16) { + for(int j2 = 0; j2 < l1; j2++) { + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((j2 & 3) == 3) { + arg2 = (arg2 & 0xfff) + (arg13 & 0xc0000); + i2 = arg13 >> 20; + arg13 += arg14; + } + } + + } else { + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg13 & 0xc0000); + i2 = arg13 >> 20; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg13 & 0xc0000); + i2 = arg13 >> 20; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + arg2 = (arg2 & 0xfff) + (arg13 & 0xc0000); + i2 = arg13 >> 20; + arg13 += arg14; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + arg2 += j1; + arg3 += k1; + if((arg1 = arg4[(arg3 & 0xfc0) + (arg2 >> 6)] >>> i2) != 0) + arg0[arg12] = arg1; + arg12++; + } + } + + } + + private static void bik(int arg0[], int arg1, int arg2, int arg3, int arg4[], int arg5, int arg6) { + if(arg1 >= 0) + return; + arg6 <<= 1; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + int k = arg1 / 8; + for(int i1 = k; i1 < 0; i1++) { + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + } + + k = -(arg1 % 8); + for(int j1 = 0; j1 < k; j1++) { + arg0[arg2++] = arg3; + if((j1 & 1) == 1) { + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + } + } + + } + + private static void bil(int arg0[], int arg1, int arg2, int arg3, int arg4[], int arg5, int arg6) { + if(arg1 >= 0) + return; + arg6 <<= 2; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + int k = arg1 / 16; + for(int i1 = k; i1 < 0; i1++) { + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + } + + k = -(arg1 % 16); + for(int j1 = 0; j1 < k; j1++) { + arg0[arg2++] = arg3 + (arg0[arg2] >> 1 & 0x7f7f7f); + if((j1 & 3) == 3) { + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg5 += arg6; + } + } + + } + + private static void bim(int arg0[], int arg1, int arg2, int arg3, int arg4[], int arg5, int arg6) { + if(arg1 >= 0) + return; + arg6 <<= 2; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + int k = arg1 / 16; + for(int i1 = k; i1 < 0; i1++) { + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg0[arg2++] = arg3; + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + } + + k = -(arg1 % 16); + for(int j1 = 0; j1 < k; j1++) { + arg0[arg2++] = arg3; + if((j1 & 3) == 3) { + arg3 = arg4[arg5 >> 8 & 0xff]; + arg5 += arg6; + } + } + + } + + public void setCamera(int k, int i1, int j1, int k1, int l1, int i2, int j2) { + k1 &= 0x3ff; + l1 &= 0x3ff; + i2 &= 0x3ff; + bde = 1024 - k1 & 0x3ff; + bdf = 1024 - l1 & 0x3ff; + bdg = 1024 - i2 & 0x3ff; + int k2 = 0; + int l2 = 0; + int i3 = j2; + if(k1 != 0) { + int j3 = bbk[k1]; + int i4 = bbk[k1 + 1024]; + int l4 = l2 * i4 - i3 * j3 >> 15; + i3 = l2 * j3 + i3 * i4 >> 15; + l2 = l4; + } + if(l1 != 0) { + int k3 = bbk[l1]; + int j4 = bbk[l1 + 1024]; + int i5 = i3 * k3 + k2 * j4 >> 15; + i3 = i3 * j4 - k2 * k3 >> 15; + k2 = i5; + } + if(i2 != 0) { + int l3 = bbk[i2]; + int k4 = bbk[i2 + 1024]; + int j5 = l2 * l3 + k2 * k4 >> 15; + l2 = l2 * k4 - k2 * l3 >> 15; + k2 = j5; + } + bdb = k - k2; + bdc = i1 - l2; + bdd = j1 - i3; + } + + private void bja(int arg0) { + CameraModel l1 = bdm[arg0]; + GameObject k = l1.object; + int i1 = l1.bkk; + int ai[] = k.cgd[i1]; + int j1 = k.cgc[i1]; + int k1 = k.cgh[i1]; + int j2 = k.cfi[ai[0]]; + int k2 = k.cfj[ai[0]]; + int l2 = k.cfk[ai[0]]; + int i3 = k.cfi[ai[1]] - j2; + int j3 = k.cfj[ai[1]] - k2; + int k3 = k.cfk[ai[1]] - l2; + int l3 = k.cfi[ai[2]] - j2; + int i4 = k.cfj[ai[2]] - k2; + int j4 = k.cfk[ai[2]] - l2; + int k4 = j3 * j4 - i4 * k3; + int l4 = k3 * l3 - j4 * i3; + int i5 = i3 * i4 - l3 * j3; + if(k1 == -1) { + k1 = 0; + for(; k4 > 25000 || l4 > 25000 || i5 > 25000 || k4 < -25000 || l4 < -25000 || i5 < -25000; i5 >>= 1) { + k1++; + k4 >>= 1; + l4 >>= 1; + } + + k.cgh[i1] = k1; + k.cgg[i1] = (int)((double)bda * Math.sqrt(k4 * k4 + l4 * l4 + i5 * i5)); + } else { + k4 >>= k1; + l4 >>= k1; + i5 >>= k1; + } + l1.blb = j2 * k4 + k2 * l4 + l2 * i5; + l1.bkm = k4; + l1.bkn = l4; + l1.bla = i5; + int j5 = k.cfk[ai[0]]; + int k5 = j5; + int l5 = k.cfl[ai[0]]; + int i6 = l5; + int j6 = k.cfm[ai[0]]; + int k6 = j6; + for(int l6 = 1; l6 < j1; l6++) { + int i2 = k.cfk[ai[l6]]; + if(i2 > k5) + k5 = i2; + else + if(i2 < j5) + j5 = i2; + i2 = k.cfl[ai[l6]]; + if(i2 > i6) + i6 = i2; + else + if(i2 < l5) + l5 = i2; + i2 = k.cfm[ai[l6]]; + if(i2 > k6) + k6 = i2; + else + if(i2 < j6) + j6 = i2; + } + + l1.bkh = j5; + l1.bki = k5; + l1.bkd = l5; + l1.bkf = i6; + l1.bke = j6; + l1.bkg = k6; + } + + private void bjb(int arg0) { + CameraModel l1 = bdm[arg0]; + GameObject k = l1.object; + int i1 = l1.bkk; + int ai[] = k.cgd[i1]; + int k1 = 0; + int i2 = 0; + int j2 = 1; + int k2 = k.cfi[ai[0]]; + int l2 = k.cfj[ai[0]]; + int i3 = k.cfk[ai[0]]; + k.cgg[i1] = 1; + k.cgh[i1] = 0; + l1.blb = k2 * k1 + l2 * i2 + i3 * j2; + l1.bkm = k1; + l1.bkn = i2; + l1.bla = j2; + int j3 = k.cfk[ai[0]]; + int k3 = j3; + int l3 = k.cfl[ai[0]]; + int i4 = l3; + if(k.cfl[ai[1]] < l3) + l3 = k.cfl[ai[1]]; + else + i4 = k.cfl[ai[1]]; + int j4 = k.cfm[ai[1]]; + int k4 = k.cfm[ai[0]]; + int j1 = k.cfk[ai[1]]; + if(j1 > k3) + k3 = j1; + else + if(j1 < j3) + j3 = j1; + j1 = k.cfl[ai[1]]; + if(j1 > i4) + i4 = j1; + else + if(j1 < l3) + l3 = j1; + j1 = k.cfm[ai[1]]; + if(j1 > k4) + k4 = j1; + else + if(j1 < j4) + j4 = j1; + l1.bkh = j3; + l1.bki = k3; + l1.bkd = l3 - 20; + l1.bkf = i4 + 20; + l1.bke = j4; + l1.bkg = k4; + } + + private boolean bjc(CameraModel arg0, CameraModel arg1) { + if(arg0.bkd >= arg1.bkf) + return true; + if(arg1.bkd >= arg0.bkf) + return true; + if(arg0.bke >= arg1.bkg) + return true; + if(arg1.bke >= arg0.bkg) + return true; + if(arg0.bkh >= arg1.bki) + return true; + if(arg1.bkh > arg0.bki) + return false; + GameObject k = arg0.object; + GameObject i1 = arg1.object; + int j1 = arg0.bkk; + int k1 = arg1.bkk; + int ai[] = k.cgd[j1]; + int ai1[] = i1.cgd[k1]; + int l1 = k.cgc[j1]; + int i2 = i1.cgc[k1]; + int l3 = i1.cfi[ai1[0]]; + int i4 = i1.cfj[ai1[0]]; + int j4 = i1.cfk[ai1[0]]; + int k4 = arg1.bkm; + int l4 = arg1.bkn; + int i5 = arg1.bla; + int j5 = i1.cgg[k1]; + int k5 = arg1.blb; + boolean flag = false; + for(int l5 = 0; l5 < l1; l5++) { + int j2 = ai[l5]; + int j3 = (l3 - k.cfi[j2]) * k4 + (i4 - k.cfj[j2]) * l4 + (j4 - k.cfk[j2]) * i5; + if((j3 >= -j5 || k5 >= 0) && (j3 <= j5 || k5 <= 0)) + continue; + flag = true; + break; + } + + if(!flag) + return true; + l3 = k.cfi[ai[0]]; + i4 = k.cfj[ai[0]]; + j4 = k.cfk[ai[0]]; + k4 = arg0.bkm; + l4 = arg0.bkn; + i5 = arg0.bla; + j5 = k.cgg[j1]; + k5 = arg0.blb; + flag = false; + for(int i6 = 0; i6 < i2; i6++) { + int k2 = ai1[i6]; + int k3 = (l3 - i1.cfi[k2]) * k4 + (i4 - i1.cfj[k2]) * l4 + (j4 - i1.cfk[k2]) * i5; + if((k3 >= -j5 || k5 <= 0) && (k3 <= j5 || k5 >= 0)) + continue; + flag = true; + break; + } + + if(!flag) + return true; + int ai2[]; + int ai3[]; + if(l1 == 2) { + ai2 = new int[4]; + ai3 = new int[4]; + int j6 = ai[0]; + int l2 = ai[1]; + ai2[0] = k.cfl[j6] - 20; + ai2[1] = k.cfl[l2] - 20; + ai2[2] = k.cfl[l2] + 20; + ai2[3] = k.cfl[j6] + 20; + ai3[0] = ai3[3] = k.cfm[j6]; + ai3[1] = ai3[2] = k.cfm[l2]; + } else { + ai2 = new int[l1]; + ai3 = new int[l1]; + for(int k6 = 0; k6 < l1; k6++) { + int j7 = ai[k6]; + ai2[k6] = k.cfl[j7]; + ai3[k6] = k.cfm[j7]; + } + + } + int ai4[]; + int ai5[]; + if(i2 == 2) { + ai4 = new int[4]; + ai5 = new int[4]; + int l6 = ai1[0]; + int i3 = ai1[1]; + ai4[0] = i1.cfl[l6] - 20; + ai4[1] = i1.cfl[i3] - 20; + ai4[2] = i1.cfl[i3] + 20; + ai4[3] = i1.cfl[l6] + 20; + ai5[0] = ai5[3] = i1.cfm[l6]; + ai5[1] = ai5[2] = i1.cfm[i3]; + } else { + ai4 = new int[i2]; + ai5 = new int[i2]; + for(int i7 = 0; i7 < i2; i7++) { + int k7 = ai1[i7]; + ai4[i7] = i1.cfl[k7]; + ai5[i7] = i1.cfm[k7]; + } + + } + return !bkc(ai2, ai3, ai4, ai5); + } + + private boolean bjd(CameraModel arg0, CameraModel arg1) { + GameObject k = arg0.object; + GameObject i1 = arg1.object; + int j1 = arg0.bkk; + int k1 = arg1.bkk; + int ai[] = k.cgd[j1]; + int ai1[] = i1.cgd[k1]; + int l1 = k.cgc[j1]; + int i2 = i1.cgc[k1]; + int j3 = i1.cfi[ai1[0]]; + int k3 = i1.cfj[ai1[0]]; + int l3 = i1.cfk[ai1[0]]; + int i4 = arg1.bkm; + int j4 = arg1.bkn; + int k4 = arg1.bla; + int l4 = i1.cgg[k1]; + int i5 = arg1.blb; + boolean flag = false; + for(int j5 = 0; j5 < l1; j5++) { + int j2 = ai[j5]; + int l2 = (j3 - k.cfi[j2]) * i4 + (k3 - k.cfj[j2]) * j4 + (l3 - k.cfk[j2]) * k4; + if((l2 >= -l4 || i5 >= 0) && (l2 <= l4 || i5 <= 0)) + continue; + flag = true; + break; + } + + if(!flag) + return true; + j3 = k.cfi[ai[0]]; + k3 = k.cfj[ai[0]]; + l3 = k.cfk[ai[0]]; + i4 = arg0.bkm; + j4 = arg0.bkn; + k4 = arg0.bla; + l4 = k.cgg[j1]; + i5 = arg0.blb; + flag = false; + for(int k5 = 0; k5 < i2; k5++) { + int k2 = ai1[k5]; + int i3 = (j3 - i1.cfi[k2]) * i4 + (k3 - i1.cfj[k2]) * j4 + (l3 - i1.cfk[k2]) * k4; + if((i3 >= -l4 || i5 <= 0) && (i3 <= l4 || i5 >= 0)) + continue; + flag = true; + break; + } + + return !flag; + } + + public void createPictures(int k, int i1, int j1) { + bei = k; + bej = new byte[k][]; + bek = new int[k][]; + bel = new int[k]; + bem = new long[k]; + bfa = new boolean[k]; + ben = new int[k][]; + bfb = 0L; + bfc = new int[i1][]; + bfd = new int[j1][]; + } + + public void bjf(int k, byte abyte0[], int ai[], int i1) { + bej[k] = abyte0; + bek[k] = ai; + bel[k] = i1; + bem[k] = 0L; + bfa[k] = false; + ben[k] = null; + bjg(k); + } + + public void bjg(int arg0) { + if(arg0 < 0) + return; + bem[arg0] = bfb++; + if(ben[arg0] != null) + return; + if(bel[arg0] == 0) { + for(int k = 0; k < bfc.length; k++) + if(bfc[k] == null) { + bfc[k] = new int[16384]; + ben[arg0] = bfc[k]; + bjh(arg0); + return; + } + + long l1 = 1L << 30; + int j1 = 0; + for(int i2 = 0; i2 < bei; i2++) + if(i2 != arg0 && bel[i2] == 0 && ben[i2] != null && bem[i2] < l1) { + l1 = bem[i2]; + j1 = i2; + } + + ben[arg0] = ben[j1]; + ben[j1] = null; + bjh(arg0); + return; + } + for(int i1 = 0; i1 < bfd.length; i1++) + if(bfd[i1] == null) { + bfd[i1] = new int[0x10000]; + ben[arg0] = bfd[i1]; + bjh(arg0); + return; + } + + long l2 = 1L << 30; + int k1 = 0; + for(int j2 = 0; j2 < bei; j2++) + if(j2 != arg0 && bel[j2] == 1 && ben[j2] != null && bem[j2] < l2) { + l2 = bem[j2]; + k1 = j2; + } + + ben[arg0] = ben[k1]; + ben[k1] = null; + bjh(arg0); + } + + private void bjh(int arg0) { + char c; + if(bel[arg0] == 0) + c = '@'; + else + c = '\200'; + int ai[] = ben[arg0]; + int k = 0; + for(int i1 = 0; i1 < c; i1++) { + for(int j1 = 0; j1 < c; j1++) { + int l1 = bek[arg0][bej[arg0][j1 + i1 * c] & 0xff]; + l1 &= 0xf8f8ff; + if(l1 == 0) + l1 = 1; + else + if(l1 == 0xf800ff) { + l1 = 0; + bfa[arg0] = true; + } + ai[k++] = l1; + } + + } + + for(int k1 = 0; k1 < k; k1++) { + int i2 = ai[k1]; + ai[k + k1] = i2 - (i2 >>> 3) & 0xf8f8ff; + ai[k * 2 + k1] = i2 - (i2 >>> 2) & 0xf8f8ff; + ai[k * 3 + k1] = i2 - (i2 >>> 2) - (i2 >>> 3) & 0xf8f8ff; + } + + } + + public void bji(int arg0) { + if(ben[arg0] == null) + return; + int ai[] = ben[arg0]; + for(int k = 0; k < 64; k++) { + int i1 = k + 4032; + int j1 = ai[i1]; + for(int l1 = 0; l1 < 63; l1++) { + ai[i1] = ai[i1 - 64]; + i1 -= 64; + } + + ben[arg0][i1] = j1; + } + + char c = '\u1000'; + for(int k1 = 0; k1 < c; k1++) { + int i2 = ai[k1]; + ai[c + k1] = i2 - (i2 >>> 3) & 0xf8f8ff; + ai[c * 2 + k1] = i2 - (i2 >>> 2) & 0xf8f8ff; + ai[c * 3 + k1] = i2 - (i2 >>> 2) - (i2 >>> 3) & 0xf8f8ff; + } + + } + + public int bjj(int k) { + if(k == 0xbc614e) + return 0; + bjg(k); + if(k >= 0) + return ben[k][0]; + if(k < 0) { + k = -(k + 1); + int i1 = k >> 10 & 0x1f; + int j1 = k >> 5 & 0x1f; + int k1 = k & 0x1f; + return (i1 << 19) + (j1 << 11) + (k1 << 3); + } else { + return 0; + } + } + + public void bjk(int arg0, int arg1, int arg2) { + if(arg0 == 0 && arg1 == 0 && arg2 == 0) + arg0 = 32; + for(int k = 0; k < currentModelCount; k++) + bdj[k].cmg(arg0, arg1, arg2); + + } + + public void bjl(int arg0, int arg1, int arg2, int arg3, int arg4) { + if(arg2 == 0 && arg3 == 0 && arg4 == 0) + arg2 = 32; + for(int k = 0; k < currentModelCount; k++) + bdj[k].cmf(arg0, arg1, arg2, arg3, arg4); + + } + + public static int bjm(int k, int i1, int j1) { + return -1 - (k / 8) * 1024 - (i1 / 8) * 32 - j1 / 8; + } + + public int bjn(int k, int i1, int j1, int k1, int l1) { + if(k1 == i1) + return k; + else + return k + ((j1 - k) * (l1 - i1)) / (k1 - i1); + } + + public boolean bka(int k, int i1, int j1, int k1, boolean flag) { + if(flag && k <= j1 || k < j1) { + if(k > k1) + return true; + if(i1 > j1) + return true; + if(i1 > k1) + return true; + return !flag; + } + if(k < k1) + return true; + if(i1 < j1) + return true; + if(i1 < k1) + return true; + else + return flag; + } + + public boolean bkb(int k, int i1, int j1, boolean flag) { + if(flag && k <= j1 || k < j1) { + if(i1 > j1) + return true; + return !flag; + } + if(i1 < j1) + return true; + else + return flag; + } + + public boolean bkc(int arg0[], int arg1[], int arg2[], int arg3[]) { + int k = arg0.length; + int i1 = arg2.length; + byte byte0 = 0; + int l20; + int j21 = l20 = arg1[0]; + int j1 = 0; + int i21; + int k21 = i21 = arg3[0]; + int l1 = 0; + for(int l21 = 1; l21 < k; l21++) + if(arg1[l21] < l20) { + l20 = arg1[l21]; + j1 = l21; + } else + if(arg1[l21] > j21) + j21 = arg1[l21]; + + for(int i22 = 1; i22 < i1; i22++) + if(arg3[i22] < i21) { + i21 = arg3[i22]; + l1 = i22; + } else + if(arg3[i22] > k21) + k21 = arg3[i22]; + + if(i21 >= j21) + return false; + if(l20 >= k21) + return false; + int k1; + int i2; + boolean flag; + if(arg1[j1] < arg3[l1]) { + for(k1 = j1; arg1[k1] < arg3[l1]; k1 = (k1 + 1) % k); + for(; arg1[j1] < arg3[l1]; j1 = ((j1 - 1) + k) % k); + int j2 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int j7 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int k11 = arg2[l1]; + flag = (j2 < k11) | (j7 < k11); + if(bkb(j2, j7, k11, flag)) + return true; + i2 = (l1 + 1) % i1; + l1 = ((l1 - 1) + i1) % i1; + if(j1 == k1) + byte0 = 1; + } else { + for(i2 = l1; arg3[i2] < arg1[j1]; i2 = (i2 + 1) % i1); + for(; arg3[l1] < arg1[j1]; l1 = ((l1 - 1) + i1) % i1); + int k2 = arg0[j1]; + int l11 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[j1]); + int k16 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[j1]); + flag = (k2 < l11) | (k2 < k16); + if(bkb(l11, k16, k2, !flag)) + return true; + k1 = (j1 + 1) % k; + j1 = ((j1 - 1) + k) % k; + if(l1 == i2) + byte0 = 2; + } + while(byte0 == 0) + if(arg1[j1] < arg1[k1]) { + if(arg1[j1] < arg3[l1]) { + if(arg1[j1] < arg3[i2]) { + int l2 = arg0[j1]; + int k7 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg1[j1]); + int i12 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[j1]); + int l16 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[j1]); + if(bka(l2, k7, i12, l16, flag)) + return true; + j1 = ((j1 - 1) + k) % k; + if(j1 == k1) + byte0 = 1; + } else { + int i3 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int l7 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int j12 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int i17 = arg2[i2]; + if(bka(i3, l7, j12, i17, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 2; + } + } else + if(arg3[l1] < arg3[i2]) { + int j3 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int i8 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int k12 = arg2[l1]; + int j17 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg3[l1]); + if(bka(j3, i8, k12, j17, flag)) + return true; + l1 = ((l1 - 1) + i1) % i1; + if(l1 == i2) + byte0 = 2; + } else { + int k3 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int j8 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int l12 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int k17 = arg2[i2]; + if(bka(k3, j8, l12, k17, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 2; + } + } else + if(arg1[k1] < arg3[l1]) { + if(arg1[k1] < arg3[i2]) { + int l3 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg1[k1]); + int k8 = arg0[k1]; + int i13 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[k1]); + int l17 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[k1]); + if(bka(l3, k8, i13, l17, flag)) + return true; + k1 = (k1 + 1) % k; + if(j1 == k1) + byte0 = 1; + } else { + int i4 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int l8 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int j13 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int i18 = arg2[i2]; + if(bka(i4, l8, j13, i18, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 2; + } + } else + if(arg3[l1] < arg3[i2]) { + int j4 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int i9 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int k13 = arg2[l1]; + int j18 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg3[l1]); + if(bka(j4, i9, k13, j18, flag)) + return true; + l1 = ((l1 - 1) + i1) % i1; + if(l1 == i2) + byte0 = 2; + } else { + int k4 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int j9 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int l13 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int k18 = arg2[i2]; + if(bka(k4, j9, l13, k18, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 2; + } + while(byte0 == 1) + if(arg1[j1] < arg3[l1]) { + if(arg1[j1] < arg3[i2]) { + int l4 = arg0[j1]; + int i14 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[j1]); + int l18 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[j1]); + return bkb(i14, l18, l4, !flag); + } + int i5 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int k9 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int j14 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int i19 = arg2[i2]; + if(bka(i5, k9, j14, i19, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 0; + } else + if(arg3[l1] < arg3[i2]) { + int j5 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int l9 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int k14 = arg2[l1]; + int j19 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg3[l1]); + if(bka(j5, l9, k14, j19, flag)) + return true; + l1 = ((l1 - 1) + i1) % i1; + if(l1 == i2) + byte0 = 0; + } else { + int k5 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[i2]); + int i10 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[i2]); + int l14 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg3[i2]); + int k19 = arg2[i2]; + if(bka(k5, i10, l14, k19, flag)) + return true; + i2 = (i2 + 1) % i1; + if(l1 == i2) + byte0 = 0; + } + while(byte0 == 2) + if(arg3[l1] < arg1[j1]) { + if(arg3[l1] < arg1[k1]) { + int l5 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int j10 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int i15 = arg2[l1]; + return bkb(l5, j10, i15, flag); + } + int i6 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg1[k1]); + int k10 = arg0[k1]; + int j15 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[k1]); + int l19 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[k1]); + if(bka(i6, k10, j15, l19, flag)) + return true; + k1 = (k1 + 1) % k; + if(j1 == k1) + byte0 = 0; + } else + if(arg1[j1] < arg1[k1]) { + int j6 = arg0[j1]; + int l10 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg1[j1]); + int k15 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[j1]); + int i20 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[j1]); + if(bka(j6, l10, k15, i20, flag)) + return true; + j1 = ((j1 - 1) + k) % k; + if(j1 == k1) + byte0 = 0; + } else { + int k6 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg1[k1]); + int i11 = arg0[k1]; + int l15 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[k1]); + int j20 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[k1]); + if(bka(k6, i11, l15, j20, flag)) + return true; + k1 = (k1 + 1) % k; + if(j1 == k1) + byte0 = 0; + } + if(arg1[j1] < arg3[l1]) { + int l6 = arg0[j1]; + int i16 = bjn(arg2[(l1 + 1) % i1], arg3[(l1 + 1) % i1], arg2[l1], arg3[l1], arg1[j1]); + int k20 = bjn(arg2[((i2 - 1) + i1) % i1], arg3[((i2 - 1) + i1) % i1], arg2[i2], arg3[i2], arg1[j1]); + return bkb(i16, k20, l6, !flag); + } + int i7 = bjn(arg0[(j1 + 1) % k], arg1[(j1 + 1) % k], arg0[j1], arg1[j1], arg3[l1]); + int j11 = bjn(arg0[((k1 - 1) + k) % k], arg1[((k1 - 1) + k) % k], arg0[k1], arg1[k1], arg3[l1]); + int j16 = arg2[l1]; + return bkb(i7, j11, j16, flag); + } + + int bba; + int bbb[]; + int bbc[][]; + int bbd[]; + public int bbe; + public int bbf; + public int zoom1; + public int zoom2; + public int zoom3; + public int zoom4; + public static int bbk[] = new int[2048]; + private static int bbl[] = new int[512]; + public boolean bbm; + public double bbn; + public int bca; + private boolean bcb; + private int bcc; + private int bcd; + private int bce; + private int bcf; + private GameObject bcg[]; + private int bch[]; + private int bci; + private int bcj; + private int bck; + private int bcl; + private int bcm; + private int bcn; + private int bda; + private int bdb; + private int bdc; + private int bdd; + private int bde; + private int bdf; + private int bdg; + public int currentModelCount; + public int maxModelCount; + public GameObject bdj[]; + private int bdk[]; + private int bdl; + private CameraModel bdm[]; + private int bdn; + private int bea[]; + private int beb[]; + private int bec[]; + private int bed[]; + private int bee[]; + private int bef[]; + private int beg[]; + public GameObject highlightedObject; + int bei; + byte bej[][]; + int bek[][]; + int bel[]; + long bem[]; + int ben[][]; + boolean bfa[]; + private static long bfb; + int bfc[][]; + int bfd[][]; + private static byte bfe[]; + GameImage bfg; + public int bfh[]; + CameraVariable bfi[]; + int bfj; + int bfk; + int bfl[]; + int bfm[]; + int bfn[]; + int bga[]; + int bgb[]; + int bgc[]; + boolean bgd; + static int bge; + static int bgf; + static int bgg; + static int bgh; + static int bgi; + static int bgj; + int bgk; + int bgl; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/CameraModel.java b/clients/clientRSC/src/main/java/mudclient/CameraModel.java new file mode 100755 index 0000000..c6cbd07 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/CameraModel.java @@ -0,0 +1,27 @@ +package mudclient; + +public class CameraModel { + + public CameraModel() { + bld = false; + blf = -1; + } + + protected int bkd; + protected int bke; + protected int bkf; + protected int bkg; + protected int bkh; + protected int bki; + protected GameObject object; + protected int bkk; + protected int bkl; + protected int bkm; + protected int bkn; + protected int bla; + protected int blb; + protected int blc; + protected boolean bld; + protected int ble; + protected int blf; +} diff --git a/clients/clientRSC/src/main/java/mudclient/CameraVariable.java b/clients/clientRSC/src/main/java/mudclient/CameraVariable.java new file mode 100755 index 0000000..0fcf4f6 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/CameraVariable.java @@ -0,0 +1,12 @@ +package mudclient; + +public class CameraVariable { + + public CameraVariable() { + } + + int flm; + int fln; + int fma; + int fmb; +} diff --git a/clients/clientRSC/src/main/java/mudclient/ChatFilter.java b/clients/clientRSC/src/main/java/mudclient/ChatFilter.java new file mode 100755 index 0000000..330923c --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/ChatFilter.java @@ -0,0 +1,689 @@ +package mudclient; + +public class ChatFilter { + + public static void addFilterData(DataEncryption q1, DataEncryption q2, DataEncryption q3, DataEncryption q4) { + loadBadEnc(q2); + loadHostsEnc(q3); + loadFragmentsEnc(q1); + loadTldList(q4); + } + + public static void loadTldList(DataEncryption arg0) { + int i = arg0.getInt(); + ffi = new char[i][]; + ffj = new int[i]; + for(int j = 0; j < i; j++) { + ffj[j] = arg0.getByte(); + char ac[] = new char[arg0.getByte()]; + for(int k = 0; k < ac.length; k++) + ac[k] = (char)arg0.getByte(); + + ffi[j] = ac; + } + + } + + public static void loadBadEnc(DataEncryption q1) { + int i = q1.getInt(); + ffe = new char[i][]; + fff = new byte[i][][]; + fgc(q1, ffe, fff); + } + + public static void loadHostsEnc(DataEncryption q1) { + int i = q1.getInt(); + ffg = new char[i][]; + ffh = new byte[i][][]; + fgc(q1, ffg, ffh); + } + + public static void loadFragmentsEnc(DataEncryption arg0) { + ffd = new int[arg0.getInt()]; + for(int i = 0; i < ffd.length; i++) + ffd[i] = arg0.getShort(); + + } + + public static void fgc(DataEncryption arg0, char arg1[][], byte arg2[][][]) { + for(int i = 0; i < arg1.length; i++) { + char ac[] = new char[arg0.getByte()]; + for(int j = 0; j < ac.length; j++) + ac[j] = (char)arg0.getByte(); + + arg1[i] = ac; + byte abyte0[][] = new byte[arg0.getInt()][2]; + for(int k = 0; k < abyte0.length; k++) { + abyte0[k][0] = (byte)arg0.getByte(); + abyte0[k][1] = (byte)arg0.getByte(); + } + + if(abyte0.length > 0) + arg2[i] = abyte0; + } + + } + + public static String filterChat(String arg0) { + char ac[] = arg0.toLowerCase().toCharArray(); + fgi(ac); + fgg(ac); + fgh(ac); + fhd(ac); + for(int i = 0; i < ffk.length; i++) { + for(int j = -1; (j = arg0.indexOf(ffk[i], j + 1)) != -1;) { + char ac1[] = ffk[i].toCharArray(); + for(int k = 0; k < ac1.length; k++) + ac[k + j] = ac1[k]; + + } + + } + + if(ffb) { + fge(arg0.toCharArray(), ac); + fgf(ac); + } + return new String(ac); + } + + public static void fge(char arg0[], char arg1[]) { + for(int i = 0; i < arg0.length; i++) + if(arg1[i] != '*' && fhl(arg0[i])) + arg1[i] = arg0[i]; + + } + + public static void fgf(char arg0[]) { + boolean flag = true; + for(int i = 0; i < arg0.length; i++) { + char c = arg0[i]; + if(fhi(c)) { + if(flag) { + if(fhk(c)) + flag = false; + } else + if(fhl(c)) + arg0[i] = (char)((c + 97) - 65); + } else { + flag = true; + } + } + + } + + public static void fgg(char arg0[]) { + for(int i = 0; i < 2; i++) { + for(int j = ffe.length - 1; j >= 0; j--) + fgm(arg0, ffe[j], fff[j]); + + } + + } + + public static void fgh(char arg0[]) { + for(int i = ffg.length - 1; i >= 0; i--) + fgm(arg0, ffg[i], ffh[i]); + + } + + public static void fgi(char arg0[]) { + char ac[] = (char[])arg0.clone(); + char ac1[] = { + 'd', 'o', 't' + }; + fgm(ac, ac1, null); + char ac2[] = (char[])arg0.clone(); + char ac3[] = { + 's', 'l', 'a', 's', 'h' + }; + fgm(ac2, ac3, null); + for(int i = 0; i < ffi.length; i++) + fgj(arg0, ac, ac2, ffi[i], ffj[i]); + + } + + public static void fgj(char arg0[], char arg1[], char arg2[], char arg3[], int arg4) { + if(arg3.length > arg0.length) + return; + for(int i = 0; i <= arg0.length - arg3.length; i++) { + int j = i; + int k = 0; + while(j < arg0.length) { + int l = 0; + char c = arg0[j]; + char c1 = '\0'; + if(j + 1 < arg0.length) + c1 = arg0[j + 1]; + if(k < arg3.length && (l = fha(arg3[k], c, c1)) > 0) { + j += l; + k++; + continue; + } + if(k == 0) + break; + if((l = fha(arg3[k - 1], c, c1)) > 0) { + j += l; + continue; + } + if(k >= arg3.length || !fhg(c)) + break; + j++; + } + if(k >= arg3.length) { + boolean flag = false; + int i1 = fgk(arg0, arg1, i); + int j1 = fgl(arg0, arg2, j - 1); + if(fen) + System.out.println("Potential tld: " + String.valueOf(arg3) + " at char " + i + " (type=" + arg4 + ", startmatch=" + i1 + ", endmatch=" + j1 + ")"); + if(arg4 == 1 && i1 > 0 && j1 > 0) + flag = true; + if(arg4 == 2 && (i1 > 2 && j1 > 0 || i1 > 0 && j1 > 2)) + flag = true; + if(arg4 == 3 && i1 > 0 && j1 > 2) + flag = true; + if(flag) { + if(fen) + System.out.println("Filtered tld: " + String.valueOf(arg3) + " at char " + i); + int k1 = i; + int l1 = j - 1; + if(i1 > 2) { + if(i1 == 4) { + boolean flag1 = false; + for(int j2 = k1 - 1; j2 >= 0; j2--) + if(flag1) { + if(arg1[j2] != '*') + break; + k1 = j2; + } else + if(arg1[j2] == '*') { + k1 = j2; + flag1 = true; + } + + } + boolean flag2 = false; + for(int k2 = k1 - 1; k2 >= 0; k2--) + if(flag2) { + if(fhg(arg0[k2])) + break; + k1 = k2; + } else + if(!fhg(arg0[k2])) { + flag2 = true; + k1 = k2; + } + + } + if(j1 > 2) { + if(j1 == 4) { + boolean flag3 = false; + for(int l2 = l1 + 1; l2 < arg0.length; l2++) + if(flag3) { + if(arg2[l2] != '*') + break; + l1 = l2; + } else + if(arg2[l2] == '*') { + l1 = l2; + flag3 = true; + } + + } + boolean flag4 = false; + for(int i3 = l1 + 1; i3 < arg0.length; i3++) + if(flag4) { + if(fhg(arg0[i3])) + break; + l1 = i3; + } else + if(!fhg(arg0[i3])) { + flag4 = true; + l1 = i3; + } + + } + for(int i2 = k1; i2 <= l1; i2++) + arg0[i2] = '*'; + + } + } + } + + } + + public static int fgk(char arg0[], char arg1[], int arg2) { + if(arg2 == 0) + return 2; + for(int i = arg2 - 1; i >= 0; i--) { + if(!fhg(arg0[i])) + break; + if(arg0[i] == ',' || arg0[i] == '.') + return 3; + } + + int j = 0; + for(int k = arg2 - 1; k >= 0; k--) { + if(!fhg(arg1[k])) + break; + if(arg1[k] == '*') + j++; + } + + if(j >= 3) + return 4; + return !fhg(arg0[arg2 - 1]) ? 0 : 1; + } + + public static int fgl(char arg0[], char arg1[], int arg2) { + if(arg2 + 1 == arg0.length) + return 2; + for(int i = arg2 + 1; i < arg0.length; i++) { + if(!fhg(arg0[i])) + break; + if(arg0[i] == '\\' || arg0[i] == '/') + return 3; + } + + int j = 0; + for(int k = arg2 + 1; k < arg0.length; k++) { + if(!fhg(arg1[k])) + break; + if(arg1[k] == '*') + j++; + } + + if(j >= 5) + return 4; + return !fhg(arg0[arg2 + 1]) ? 0 : 1; + } + + public static void fgm(char arg0[], char arg1[], byte arg2[][]) { + if(arg1.length > arg0.length) + return; + for(int i = 0; i <= arg0.length - arg1.length; i++) { + int j = i; + int k = 0; + boolean flag = false; + while(j < arg0.length) { + int l = 0; + char c = arg0[j]; + char c2 = '\0'; + if(j + 1 < arg0.length) + c2 = arg0[j + 1]; + if(k < arg1.length && (l = fhb(arg1[k], c, c2)) > 0) { + j += l; + k++; + continue; + } + if(k == 0) + break; + if((l = fhb(arg1[k - 1], c, c2)) > 0) { + j += l; + continue; + } + if(k >= arg1.length || !fhh(c)) + break; + if(fhg(c) && c != '\'') + flag = true; + j++; + } + if(k >= arg1.length) { + boolean flag1 = true; + if(fen) + System.out.println("Potential word: " + String.valueOf(arg1) + " at char " + i); + if(!flag) { + char c1 = ' '; + if(i - 1 >= 0) + c1 = arg0[i - 1]; + char c3 = ' '; + if(j < arg0.length) + c3 = arg0[j]; + byte byte0 = fhc(c1); + byte byte1 = fhc(c3); + if(arg2 != null && fgn(arg2, byte0, byte1)) + flag1 = false; + } else { + boolean flag2 = false; + boolean flag3 = false; + if(i - 1 < 0 || fhg(arg0[i - 1]) && arg0[i - 1] != '\'') + flag2 = true; + if(j >= arg0.length || fhg(arg0[j]) && arg0[j] != '\'') + flag3 = true; + if(!flag2 || !flag3) { + boolean flag4 = false; + int j1 = i - 2; + if(flag2) + j1 = i; + for(; !flag4 && j1 < j; j1++) + if(j1 >= 0 && (!fhg(arg0[j1]) || arg0[j1] == '\'')) { + char ac[] = new char[3]; + int k1; + for(k1 = 0; k1 < 3; k1++) { + if(j1 + k1 >= arg0.length || fhg(arg0[j1 + k1]) && arg0[j1 + k1] != '\'') + break; + ac[k1] = arg0[j1 + k1]; + } + + boolean flag5 = true; + if(k1 == 0) + flag5 = false; + if(k1 < 3 && j1 - 1 >= 0 && (!fhg(arg0[j1 - 1]) || arg0[j1 - 1] == '\'')) + flag5 = false; + if(flag5 && !fhm(ac)) + flag4 = true; + } + + if(!flag4) + flag1 = false; + } + } + if(flag1) { + if(ffa) + System.out.println("Filtered word: " + String.valueOf(arg1) + " at char " + i); + for(int i1 = i; i1 < j; i1++) + arg0[i1] = '*'; + + } + } + } + + } + + public static boolean fgn(byte arg0[][], byte arg1, byte arg2) { + int i = 0; + if(arg0[i][0] == arg1 && arg0[i][1] == arg2) + return true; + int j = arg0.length - 1; + if(arg0[j][0] == arg1 && arg0[j][1] == arg2) + return true; + do { + int k = (i + j) / 2; + if(arg0[k][0] == arg1 && arg0[k][1] == arg2) + return true; + if(arg1 < arg0[k][0] || arg1 == arg0[k][0] && arg2 < arg0[k][1]) + j = k; + else + i = k; + } while(i != j && i + 1 != j); + return false; + } + + public static int fha(char c, char c1, char c2) { + if(c == c1) + return 1; + if(c == 'e' && c1 == '3') + return 1; + if(c == 't' && (c1 == '7' || c1 == '+')) + return 1; + if(c == 'a' && (c1 == '4' || c1 == '@')) + return 1; + if(c == 'o' && c1 == '0') + return 1; + if(c == 'i' && c1 == '1') + return 1; + if(c == 's' && c1 == '5') + return 1; + if(c == 'f' && c1 == 'p' && c2 == 'h') + return 2; + return c != 'g' || c1 != '9' ? 0 : 1; + } + + public static int fhb(char c, char c1, char c2) { + if(c == '*') + return 0; + if(c == c1) + return 1; + if(c >= 'a' && c <= 'z') { + if(c == 'e') + return c1 != '3' ? 0 : 1; + if(c == 't') + return c1 != '7' ? 0 : 1; + if(c == 'a') + return c1 != '4' && c1 != '@' ? 0 : 1; + if(c == 'o') { + if(c1 == '0' || c1 == '*') + return 1; + return c1 != '(' || c2 != ')' ? 0 : 2; + } + if(c == 'i') + return c1 != 'y' && c1 != 'l' && c1 != 'j' && c1 != '1' && c1 != '!' && c1 != ':' && c1 != ';' ? 0 : 1; + if(c == 'n') + return 0; + if(c == 's') + return c1 != '5' && c1 != 'z' && c1 != '$' ? 0 : 1; + if(c == 'r') + return 0; + if(c == 'h') + return 0; + if(c == 'l') + return c1 != '1' ? 0 : 1; + if(c == 'd') + return 0; + if(c == 'c') + return c1 != '(' ? 0 : 1; + if(c == 'u') + return c1 != 'v' ? 0 : 1; + if(c == 'm') + return 0; + if(c == 'f') + return c1 != 'p' || c2 != 'h' ? 0 : 2; + if(c == 'p') + return 0; + if(c == 'g') + return c1 != '9' && c1 != '6' ? 0 : 1; + if(c == 'w') + return c1 != 'v' || c2 != 'v' ? 0 : 2; + if(c == 'y') + return 0; + if(c == 'b') + return c1 != '1' || c2 != '3' ? 0 : 2; + if(c == 'v') + return 0; + if(c == 'k') + return 0; + if(c == 'x') + return c1 != ')' || c2 != '(' ? 0 : 2; + if(c == 'j') + return 0; + if(c == 'q') + return 0; + if(c == 'z') + return 0; + } + if(c >= '0' && c <= '9') { + if(c == '0') { + if(c1 == 'o' || c1 == 'O') + return 1; + return c1 != '(' || c2 != ')' ? 0 : 2; + } + if(c == '1') + return c1 != 'l' ? 0 : 1; + if(c == '2') + return 0; + if(c == '3') + return 0; + if(c == '4') + return 0; + if(c == '5') + return 0; + if(c == '6') + return 0; + if(c == '7') + return 0; + if(c == '8') + return 0; + if(c == '9') + return 0; + } + if(c == '-') + return 0; + if(c == ',') + return c1 != '.' ? 0 : 1; + if(c == '.') + return c1 != ',' ? 0 : 1; + if(c == '(') + return 0; + if(c == ')') + return 0; + if(c == '!') + return c1 != 'i' ? 0 : 1; + if(c == '\'') + return 0; + if(ffa) + System.out.println("Letter=" + c + " not matched"); + return 0; + } + + public static byte fhc(char c) { + if(c >= 'a' && c <= 'z') + return (byte)((c - 97) + 1); + if(c == '\'') + return 28; + if(c >= '0' && c <= '9') + return (byte)((c - 48) + 29); + else + return 27; + } + + public static void fhd(char arg0[]) { + int i = 0; + int j = 0; + int k = 0; + int l = 0; + while((i = fhe(arg0, j)) != -1) { + boolean flag = false; + for(int i1 = j; i1 >= 0 && i1 < i && !flag; i1++) + if(!fhg(arg0[i1]) && !fhh(arg0[i1])) + flag = true; + + if(flag) + k = 0; + if(k == 0) + l = i; + j = fhf(arg0, i); + int j1 = 0; + for(int k1 = i; k1 < j; k1++) + j1 = (j1 * 10 + arg0[k1]) - 48; + + if(j1 > 255 || j - i > 8) + k = 0; + else + k++; + if(k == 4) { + for(int l1 = l; l1 < j; l1++) + arg0[l1] = '*'; + + k = 0; + } + } + } + + public static int fhe(char arg0[], int arg1) { + for(int i = arg1; i < arg0.length && i >= 0; i++) + if(arg0[i] >= '0' && arg0[i] <= '9') + return i; + + return -1; + } + + public static int fhf(char arg0[], int arg1) { + for(int i = arg1; i < arg0.length && i >= 0; i++) + if(arg0[i] < '0' || arg0[i] > '9') + return i; + + return arg0.length; + } + + public static boolean fhg(char c) { + return !fhi(c) && !fhj(c); + } + + public static boolean fhh(char c) { + if(c < 'a' || c > 'z') + return true; + return c == 'v' || c == 'x' || c == 'j' || c == 'q' || c == 'z'; + } + + public static boolean fhi(char c) { + return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'; + } + + public static boolean fhj(char c) { + return c >= '0' && c <= '9'; + } + + public static boolean fhk(char c) { + return c >= 'a' && c <= 'z'; + } + + public static boolean fhl(char c) { + return c >= 'A' && c <= 'Z'; + } + + public static boolean fhm(char arg0[]) { + boolean flag = true; + for(int i = 0; i < arg0.length; i++) + if(!fhj(arg0[i]) && arg0[i] != 0) + flag = false; + + if(flag) + return true; + int j = fhn(arg0); + int k = 0; + int l = ffd.length - 1; + if(j == ffd[k] || j == ffd[l]) + return true; + do { + int i1 = (k + l) / 2; + if(j == ffd[i1]) + return true; + if(j < ffd[i1]) + l = i1; + else + k = i1; + } while(k != l && k + 1 != l); + return false; + } + + public static int fhn(char arg0[]) { + if(arg0.length > 6) + return 0; + int i = 0; + for(int j = 0; j < arg0.length; j++) { + char c = arg0[arg0.length - j - 1]; + if(c >= 'a' && c <= 'z') + i = i * 38 + ((c - 97) + 1); + else + if(c == '\'') + i = i * 38 + 27; + else + if(c >= '0' && c <= '9') + i = i * 38 + ((c - 48) + 28); + else + if(c != 0) { + if(ffa) + System.out.println("word2hash failed on " + new String(arg0)); + return 0; + } + } + + return i; + } + + static boolean fen; + static boolean ffa; + static boolean ffb = true; + static int ffc = 3; + static int ffd[]; + static char ffe[][]; + static byte fff[][][]; + static char ffg[][]; + static byte ffh[][][]; + static char ffi[][]; + static int ffj[]; + static String ffk[] = { + "cook", "cook's", "cooks", "seeks", "sheet" + }; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/ChatMessage.java b/clients/clientRSC/src/main/java/mudclient/ChatMessage.java new file mode 100755 index 0000000..80b1cf1 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/ChatMessage.java @@ -0,0 +1,105 @@ +package mudclient; + +public class ChatMessage { + + public static String bytesToString(byte arg0[], int arg1, int arg2) { + try { + int i = 0; + int j = -1; + for(int k = 0; k < arg2; k++) { + int l = arg0[arg1++] & 0xff; + int i1 = l >> 4 & 0xf; + if(j == -1) { + if(i1 < 13) + chatMessage[i++] = validChars[i1]; + else + j = i1; + } else { + chatMessage[i++] = validChars[((j << 4) + i1) - 195]; + j = -1; + } + i1 = l & 0xf; + if(j == -1) { + if(i1 < 13) + chatMessage[i++] = validChars[i1]; + else + j = i1; + } else { + chatMessage[i++] = validChars[((j << 4) + i1) - 195]; + j = -1; + } + } + + boolean flag = true; + for(int j1 = 0; j1 < i; j1++) { + char c = chatMessage[j1]; + if(j1 > 4 && c == '@') + chatMessage[j1] = ' '; + if(c == '%') + chatMessage[j1] = ' '; + if(flag && c >= 'a' && c <= 'z') { + chatMessage[j1] += '\uFFE0'; + flag = false; + } + if(c == '.' || c == '!') + flag = true; + } + + return new String(chatMessage, 0, i); + } + catch(Exception _ex) { + return "."; + } + } + + public static int stringToBytes(String arg0) { + if(arg0.length() > 80) + arg0 = arg0.substring(0, 80); + arg0 = arg0.toLowerCase(); + int i = 0; + int j = -1; + for(int k = 0; k < arg0.length(); k++) { + char c = arg0.charAt(k); + int l = 0; + for(int i1 = 0; i1 < validChars.length; i1++) { + if(c != validChars[i1]) + continue; + l = i1; + break; + } + + if(l > 12) + l += 195; + if(j == -1) { + if(l < 13) + j = l; + else + lastChat[i++] = (byte)l; + } else + if(l < 13) { + lastChat[i++] = (byte)((j << 4) + l); + j = -1; + } else { + lastChat[i++] = (byte)((j << 4) + (l >> 4)); + j = l & 0xf; + } + } + + if(j != -1) + lastChat[i++] = (byte)(j << 4); + return i; + } + + public static byte lastChat[] = new byte[100]; + public static char chatMessage[] = new char[100]; + private static char validChars[] = { + ' ', 'e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', + 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', + 'b', 'v', 'k', 'x', 'j', 'q', 'z', '0', '1', '2', + '3', '4', '5', '6', '7', '8', '9', ' ', '!', '?', + '.', ',', ':', ';', '(', ')', '-', '&', '*', '\\', + '\'', '@', '#', '+', '=', '\243', '$', '%', '"', '[', + ']' + }; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/Config.java b/clients/clientRSC/src/main/java/mudclient/Config.java new file mode 100755 index 0000000..ef40f62 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Config.java @@ -0,0 +1,16 @@ +package mudclient; + +public class Config { + + public static String CONF_DIR = "./data/"; + public static String MEDIA_DIR = "./data/"; + + public static int CLIENT_VERSION = 40; + public static boolean MEMBERS_FEATURES = false; + + public static String SERVER_IP = "216.24.201.81"; + public static int SERVER_PORT = 43595; + + public static String CACHE_URL = "http://216.24.201.81/cache/"; + public static String CRASH_URL = "http://216.24.201.81/crash.php"; +} diff --git a/clients/clientRSC/src/main/java/mudclient/Data.java b/clients/clientRSC/src/main/java/mudclient/Data.java new file mode 100755 index 0000000..494ef58 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Data.java @@ -0,0 +1,480 @@ +package mudclient; + +public class Data { + + public static int getModelNameIndex(String arg0) { + if(arg0.equalsIgnoreCase("na")) + return 0; + for(int i = 0; i < modelCount; i++) + if(modelName[i].equalsIgnoreCase(arg0)) + return i; + + modelName[modelCount++] = arg0; + return modelCount - 1; + } + + public static int readByte() { + int i = integerData[integerDataIndex] & 0xff; + integerDataIndex++; + return i; + } + + public static int readShort() { + int i = DataOperations.getShort(integerData, integerDataIndex); + integerDataIndex += 2; + return i; + } + + public static int readInt() { + int i = DataOperations.getInt(integerData, integerDataIndex); + integerDataIndex += 4; + if(i > 0x5f5e0ff) + i = 0x5f5e0ff - i; + return i; + } + + public static String readString() { + String s; + for(s = ""; stringData[stringDataIndex] != 0; s = s + (char)stringData[stringDataIndex++]); + stringDataIndex++; + return s; + } + + public static void load(byte arg0[]) { + stringData = DataOperations.loadData("string.dat", 0, arg0); + stringDataIndex = 0; + integerData = DataOperations.loadData("integer.dat", 0, arg0); + integerDataIndex = 0; + itemCount = readShort(); + itemName = new String[itemCount]; + itemDescription = new String[itemCount]; + itemCommand = new String[itemCount]; + itemInventoryPicture = new int[itemCount]; + itemBasePrice = new int[itemCount]; + itemStackable = new int[itemCount]; + itemUnused = new int[itemCount]; + itemIsEquippable = new int[itemCount]; + itemPictureMask = new int[itemCount]; + itemSpecial = new int[itemCount]; + itemMembers = new int[itemCount]; + for(int i = 0; i < itemCount; i++) + itemName[i] = readString(); + + for(int j = 0; j < itemCount; j++) + itemDescription[j] = readString(); + + for(int k = 0; k < itemCount; k++) + itemCommand[k] = readString(); + + for(int l = 0; l < itemCount; l++) { + itemInventoryPicture[l] = readShort(); + if(itemInventoryPicture[l] + 1 > highestLoadedPicture) + highestLoadedPicture = itemInventoryPicture[l] + 1; + } + + for(int i1 = 0; i1 < itemCount; i1++) + itemBasePrice[i1] = readInt(); + + for(int j1 = 0; j1 < itemCount; j1++) + itemStackable[j1] = readByte(); + + for(int k1 = 0; k1 < itemCount; k1++) + itemUnused[k1] = readByte(); + + for(int l1 = 0; l1 < itemCount; l1++) + itemIsEquippable[l1] = readShort(); + + for(int i2 = 0; i2 < itemCount; i2++) + itemPictureMask[i2] = readInt(); + + for(int j2 = 0; j2 < itemCount; j2++) + itemSpecial[j2] = readByte(); + + for(int k2 = 0; k2 < itemCount; k2++) + itemMembers[k2] = readByte(); + + for(int l2 = 0; l2 < itemCount; l2++) + if(!Config.MEMBERS_FEATURES && itemMembers[l2] == 1) { + itemName[l2] = "Members object"; + itemDescription[l2] = "You need to be a member to use this object"; + itemBasePrice[l2] = 0; + itemCommand[l2] = ""; + itemUnused[0] = 0; + itemIsEquippable[l2] = 0; + itemSpecial[l2] = 1; + } + + npcCount = readShort(); + npcName = new String[npcCount]; + npcDescription = new String[npcCount]; + npcCommand = new String[npcCount]; + npcAttack = new int[npcCount]; + npcStrength = new int[npcCount]; + npcHits = new int[npcCount]; + npcDefense = new int[npcCount]; + npcAttackable = new int[npcCount]; + npcAnimationCount = new int[npcCount][12]; + npcHairColor = new int[npcCount]; + npcTopColor = new int[npcCount]; + npcBottomColor = new int[npcCount]; + npcSkinColor = new int[npcCount]; + npcCameraArray1 = new int[npcCount]; + npcCameraArray2 = new int[npcCount]; + npcWalkModelArray = new int[npcCount]; + npcCombatModel = new int[npcCount]; + npcCombatSprite = new int[npcCount]; + for(int i3 = 0; i3 < npcCount; i3++) + npcName[i3] = readString(); + + for(int j3 = 0; j3 < npcCount; j3++) + npcDescription[j3] = readString(); + + for(int k3 = 0; k3 < npcCount; k3++) + npcAttack[k3] = readByte(); + + for(int l3 = 0; l3 < npcCount; l3++) + npcStrength[l3] = readByte(); + + for(int i4 = 0; i4 < npcCount; i4++) + npcHits[i4] = readByte(); + + for(int j4 = 0; j4 < npcCount; j4++) + npcDefense[j4] = readByte(); + + for(int k4 = 0; k4 < npcCount; k4++) + npcAttackable[k4] = readByte(); + + for(int l4 = 0; l4 < npcCount; l4++) { + for(int i5 = 0; i5 < 12; i5++) { + npcAnimationCount[l4][i5] = readByte(); + if(npcAnimationCount[l4][i5] == 255) + npcAnimationCount[l4][i5] = -1; + } + + } + + for(int j5 = 0; j5 < npcCount; j5++) + npcHairColor[j5] = readInt(); + + for(int k5 = 0; k5 < npcCount; k5++) + npcTopColor[k5] = readInt(); + + for(int l5 = 0; l5 < npcCount; l5++) + npcBottomColor[l5] = readInt(); + + for(int i6 = 0; i6 < npcCount; i6++) + npcSkinColor[i6] = readInt(); + + for(int j6 = 0; j6 < npcCount; j6++) + npcCameraArray1[j6] = readShort(); + + for(int k6 = 0; k6 < npcCount; k6++) + npcCameraArray2[k6] = readShort(); + + for(int l6 = 0; l6 < npcCount; l6++) + npcWalkModelArray[l6] = readByte(); + + for(int i7 = 0; i7 < npcCount; i7++) + npcCombatModel[i7] = readByte(); + + for(int j7 = 0; j7 < npcCount; j7++) + npcCombatSprite[j7] = readByte(); + + for(int k7 = 0; k7 < npcCount; k7++) + npcCommand[k7] = readString(); + + textureCount = readShort(); + textureName = new String[textureCount]; + textureSubName = new String[textureCount]; + for(int l7 = 0; l7 < textureCount; l7++) + textureName[l7] = readString(); + + for(int i8 = 0; i8 < textureCount; i8++) + textureSubName[i8] = readString(); + + animationCount = readShort(); + animationName = new String[animationCount]; + animationCharacterColor = new int[animationCount]; + animationGenderModels = new int[animationCount]; + animationHasA = new int[animationCount]; + animationHasF = new int[animationCount]; + animationNumber = new int[animationCount]; + for(int j8 = 0; j8 < animationCount; j8++) + animationName[j8] = readString(); + + for(int k8 = 0; k8 < animationCount; k8++) + animationCharacterColor[k8] = readInt(); + + for(int l8 = 0; l8 < animationCount; l8++) + animationGenderModels[l8] = readByte(); + + for(int i9 = 0; i9 < animationCount; i9++) + animationHasA[i9] = readByte(); + + for(int j9 = 0; j9 < animationCount; j9++) + animationHasF[j9] = readByte(); + + for(int k9 = 0; k9 < animationCount; k9++) + animationNumber[k9] = readByte(); + + objectCount = readShort(); + objectName = new String[objectCount]; + objectDescription = new String[objectCount]; + objectCommand1 = new String[objectCount]; + objectCommand2 = new String[objectCount]; + objectModelNumber = new int[objectCount]; + objectWidth = new int[objectCount]; + objectHeight = new int[objectCount]; + objectType = new int[objectCount]; + objectGroundItemVar = new int[objectCount]; + for(int l9 = 0; l9 < objectCount; l9++) + objectName[l9] = readString(); + + for(int i10 = 0; i10 < objectCount; i10++) + objectDescription[i10] = readString(); + + for(int j10 = 0; j10 < objectCount; j10++) + objectCommand1[j10] = readString(); + + for(int k10 = 0; k10 < objectCount; k10++) + objectCommand2[k10] = readString(); + + for(int l10 = 0; l10 < objectCount; l10++) + objectModelNumber[l10] = getModelNameIndex(readString()); + + for(int i11 = 0; i11 < objectCount; i11++) + objectWidth[i11] = readByte(); + + for(int j11 = 0; j11 < objectCount; j11++) + objectHeight[j11] = readByte(); + + for(int k11 = 0; k11 < objectCount; k11++) + objectType[k11] = readByte(); + + for(int l11 = 0; l11 < objectCount; l11++) + objectGroundItemVar[l11] = readByte(); + + wallObjectCount = readShort(); + wallObjectName = new String[wallObjectCount]; + wallObjectDescription = new String[wallObjectCount]; + wallObjectCommand1 = new String[wallObjectCount]; + wallObjectCommand2 = new String[wallObjectCount]; + wallObjectModelVar1 = new int[wallObjectCount]; + wallObjectModelVar2 = new int[wallObjectCount]; + wallObjectModelVar3 = new int[wallObjectCount]; + wallObjectType = new int[wallObjectCount]; + wallObjectUnknown = new int[wallObjectCount]; + for(int i12 = 0; i12 < wallObjectCount; i12++) + wallObjectName[i12] = readString(); + + for(int j12 = 0; j12 < wallObjectCount; j12++) + wallObjectDescription[j12] = readString(); + + for(int k12 = 0; k12 < wallObjectCount; k12++) + wallObjectCommand1[k12] = readString(); + + for(int l12 = 0; l12 < wallObjectCount; l12++) + wallObjectCommand2[l12] = readString(); + + for(int i13 = 0; i13 < wallObjectCount; i13++) + wallObjectModelVar1[i13] = readShort(); + + for(int j13 = 0; j13 < wallObjectCount; j13++) + wallObjectModelVar2[j13] = readInt(); + + for(int k13 = 0; k13 < wallObjectCount; k13++) + wallObjectModelVar3[k13] = readInt(); + + for(int l13 = 0; l13 < wallObjectCount; l13++) + wallObjectType[l13] = readByte(); + + for(int i14 = 0; i14 < wallObjectCount; i14++) + wallObjectUnknown[i14] = readByte(); + + akd = readShort(); + alm = new int[akd]; + aln = new int[akd]; + for(int j14 = 0; j14 < akd; j14++) + alm[j14] = readByte(); + + for(int k14 = 0; k14 < akd; k14++) + aln[k14] = readByte(); + + /*System.out.println("akd:"); + for(int i = 0; i < akd; i++) { + System.out.println(i + ": " + alm[i] + " " + aln[i]); + }*/ + + ajg = readShort(); + akg = new int[ajg]; + akh = new int[ajg]; + aki = new int[ajg]; + for(int l14 = 0; l14 < ajg; l14++) + akg[l14] = readInt(); + + for(int i15 = 0; i15 < ajg; i15++) + akh[i15] = readByte(); + + for(int j15 = 0; j15 < ajg; j15++) + aki[j15] = readByte(); + + /*System.out.println("ajg:"); + for(int i = 0; i < ajg; i++) { + System.out.println(i + ": " + akg[i] + " " + akh[i] + " " + aki[i]); + }*/ + + spellProjectileCount = readShort(); + spellCount = readShort(); + spellName = new String[spellCount]; + spellDescription = new String[spellCount]; + spellRequiredLevel = new int[spellCount]; + spellDifferentRuneCount = new int[spellCount]; + spellType = new int[spellCount]; + spelRequiredRuneID = new int[spellCount][]; + spellRequiredRuneCount = new int[spellCount][]; + for(int k15 = 0; k15 < spellCount; k15++) + spellName[k15] = readString(); + + for(int l15 = 0; l15 < spellCount; l15++) + spellDescription[l15] = readString(); + + for(int i16 = 0; i16 < spellCount; i16++) + spellRequiredLevel[i16] = readByte(); + + for(int j16 = 0; j16 < spellCount; j16++) + spellDifferentRuneCount[j16] = readByte(); + + for(int k16 = 0; k16 < spellCount; k16++) + spellType[k16] = readByte(); + + for(int l16 = 0; l16 < spellCount; l16++) { + int i17 = readByte(); + spelRequiredRuneID[l16] = new int[i17]; + for(int k17 = 0; k17 < i17; k17++) + spelRequiredRuneID[l16][k17] = readShort(); + + } + + for(int j17 = 0; j17 < spellCount; j17++) { + int l17 = readByte(); + spellRequiredRuneCount[j17] = new int[l17]; + for(int j18 = 0; j18 < l17; j18++) + spellRequiredRuneCount[j17][j18] = readByte(); + + } + + prayerCount = readShort(); + prayerName = new String[prayerCount]; + prayerDescription = new String[prayerCount]; + prayerRequiredLevel = new int[prayerCount]; + prayerDrainRate = new int[prayerCount]; + for(int i18 = 0; i18 < prayerCount; i18++) + prayerName[i18] = readString(); + + for(int k18 = 0; k18 < prayerCount; k18++) + prayerDescription[k18] = readString(); + + for(int l18 = 0; l18 < prayerCount; l18++) + prayerRequiredLevel[l18] = readByte(); + + for(int i19 = 0; i19 < prayerCount; i19++) + prayerDrainRate[i19] = readByte(); + + stringData = null; + integerData = null; + } + + public static int itemCount; + public static int highestLoadedPicture; + public static String npcName[]; + public static String npcDescription[]; + public static String npcCommand[]; + public static int spellProjectileCount; + public static int objectCount; + public static String wallObjectName[]; + public static String wallObjectDescription[]; + public static String wallObjectCommand1[]; + public static String wallObjectCommand2[]; + public static int spellCount; + public static int npcCameraArray1[]; + public static int npcCameraArray2[]; + public static String itemName[]; + public static String itemDescription[]; + public static String itemCommand[]; + public static int itemInventoryPicture[]; + public static int itemBasePrice[]; + public static int itemStackable[]; + public static int itemUnused[]; + public static int itemIsEquippable[]; + public static int itemPictureMask[]; + public static int itemSpecial[]; + public static int itemMembers[]; + public static String prayerName[]; + public static String prayerDescription[]; + public static String animationName[]; + public static int prayerCount; + public static int npcHairColor[]; + public static int npcTopColor[]; + public static int npcBottomColor[]; + public static int npcSkinColor[]; + public static int ajg; + public static int wallObjectCount; + public static int animationCount; + public static String modelName[] = new String[5000]; + public static String textureName[]; + public static String textureSubName[]; + public static String objectName[]; + public static String objectDescription[]; + public static String objectCommand1[]; + public static String objectCommand2[]; + public static int textureCount; + public static int akd; + public static int prayerRequiredLevel[]; + public static int prayerDrainRate[]; + public static int akg[]; + public static int akh[]; + public static int aki[]; + public static String spellName[]; + public static String spellDescription[]; + public static int npcWalkModelArray[]; + public static int npcCombatModel[]; + public static int npcCombatSprite[]; + public static int npcAnimationCount[][]; + public static int npcAttack[]; + public static int npcStrength[]; + public static int npcHits[]; + public static int npcDefense[]; + public static int npcAttackable[]; + public static int npcCount; + public static int animationCharacterColor[]; + public static int animationGenderModels[]; + public static int animationHasA[]; + public static int animationHasF[]; + public static int animationNumber[]; + public static int alm[]; + public static int aln[]; + public static int modelCount; + public static int spellRequiredLevel[]; + public static int spellDifferentRuneCount[]; + public static int spellType[]; + public static int spelRequiredRuneID[][]; + public static int spellRequiredRuneCount[][]; + public static int objectModelNumber[]; + public static int objectWidth[]; + public static int objectHeight[]; + public static int objectType[]; + public static int objectGroundItemVar[]; + public static String aml[] = new String[5000]; + public static int wallObjectModelVar1[]; + public static int wallObjectModelVar2[]; + public static int wallObjectModelVar3[]; + public static int wallObjectType[]; + public static int wallObjectUnknown[]; + public static String and[] = new String[5000]; + static byte stringData[]; + static byte integerData[]; + static int stringDataIndex; + static int integerDataIndex; + public static int ani; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/DataEncryption.java b/clients/clientRSC/src/main/java/mudclient/DataEncryption.java new file mode 100755 index 0000000..0cb50c3 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/DataEncryption.java @@ -0,0 +1,50 @@ +package mudclient; + +public class DataEncryption { + + public DataEncryption(byte arg0[]) { + data = arg0; + offset = 0; + } + + public void addByte(int arg0) { + data[offset++] = (byte) arg0; + } + + public void addInt(int arg0) { + data[offset++] = (byte) (arg0 >> 24); + data[offset++] = (byte) (arg0 >> 16); + data[offset++] = (byte) (arg0 >> 8); + data[offset++] = (byte) arg0; + } + + @SuppressWarnings("deprecation") + public void addString(String arg0) { + arg0.getBytes(0, arg0.length(), data, offset); + offset += arg0.length(); + data[offset++] = 10; + } + + public int getByte() { + return data[offset++] & 0xff; + } + + public int getShort() { + offset += 2; + return ((data[offset - 2] & 0xff) << 8) + (data[offset - 1] & 0xff); + } + + public int getInt() { + offset += 4; + return ((data[offset - 4] & 0xff) << 24) + ((data[offset - 3] & 0xff) << 16) + ((data[offset - 2] & 0xff) << 8) + (data[offset - 1] & 0xff); + } + + public void getBytes(byte arg0[], int arg1, int arg2) { + for (int i = arg1; i < arg1 + arg2; i++) + arg0[i] = data[offset++]; + + } + + public byte data[]; + public int offset; +} \ No newline at end of file diff --git a/clients/clientRSC/src/main/java/mudclient/DataFileDecrypter.java b/clients/clientRSC/src/main/java/mudclient/DataFileDecrypter.java new file mode 100755 index 0000000..50b8bdd --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/DataFileDecrypter.java @@ -0,0 +1,503 @@ +package mudclient; + +public class DataFileDecrypter { + + public static int unpackData(byte abyte0[], int i, byte abyte1[], int j, int k) { + DataFileVariables o1 = new DataFileVariables(); + o1.aee = abyte1; + o1.aef = k; + o1.aej = abyte0; + o1.aek = 0; + o1.aeg = j; + o1.ael = i; + o1.afe = 0; + o1.afd = 0; + o1.aeh = 0; + o1.aei = 0; + o1.aem = 0; + o1.aen = 0; + o1.afg = 0; + gll(o1); + i -= o1.ael; + return i; + } + + private static void glk(DataFileVariables arg0) { + byte byte4 = arg0.afa; + int i = arg0.afb; + int j = arg0.afl; + int k = arg0.afj; + int ai[] = DataFileVariables.aga; + int l = arg0.afi; + byte abyte0[] = arg0.aej; + int i1 = arg0.aek; + int j1 = arg0.ael; + int k1 = j1; + int l1 = arg0.aha + 1; +label0: + do { + if(i > 0) { + do { + if(j1 == 0) + break label0; + if(i == 1) + break; + abyte0[i1] = byte4; + i--; + i1++; + j1--; + } while(true); + if(j1 == 0) { + i = 1; + break; + } + abyte0[i1] = byte4; + i1++; + j1--; + } + boolean flag = true; + while(flag) { + flag = false; + if(j == l1) { + i = 0; + break label0; + } + byte4 = (byte)k; + l = ai[l]; + byte byte0 = (byte)(l & 0xff); + l >>= 8; + j++; + if(byte0 != k) { + k = byte0; + if(j1 == 0) { + i = 1; + } else { + abyte0[i1] = byte4; + i1++; + j1--; + flag = true; + continue; + } + break label0; + } + if(j != l1) + continue; + if(j1 == 0) { + i = 1; + break label0; + } + abyte0[i1] = byte4; + i1++; + j1--; + flag = true; + } + i = 2; + l = ai[l]; + byte byte1 = (byte)(l & 0xff); + l >>= 8; + if(++j != l1) + if(byte1 != k) { + k = byte1; + } else { + i = 3; + l = ai[l]; + byte byte2 = (byte)(l & 0xff); + l >>= 8; + if(++j != l1) + if(byte2 != k) { + k = byte2; + } else { + l = ai[l]; + byte byte3 = (byte)(l & 0xff); + l >>= 8; + j++; + i = (byte3 & 0xff) + 4; + l = ai[l]; + k = (byte)(l & 0xff); + l >>= 8; + j++; + } + } + } while(true); + int i2 = arg0.aem; + arg0.aem += k1 - j1; + if(arg0.aem < i2) + arg0.aen++; + arg0.afa = byte4; + arg0.afb = i; + arg0.afl = j; + arg0.afj = k; + DataFileVariables.aga = ai; + arg0.afi = l; + arg0.aej = abyte0; + arg0.aek = i1; + arg0.ael = j1; + } + + private static void gll(DataFileVariables arg0) { + int k8 = 0; + int ai[] = null; + int ai1[] = null; + int ai2[] = null; + arg0.aff = 1; + if(DataFileVariables.aga == null) + DataFileVariables.aga = new int[arg0.aff * 0x186a0]; + boolean flag19 = true; + while(flag19) { + byte byte0 = glm(arg0); + if(byte0 == 23) + return; + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = glm(arg0); + arg0.afg++; + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = glm(arg0); + byte0 = gln(arg0); + if(byte0 != 0) + arg0.afc = true; + else + arg0.afc = false; + if(arg0.afc) + System.out.println("PANIC! RANDOMISED BLOCK!"); + arg0.afh = 0; + byte0 = glm(arg0); + arg0.afh = arg0.afh << 8 | byte0 & 0xff; + byte0 = glm(arg0); + arg0.afh = arg0.afh << 8 | byte0 & 0xff; + byte0 = glm(arg0); + arg0.afh = arg0.afh << 8 | byte0 & 0xff; + for(int j = 0; j < 16; j++) { + byte byte1 = gln(arg0); + if(byte1 == 1) + arg0.agd[j] = true; + else + arg0.agd[j] = false; + } + + for(int k = 0; k < 256; k++) + arg0.agc[k] = false; + + for(int l = 0; l < 16; l++) + if(arg0.agd[l]) { + for(int i3 = 0; i3 < 16; i3++) { + byte byte2 = gln(arg0); + if(byte2 == 1) + arg0.agc[l * 16 + i3] = true; + } + + } + + gmb(arg0); + int i4 = arg0.agb + 2; + int j4 = gma(3, arg0); + int k4 = gma(15, arg0); + for(int i1 = 0; i1 < k4; i1++) { + int j3 = 0; + do { + byte byte3 = gln(arg0); + if(byte3 == 0) + break; + j3++; + } while(true); + arg0.agi[i1] = (byte)j3; + } + + byte abyte0[] = new byte[6]; + for(byte byte16 = 0; byte16 < j4; byte16++) + abyte0[byte16] = byte16; + + for(int j1 = 0; j1 < k4; j1++) { + byte byte17 = arg0.agi[j1]; + byte byte15 = abyte0[byte17]; + for(; byte17 > 0; byte17--) + abyte0[byte17] = abyte0[byte17 - 1]; + + abyte0[0] = byte15; + arg0.agh[j1] = byte15; + } + + for(int k3 = 0; k3 < j4; k3++) { + int l6 = gma(5, arg0); + for(int k1 = 0; k1 < i4; k1++) { + do { + byte byte4 = gln(arg0); + if(byte4 == 0) + break; + byte4 = gln(arg0); + if(byte4 == 0) + l6++; + else + l6--; + } while(true); + arg0.agj[k3][k1] = (byte)l6; + } + + } + + for(int l3 = 0; l3 < j4; l3++) { + byte byte8 = 32; + int i = 0; + for(int l1 = 0; l1 < i4; l1++) { + if(arg0.agj[l3][l1] > i) + i = arg0.agj[l3][l1]; + if(arg0.agj[l3][l1] < byte8) + byte8 = arg0.agj[l3][l1]; + } + + gmc(arg0.agk[l3], arg0.agl[l3], arg0.agm[l3], arg0.agj[l3], byte8, i, i4); + arg0.agn[l3] = byte8; + } + + int l4 = arg0.agb + 1; + int i5 = -1; + int j5 = 0; + for(int i2 = 0; i2 <= 255; i2++) + arg0.afk[i2] = 0; + + int j9 = 4095; + for(int l8 = 15; l8 >= 0; l8--) { + for(int i9 = 15; i9 >= 0; i9--) { + arg0.agf[j9] = (byte)(l8 * 16 + i9); + j9--; + } + + arg0.agg[l8] = j9 + 1; + } + + int i6 = 0; + if(j5 == 0) { + i5++; + j5 = 50; + byte byte12 = arg0.agh[i5]; + k8 = arg0.agn[byte12]; + ai = arg0.agk[byte12]; + ai2 = arg0.agm[byte12]; + ai1 = arg0.agl[byte12]; + } + j5--; + int i7 = k8; + int l7; + byte byte9; + for(l7 = gma(i7, arg0); l7 > ai[i7]; l7 = l7 << 1 | byte9) { + i7++; + byte9 = gln(arg0); + } + + for(int k5 = ai2[l7 - ai1[i7]]; k5 != l4;) + if(k5 == 0 || k5 == 1) { + int j6 = -1; + int k6 = 1; + do { + if(k5 == 0) + j6 += k6; + else + if(k5 == 1) + j6 += 2 * k6; + k6 *= 2; + if(j5 == 0) { + i5++; + j5 = 50; + byte byte13 = arg0.agh[i5]; + k8 = arg0.agn[byte13]; + ai = arg0.agk[byte13]; + ai2 = arg0.agm[byte13]; + ai1 = arg0.agl[byte13]; + } + j5--; + int j7 = k8; + int i8; + byte byte10; + for(i8 = gma(j7, arg0); i8 > ai[j7]; i8 = i8 << 1 | byte10) { + j7++; + byte10 = gln(arg0); + } + + k5 = ai2[i8 - ai1[j7]]; + } while(k5 == 0 || k5 == 1); + j6++; + byte byte5 = arg0.age[arg0.agf[arg0.agg[0]] & 0xff]; + arg0.afk[byte5 & 0xff] += j6; + for(; j6 > 0; j6--) { + DataFileVariables.aga[i6] = byte5 & 0xff; + i6++; + } + + } else { + int j11 = k5 - 1; + byte byte6; + if(j11 < 16) { + int j10 = arg0.agg[0]; + byte6 = arg0.agf[j10 + j11]; + for(; j11 > 3; j11 -= 4) { + int k11 = j10 + j11; + arg0.agf[k11] = arg0.agf[k11 - 1]; + arg0.agf[k11 - 1] = arg0.agf[k11 - 2]; + arg0.agf[k11 - 2] = arg0.agf[k11 - 3]; + arg0.agf[k11 - 3] = arg0.agf[k11 - 4]; + } + + for(; j11 > 0; j11--) + arg0.agf[j10 + j11] = arg0.agf[(j10 + j11) - 1]; + + arg0.agf[j10] = byte6; + } else { + int l10 = j11 / 16; + int i11 = j11 % 16; + int k10 = arg0.agg[l10] + i11; + byte6 = arg0.agf[k10]; + for(; k10 > arg0.agg[l10]; k10--) + arg0.agf[k10] = arg0.agf[k10 - 1]; + + arg0.agg[l10]++; + for(; l10 > 0; l10--) { + arg0.agg[l10]--; + arg0.agf[arg0.agg[l10]] = arg0.agf[(arg0.agg[l10 - 1] + 16) - 1]; + } + + arg0.agg[0]--; + arg0.agf[arg0.agg[0]] = byte6; + if(arg0.agg[0] == 0) { + int i10 = 4095; + for(int k9 = 15; k9 >= 0; k9--) { + for(int l9 = 15; l9 >= 0; l9--) { + arg0.agf[i10] = arg0.agf[arg0.agg[k9] + l9]; + i10--; + } + + arg0.agg[k9] = i10 + 1; + } + + } + } + arg0.afk[arg0.age[byte6 & 0xff] & 0xff]++; + DataFileVariables.aga[i6] = arg0.age[byte6 & 0xff] & 0xff; + i6++; + if(j5 == 0) { + i5++; + j5 = 50; + byte byte14 = arg0.agh[i5]; + k8 = arg0.agn[byte14]; + ai = arg0.agk[byte14]; + ai2 = arg0.agm[byte14]; + ai1 = arg0.agl[byte14]; + } + j5--; + int k7 = k8; + int j8; + byte byte11; + for(j8 = gma(k7, arg0); j8 > ai[k7]; j8 = j8 << 1 | byte11) { + k7++; + byte11 = gln(arg0); + } + + k5 = ai2[j8 - ai1[k7]]; + } + + arg0.afb = 0; + arg0.afa = 0; + arg0.afm[0] = 0; + for(int j2 = 1; j2 <= 256; j2++) + arg0.afm[j2] = arg0.afk[j2 - 1]; + + for(int k2 = 1; k2 <= 256; k2++) + arg0.afm[k2] += arg0.afm[k2 - 1]; + + for(int l2 = 0; l2 < i6; l2++) { + byte byte7 = (byte)(DataFileVariables.aga[l2] & 0xff); + DataFileVariables.aga[arg0.afm[byte7 & 0xff]] |= l2 << 8; + arg0.afm[byte7 & 0xff]++; + } + + arg0.afi = DataFileVariables.aga[arg0.afh] >> 8; + arg0.afl = 0; + arg0.afi = DataFileVariables.aga[arg0.afi]; + arg0.afj = (byte)(arg0.afi & 0xff); + arg0.afi >>= 8; + arg0.afl++; + arg0.aha = i6; + glk(arg0); + if(arg0.afl == arg0.aha + 1 && arg0.afb == 0) + flag19 = true; + else + flag19 = false; + } + } + + private static byte glm(DataFileVariables o1) { + return (byte)gma(8, o1); + } + + private static byte gln(DataFileVariables o1) { + return (byte)gma(1, o1); + } + + private static int gma(int arg0, DataFileVariables arg1) { + int i; + do { + if(arg1.afe >= arg0) { + int j = arg1.afd >> arg1.afe - arg0 & (1 << arg0) - 1; + arg1.afe -= arg0; + i = j; + break; + } + arg1.afd = arg1.afd << 8 | arg1.aee[arg1.aef] & 0xff; + arg1.afe += 8; + arg1.aef++; + arg1.aeg--; + arg1.aeh++; + if(arg1.aeh == 0) + arg1.aei++; + } while(true); + return i; + } + + private static void gmb(DataFileVariables arg0) { + arg0.agb = 0; + for(int i = 0; i < 256; i++) + if(arg0.agc[i]) { + arg0.age[arg0.agb] = (byte)i; + arg0.agb++; + } + + } + + private static void gmc(int arg0[], int arg1[], int arg2[], byte arg3[], int arg4, int arg5, int arg6) { + int i = 0; + for(int j = arg4; j <= arg5; j++) { + for(int i2 = 0; i2 < arg6; i2++) + if(arg3[i2] == j) { + arg2[i] = i2; + i++; + } + + } + + for(int k = 0; k < 23; k++) + arg1[k] = 0; + + for(int l = 0; l < arg6; l++) + arg1[arg3[l] + 1]++; + + for(int i1 = 1; i1 < 23; i1++) + arg1[i1] += arg1[i1 - 1]; + + for(int j1 = 0; j1 < 23; j1++) + arg0[j1] = 0; + + int j2 = 0; + for(int k1 = arg4; k1 <= arg5; k1++) { + j2 += arg1[k1 + 1] - arg1[k1]; + arg0[k1] = j2 - 1; + j2 <<= 1; + } + + for(int l1 = arg4 + 1; l1 <= arg5; l1++) + arg1[l1] = (arg0[l1 - 1] + 1 << 1) - arg1[l1]; + + } +} diff --git a/clients/clientRSC/src/main/java/mudclient/DataFileVariables.java b/clients/clientRSC/src/main/java/mudclient/DataFileVariables.java new file mode 100755 index 0000000..c168896 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/DataFileVariables.java @@ -0,0 +1,62 @@ +package mudclient; + +class DataFileVariables { + + DataFileVariables() { + afk = new int[256]; + afm = new int[257]; + afn = new int[257]; + agc = new boolean[256]; + agd = new boolean[16]; + age = new byte[256]; + agf = new byte[4096]; + agg = new int[16]; + agh = new byte[18002]; + agi = new byte[18002]; + agj = new byte[6][258]; + agk = new int[6][258]; + agl = new int[6][258]; + agm = new int[6][258]; + agn = new int[6]; + } + + byte aee[]; + int aef; + int aeg; + int aeh; + int aei; + byte aej[]; + int aek; + int ael; + int aem; + int aen; + byte afa; + int afb; + boolean afc; + int afd; + int afe; + int aff; + int afg; + int afh; + int afi; + int afj; + int afk[]; + int afl; + int afm[]; + int afn[]; + public static int aga[]; + int agb; + boolean agc[]; + boolean agd[]; + byte age[]; + byte agf[]; + int agg[]; + byte agh[]; + byte agi[]; + byte agj[][]; + int agk[][]; + int agl[][]; + int agm[][]; + int agn[]; + int aha; +} diff --git a/clients/clientRSC/src/main/java/mudclient/DataOperations.java b/clients/clientRSC/src/main/java/mudclient/DataOperations.java new file mode 100755 index 0000000..75949e8 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/DataOperations.java @@ -0,0 +1,240 @@ +package mudclient; + +import java.io.BufferedInputStream; +import java.io.DataInputStream; +import java.io.EOFException; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; + +public class DataOperations { + + public static InputStream openInputStream(String arg0) + throws IOException { + Object obj; + if(codeBase == null) { + obj = new BufferedInputStream(new FileInputStream(arg0)); + } else { + URL url = new URL(codeBase, arg0); + obj = url.openStream(); + } + return ((InputStream) (obj)); + } + + public static void readFully(String s, byte abyte0[], int i) + throws IOException { + InputStream inputstream = openInputStream(s); + DataInputStream datainputstream = new DataInputStream(inputstream); + try { + datainputstream.readFully(abyte0, 0, i); + } + catch(EOFException _ex) { } + datainputstream.close(); + } + + public static int getByte(byte byte0) { + return byte0 & 0xff; + } + + public static int getShort(byte abyte0[], int i) { + return ((abyte0[i] & 0xff) << 8) + (abyte0[i + 1] & 0xff); + } + + public static int getInt(byte abyte0[], int i) { + return ((abyte0[i] & 0xff) << 24) + ((abyte0[i + 1] & 0xff) << 16) + ((abyte0[i + 2] & 0xff) << 8) + (abyte0[i + 3] & 0xff); + } + + public static long getLong(byte abyte0[], int i) { + return (((long)getInt(abyte0, i) & 0xffffffffL) << 32) + ((long)getInt(abyte0, i + 4) & 0xffffffffL); + } + + public static int getShort2(byte abyte0[], int i) { + int j = getByte(abyte0[i]) * 256 + getByte(abyte0[i + 1]); + if(j > 32767) + j -= 0x10000; + return j; + } + + public static int getInt2(byte abyte0[], int i) { + if((abyte0[i] & 0xff) < 128) + return abyte0[i]; + else + return ((abyte0[i] & 0xff) - 128 << 24) + ((abyte0[i + 1] & 0xff) << 16) + ((abyte0[i + 2] & 0xff) << 8) + (abyte0[i + 3] & 0xff); + } + + public static int getBits(byte bytes[], int off, int len) { + int bitOff = off >> 3; + int bitMod = 8 - (off & 7); + int k = 0; + for(; len > bitMod; bitMod = 8) { + k += (bytes[bitOff++] & bitMask[bitMod]) << len - bitMod; + len -= bitMod; + } + + if(len == bitMod) + k += bytes[bitOff] & bitMask[bitMod]; + else + k += bytes[bitOff] >> bitMod - len & bitMask[len]; + return k; + } + + public static String formatString(String arg0, int arg1) { + String s = ""; + for(int i = 0; i < arg1; i++) + if(i >= arg0.length()) { + s = s + " "; + } else { + char c = arg0.charAt(i); + if(c >= 'a' && c <= 'z') + s = s + c; + else + if(c >= 'A' && c <= 'Z') + s = s + c; + else + if(c >= '0' && c <= '9') + s = s + c; + else + s = s + '_'; + } + + return s; + } + + public static String ipToString(int i) { + return (i >> 24 & 0xff) + "." + (i >> 16 & 0xff) + "." + (i >> 8 & 0xff) + "." + (i & 0xff); + } + + public static long nameToHash(String arg0) { + String s = ""; + for(int i = 0; i < arg0.length(); i++) { + char c = arg0.charAt(i); + if(c >= 'a' && c <= 'z') + s = s + c; + else + if(c >= 'A' && c <= 'Z') + s = s + (char)((c + 97) - 65); + else + if(c >= '0' && c <= '9') + s = s + c; + else + s = s + ' '; + } + + s = s.trim(); + if(s.length() > 12) + s = s.substring(0, 12); + long l = 0L; + for(int j = 0; j < s.length(); j++) { + char c1 = s.charAt(j); + l *= 37L; + if(c1 >= 'a' && c1 <= 'z') + l += (1 + c1) - 97; + else + if(c1 >= '0' && c1 <= '9') + l += (27 + c1) - 48; + } + + return l; + } + + public static String hashToName(long arg0) { + if(arg0 < 0L) + return "invalid_name"; + String s = ""; + while(arg0 != 0L) { + int i = (int)(arg0 % 37L); + arg0 /= 37L; + if(i == 0) + s = " " + s; + else + if(i < 27) { + if(arg0 % 37L == 0L) + s = (char)((i + 65) - 1) + s; + else + s = (char)((i + 97) - 1) + s; + } else { + s = (char)((i + 48) - 27) + s; + } + } + return s; + } + + public static int getSoundOffset(String arg0, byte arg1[]) { + int i = getShort(arg1, 0); + int j = 0; + arg0 = arg0.toUpperCase(); + for(int k = 0; k < arg0.length(); k++) + j = (j * 61 + arg0.charAt(k)) - 32; + + int l = 2 + i * 10; + for(int i1 = 0; i1 < i; i1++) { + int j1 = (arg1[i1 * 10 + 2] & 0xff) * 0x1000000 + (arg1[i1 * 10 + 3] & 0xff) * 0x10000 + (arg1[i1 * 10 + 4] & 0xff) * 256 + (arg1[i1 * 10 + 5] & 0xff); + int k1 = (arg1[i1 * 10 + 9] & 0xff) * 0x10000 + (arg1[i1 * 10 + 10] & 0xff) * 256 + (arg1[i1 * 10 + 11] & 0xff); + if(j1 == j) + return l; + l += k1; + } + + return 0; + } + + public static int getSoundLength(String arg0, byte arg1[]) { + int i = getShort(arg1, 0); + int j = 0; + arg0 = arg0.toUpperCase(); + for(int k = 0; k < arg0.length(); k++) + j = (j * 61 + arg0.charAt(k)) - 32; + + for(int i1 = 0; i1 < i; i1++) { + int j1 = (arg1[i1 * 10 + 2] & 0xff) * 0x1000000 + (arg1[i1 * 10 + 3] & 0xff) * 0x10000 + (arg1[i1 * 10 + 4] & 0xff) * 256 + (arg1[i1 * 10 + 5] & 0xff); + int k1 = (arg1[i1 * 10 + 6] & 0xff) * 0x10000 + (arg1[i1 * 10 + 7] & 0xff) * 256 + (arg1[i1 * 10 + 8] & 0xff); + if(j1 == j) + return k1; + } + + return 0; + } + + public static byte[] loadData(String s, int i, byte abyte0[]) { + return loadData(s, i, abyte0, null); + } + + public static byte[] loadData(String arg0, int arg1, byte arg2[], byte arg3[]) { + int i = (arg2[0] & 0xff) * 256 + (arg2[1] & 0xff); + int j = 0; + arg0 = arg0.toUpperCase(); + for(int k = 0; k < arg0.length(); k++) + j = (j * 61 + arg0.charAt(k)) - 32; + + int l = 2 + i * 10; + for(int i1 = 0; i1 < i; i1++) { + int j1 = (arg2[i1 * 10 + 2] & 0xff) * 0x1000000 + (arg2[i1 * 10 + 3] & 0xff) * 0x10000 + (arg2[i1 * 10 + 4] & 0xff) * 256 + (arg2[i1 * 10 + 5] & 0xff); + int k1 = (arg2[i1 * 10 + 6] & 0xff) * 0x10000 + (arg2[i1 * 10 + 7] & 0xff) * 256 + (arg2[i1 * 10 + 8] & 0xff); + int l1 = (arg2[i1 * 10 + 9] & 0xff) * 0x10000 + (arg2[i1 * 10 + 10] & 0xff) * 256 + (arg2[i1 * 10 + 11] & 0xff); + if(j1 == j) { + if(arg3 == null) + arg3 = new byte[k1 + arg1]; + if(k1 != l1) { + DataFileDecrypter.unpackData(arg3, k1, arg2, l1, l); + } else { + for(int i2 = 0; i2 < k1; i2++) + arg3[i2] = arg2[l + i2]; + + } + return arg3; + } + l += l1; + } + + return null; + } + + public static URL codeBase = null; + private static int bitMask[] = { + 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, + 1023, 2047, 4095, 8191, 16383, 32767, 65535, 0x1ffff, 0x3ffff, 0x7ffff, + 0xfffff, 0x1fffff, 0x3fffff, 0x7fffff, 0xffffff, 0x1ffffff, 0x3ffffff, 0x7ffffff, 0xfffffff, 0x1fffffff, + 0x3fffffff, 0x7fffffff, -1 + }; +} diff --git a/clients/clientRSC/src/main/java/mudclient/EngineHandle.java b/clients/clientRSC/src/main/java/mudclient/EngineHandle.java new file mode 100755 index 0000000..8b9d0fa --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/EngineHandle.java @@ -0,0 +1,1548 @@ +package mudclient; + +import java.io.IOException; + +public class EngineHandle { + + public void gjd(int k, int l, int i1) { + int j1 = k / 12; + int k1 = l / 12; + int l1 = (k - 1) / 12; + int i2 = (l - 1) / 12; + glh(j1, k1, k, l, i1); + if(j1 != l1) + glh(l1, k1, k, l, i1); + if(k1 != i2) + glh(j1, i2, k, l, i1); + if(j1 != l1 && k1 != i2) + glh(l1, i2, k, l, i1); + } + + public int gje(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileGroundTexture[byte0][arg0 * 48 + arg1] & 0xff; + } + + public int getAveragedElevation(int arg0, int arg1) { + int k = arg0 >> 7; + int l = arg1 >> 7; + int i1 = arg0 & 0x7f; + int j1 = arg1 & 0x7f; + if(k < 0 || l < 0 || k >= 95 || l >= 95) + return 0; + int k1; + int l1; + int i2; + if(i1 <= 128 - j1) { + k1 = gkn(k, l); + l1 = gkn(k + 1, l) - k1; + i2 = gkn(k, l + 1) - k1; + } else { + k1 = gkn(k + 1, l + 1); + l1 = gkn(k, l + 1) - k1; + i2 = gkn(k + 1, l) - k1; + i1 = 128 - i1; + j1 = 128 - j1; + } + int j2 = k1 + (l1 * i1) / 128 + (i2 * j1) / 128; + return j2; + } + + public void gjg(int k, int l, int i1) { + tiles[k][l] |= i1; + } + + public void loadSection(int sectionX, int sectionY, int height, int sector) { + String filename = "m" + height + sectionX / 10 + sectionX % 10 + sectionY / 10 + sectionY % 10; + try { + if(landscapeFree != null) { + byte data[] = DataOperations.loadData(filename + ".hei", 0, landscapeFree); + if(data == null && landscapeMembers != null) + data = DataOperations.loadData(filename + ".hei", 0, landscapeMembers); + if(data != null && data.length > 0) { + int off = 0; + int i2 = 0; + for(int tile = 0; tile < 2304;) { + int k3 = data[off++] & 0xff; + if(k3 < 128) { + tileGroundElevation[sector][tile++] = (byte)k3; + i2 = k3; + } + if(k3 >= 128) { + for(int k4 = 0; k4 < k3 - 128; k4++) + tileGroundElevation[sector][tile++] = (byte)i2; + + } + } + + i2 = 64; + for(int tile = 0; tile < 48; tile++) { + for(int l4 = 0; l4 < 48; l4++) { + i2 = tileGroundElevation[sector][l4 * 48 + tile] + i2 & 0x7f; + tileGroundElevation[sector][l4 * 48 + tile] = (byte)(i2 * 2); + } + + } + + i2 = 0; + for(int tile = 0; tile < 2304;) { + int l5 = data[off++] & 0xff; + if(l5 < 128) { + tileGroundTexture[sector][tile++] = (byte)l5; + i2 = l5; + } + if(l5 >= 128) { + for(int i7 = 0; i7 < l5 - 128; i7++) + tileGroundTexture[sector][tile++] = (byte)i2; + + } + } + + i2 = 35; + for(int i6 = 0; i6 < 48; i6++) { + for(int j7 = 0; j7 < 48; j7++) { + i2 = tileGroundTexture[sector][j7 * 48 + i6] + i2 & 0x7f; + tileGroundTexture[sector][j7 * 48 + i6] = (byte)(i2 * 2); + } + + } + + } else { + for(int tile = 0; tile < 2304; tile++) { + tileGroundElevation[sector][tile] = 0; + tileGroundTexture[sector][tile] = 0; + } + + } + data = DataOperations.loadData(filename + ".dat", 0, mapsFree); + if(data == null && mapsMembers != null) + data = DataOperations.loadData(filename + ".dat", 0, mapsMembers); + if(data == null || data.length == 0) + throw new IOException(); + int off = 0; + for(int tile = 0; tile < 2304; tile++) + tileVerticalWall[sector][tile] = data[off++]; + + for(int tile = 0; tile < 2304; tile++) + tileHorizontalWall[sector][tile] = data[off++]; + + for(int tile = 0; tile < 2304; tile++) + tileDiagonalWall[sector][tile] = data[off++] & 0xff; + + for(int tile = 0; tile < 2304; tile++) { + int j6 = data[off++] & 0xff; + if(j6 > 0) + tileDiagonalWall[sector][tile] = j6 + 12000; + } + for(int tile = 0; tile < 2304;) { + int k7 = data[off++] & 0xff; + if(k7 < 128) { + tileRoofType[sector][tile++] = (byte)k7; + } else { + for(int j8 = 0; j8 < k7 - 128; j8++) + tileRoofType[sector][tile++] = 0; + + } + } + + int l7 = 0; + for(int tile = 0; tile < 2304;) { + int i9 = data[off++] & 0xff; + if(i9 < 128) { + tileGroundOverlay[sector][tile++] = (byte)i9; + l7 = i9; + } else { + for(int l9 = 0; l9 < i9 - 128; l9++) + tileGroundOverlay[sector][tile++] = (byte)l7; + + } + } + + for(int j9 = 0; j9 < 2304;) { + int i10 = data[off++] & 0xff; + if(i10 < 128) { + tileObjectRotation[sector][j9++] = (byte)i10; + } else { + for(int l10 = 0; l10 < i10 - 128; l10++) + tileObjectRotation[sector][j9++] = 0; + + } + } + + data = DataOperations.loadData(filename + ".loc", 0, mapsFree); + if(data != null && data.length > 0) { + int k1 = 0; + for(int j10 = 0; j10 < 2304;) { + int i11 = data[k1++] & 0xff; + if(i11 < 128) + tileDiagonalWall[sector][j10++] = i11 + 48000; + else + j10 += i11 - 128; + } + + return; + } + } else { + byte abyte1[] = new byte[20736]; + DataOperations.readFully("../gamedata/maps/" + filename + ".jm", abyte1, 20736); + int l1 = 0; + int k2 = 0; + for(int j3 = 0; j3 < 2304; j3++) { + l1 = l1 + abyte1[k2++] & 0xff; + tileGroundElevation[sector][j3] = (byte)l1; + } + + l1 = 0; + for(int j4 = 0; j4 < 2304; j4++) { + l1 = l1 + abyte1[k2++] & 0xff; + tileGroundTexture[sector][j4] = (byte)l1; + } + + for(int k5 = 0; k5 < 2304; k5++) + tileVerticalWall[sector][k5] = abyte1[k2++]; + + for(int l6 = 0; l6 < 2304; l6++) + tileHorizontalWall[sector][l6] = abyte1[k2++]; + + for(int i8 = 0; i8 < 2304; i8++) { + tileDiagonalWall[sector][i8] = (abyte1[k2] & 0xff) * 256 + (abyte1[k2 + 1] & 0xff); + k2 += 2; + } + + for(int l8 = 0; l8 < 2304; l8++) + tileRoofType[sector][l8] = abyte1[k2++]; + + for(int k9 = 0; k9 < 2304; k9++) + tileGroundOverlay[sector][k9] = abyte1[k2++]; + + for(int k10 = 0; k10 < 2304; k10++) + tileObjectRotation[sector][k10] = abyte1[k2++]; + + } + return; + } + catch(IOException _ex) { + } + for(int k = 0; k < 2304; k++) { + tileGroundElevation[sector][k] = 0; + tileGroundTexture[sector][k] = 0; + tileVerticalWall[sector][k] = 0; + tileHorizontalWall[sector][k] = 0; + tileDiagonalWall[sector][k] = 0; + tileRoofType[sector][k] = 0; + tileGroundOverlay[sector][k] = 0; + if(height == 0) + tileGroundOverlay[sector][k] = -6; + if(height == 3) + tileGroundOverlay[sector][k] = 8; + tileObjectRotation[sector][k] = 0; + } + + } + + public void gji(int arg0, int arg1, int arg2, boolean arg3) { + int k = (arg0 + 24) / 48; + int l = (arg1 + 24) / 48; + loadSection(k - 1, l - 1, arg2, 0); + loadSection(k, l - 1, arg2, 1); + loadSection(k - 1, l, arg2, 2); + loadSection(k, l, arg2, 3); + gjk(); + if(gia == null) + gia = new GameObject(18688, 18688, true, true, false, false, true); + if(arg3) { + ghi.clearScreen(); + for(int i1 = 0; i1 < 96; i1++) { + for(int k1 = 0; k1 < 96; k1++) + tiles[i1][k1] = 0; + + } + + GameObject l1 = gia; + l1.clk(); + for(int j2 = 0; j2 < 96; j2++) { + for(int i3 = 0; i3 < 96; i3++) { + int i4 = -gkn(j2, i3); + if(gki(j2, i3, arg2) > 0 && Data.akh[gki(j2, i3, arg2) - 1] == 4) + i4 = 0; + if(gki(j2 - 1, i3, arg2) > 0 && Data.akh[gki(j2 - 1, i3, arg2) - 1] == 4) + i4 = 0; + if(gki(j2, i3 - 1, arg2) > 0 && Data.akh[gki(j2, i3 - 1, arg2) - 1] == 4) + i4 = 0; + if(gki(j2 - 1, i3 - 1, arg2) > 0 && Data.akh[gki(j2 - 1, i3 - 1, arg2) - 1] == 4) + i4 = 0; + int j5 = l1.cln(j2 * 128, i4, i3 * 128); + int j7 = (int)(Math.random() * 10D) - 5; + l1.cmh(j5, j7); + } + + } + + for(int j3 = 0; j3 < 95; j3++) { + for(int j4 = 0; j4 < 95; j4++) { + int k5 = gje(j3, j4); + int k7 = ghm[k5]; + int i10 = k7; + int k12 = k7; + int l14 = 0; + if(arg2 == 1 || arg2 == 2) { + k7 = 0xbc614e; + i10 = 0xbc614e; + k12 = 0xbc614e; + } + if(gki(j3, j4, arg2) > 0) { + int l16 = gki(j3, j4, arg2); + int l5 = Data.akh[l16 - 1]; + int i19 = gkd(j3, j4, arg2); + k7 = i10 = Data.akg[l16 - 1]; + if(l5 == 4) { + k7 = 1; + i10 = 1; + if(l16 == 12) { + k7 = 31; + i10 = 31; + } + } + if(l5 == 5) { + if(glf(j3, j4) > 0 && glf(j3, j4) < 24000) + if(gjn(j3 - 1, j4, arg2, k12) != 0xbc614e && gjn(j3, j4 - 1, arg2, k12) != 0xbc614e) { + k7 = gjn(j3 - 1, j4, arg2, k12); + l14 = 0; + } else + if(gjn(j3 + 1, j4, arg2, k12) != 0xbc614e && gjn(j3, j4 + 1, arg2, k12) != 0xbc614e) { + i10 = gjn(j3 + 1, j4, arg2, k12); + l14 = 0; + } else + if(gjn(j3 + 1, j4, arg2, k12) != 0xbc614e && gjn(j3, j4 - 1, arg2, k12) != 0xbc614e) { + i10 = gjn(j3 + 1, j4, arg2, k12); + l14 = 1; + } else + if(gjn(j3 - 1, j4, arg2, k12) != 0xbc614e && gjn(j3, j4 + 1, arg2, k12) != 0xbc614e) { + k7 = gjn(j3 - 1, j4, arg2, k12); + l14 = 1; + } + } else + if(l5 != 2 || glf(j3, j4) > 0 && glf(j3, j4) < 24000) + if(gkd(j3 - 1, j4, arg2) != i19 && gkd(j3, j4 - 1, arg2) != i19) { + k7 = k12; + l14 = 0; + } else + if(gkd(j3 + 1, j4, arg2) != i19 && gkd(j3, j4 + 1, arg2) != i19) { + i10 = k12; + l14 = 0; + } else + if(gkd(j3 + 1, j4, arg2) != i19 && gkd(j3, j4 - 1, arg2) != i19) { + i10 = k12; + l14 = 1; + } else + if(gkd(j3 - 1, j4, arg2) != i19 && gkd(j3, j4 + 1, arg2) != i19) { + k7 = k12; + l14 = 1; + } + if(Data.aki[l16 - 1] != 0) + tiles[j3][j4] |= 0x40; + if(Data.akh[l16 - 1] == 2) + tiles[j3][j4] |= 0x80; + } + gkg(j3, j4, l14, k7, i10); + int i17 = ((gkn(j3 + 1, j4 + 1) - gkn(j3 + 1, j4)) + gkn(j3, j4 + 1)) - gkn(j3, j4); + if(k7 != i10 || i17 != 0) { + int ai[] = new int[3]; + int ai7[] = new int[3]; + if(l14 == 0) { + if(k7 != 0xbc614e) { + ai[0] = j4 + j3 * 96 + 96; + ai[1] = j4 + j3 * 96; + ai[2] = j4 + j3 * 96 + 1; + int l21 = l1.cmb(3, ai, 0xbc614e, k7); + selectedX[l21] = j3; + selectedY[l21] = j4; + l1.entityType[l21] = 0x30d40 + l21; + } + if(i10 != 0xbc614e) { + ai7[0] = j4 + j3 * 96 + 1; + ai7[1] = j4 + j3 * 96 + 96 + 1; + ai7[2] = j4 + j3 * 96 + 96; + int i22 = l1.cmb(3, ai7, 0xbc614e, i10); + selectedX[i22] = j3; + selectedY[i22] = j4; + l1.entityType[i22] = 0x30d40 + i22; + } + } else { + if(k7 != 0xbc614e) { + ai[0] = j4 + j3 * 96 + 1; + ai[1] = j4 + j3 * 96 + 96 + 1; + ai[2] = j4 + j3 * 96; + int j22 = l1.cmb(3, ai, 0xbc614e, k7); + selectedX[j22] = j3; + selectedY[j22] = j4; + l1.entityType[j22] = 0x30d40 + j22; + } + if(i10 != 0xbc614e) { + ai7[0] = j4 + j3 * 96 + 96; + ai7[1] = j4 + j3 * 96; + ai7[2] = j4 + j3 * 96 + 96 + 1; + int k22 = l1.cmb(3, ai7, 0xbc614e, i10); + selectedX[k22] = j3; + selectedY[k22] = j4; + l1.entityType[k22] = 0x30d40 + k22; + } + } + } else + if(k7 != 0xbc614e) { + int ai1[] = new int[4]; + ai1[0] = j4 + j3 * 96 + 96; + ai1[1] = j4 + j3 * 96; + ai1[2] = j4 + j3 * 96 + 1; + ai1[3] = j4 + j3 * 96 + 96 + 1; + int l19 = l1.cmb(4, ai1, 0xbc614e, k7); + selectedX[l19] = j3; + selectedY[l19] = j4; + l1.entityType[l19] = 0x30d40 + l19; + } + } + + } + + for(int k4 = 1; k4 < 95; k4++) { + for(int i6 = 1; i6 < 95; i6++) + if(gki(k4, i6, arg2) > 0 && Data.akh[gki(k4, i6, arg2) - 1] == 4) { + int l7 = Data.akg[gki(k4, i6, arg2) - 1]; + int j10 = l1.cln(k4 * 128, -gkn(k4, i6), i6 * 128); + int l12 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6), i6 * 128); + int i15 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6 + 1), (i6 + 1) * 128); + int j17 = l1.cln(k4 * 128, -gkn(k4, i6 + 1), (i6 + 1) * 128); + int ai2[] = { + j10, l12, i15, j17 + }; + int i20 = l1.cmb(4, ai2, l7, 0xbc614e); + selectedX[i20] = k4; + selectedY[i20] = i6; + l1.entityType[i20] = 0x30d40 + i20; + gkg(k4, i6, 0, l7, l7); + } else + if(gki(k4, i6, arg2) == 0 || Data.akh[gki(k4, i6, arg2) - 1] != 3) { + if(gki(k4, i6 + 1, arg2) > 0 && Data.akh[gki(k4, i6 + 1, arg2) - 1] == 4) { + int i8 = Data.akg[gki(k4, i6 + 1, arg2) - 1]; + int k10 = l1.cln(k4 * 128, -gkn(k4, i6), i6 * 128); + int i13 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6), i6 * 128); + int j15 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6 + 1), (i6 + 1) * 128); + int k17 = l1.cln(k4 * 128, -gkn(k4, i6 + 1), (i6 + 1) * 128); + int ai3[] = { + k10, i13, j15, k17 + }; + int j20 = l1.cmb(4, ai3, i8, 0xbc614e); + selectedX[j20] = k4; + selectedY[j20] = i6; + l1.entityType[j20] = 0x30d40 + j20; + gkg(k4, i6, 0, i8, i8); + } + if(gki(k4, i6 - 1, arg2) > 0 && Data.akh[gki(k4, i6 - 1, arg2) - 1] == 4) { + int j8 = Data.akg[gki(k4, i6 - 1, arg2) - 1]; + int l10 = l1.cln(k4 * 128, -gkn(k4, i6), i6 * 128); + int j13 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6), i6 * 128); + int k15 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6 + 1), (i6 + 1) * 128); + int l17 = l1.cln(k4 * 128, -gkn(k4, i6 + 1), (i6 + 1) * 128); + int ai4[] = { + l10, j13, k15, l17 + }; + int k20 = l1.cmb(4, ai4, j8, 0xbc614e); + selectedX[k20] = k4; + selectedY[k20] = i6; + l1.entityType[k20] = 0x30d40 + k20; + gkg(k4, i6, 0, j8, j8); + } + if(gki(k4 + 1, i6, arg2) > 0 && Data.akh[gki(k4 + 1, i6, arg2) - 1] == 4) { + int k8 = Data.akg[gki(k4 + 1, i6, arg2) - 1]; + int i11 = l1.cln(k4 * 128, -gkn(k4, i6), i6 * 128); + int k13 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6), i6 * 128); + int l15 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6 + 1), (i6 + 1) * 128); + int i18 = l1.cln(k4 * 128, -gkn(k4, i6 + 1), (i6 + 1) * 128); + int ai5[] = { + i11, k13, l15, i18 + }; + int l20 = l1.cmb(4, ai5, k8, 0xbc614e); + selectedX[l20] = k4; + selectedY[l20] = i6; + l1.entityType[l20] = 0x30d40 + l20; + gkg(k4, i6, 0, k8, k8); + } + if(gki(k4 - 1, i6, arg2) > 0 && Data.akh[gki(k4 - 1, i6, arg2) - 1] == 4) { + int l8 = Data.akg[gki(k4 - 1, i6, arg2) - 1]; + int j11 = l1.cln(k4 * 128, -gkn(k4, i6), i6 * 128); + int l13 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6), i6 * 128); + int i16 = l1.cln((k4 + 1) * 128, -gkn(k4 + 1, i6 + 1), (i6 + 1) * 128); + int j18 = l1.cln(k4 * 128, -gkn(k4, i6 + 1), (i6 + 1) * 128); + int ai6[] = { + j11, l13, i16, j18 + }; + int i21 = l1.cmb(4, ai6, l8, 0xbc614e); + selectedX[i21] = k4; + selectedY[i21] = i6; + l1.entityType[i21] = 0x30d40 + i21; + gkg(k4, i6, 0, l8, l8); + } + } + + } + + l1.cme(true, 40, 48, -50, -10, -50); + ghn = gia.cmc(0, 0, 1536, 1536, 8, 64, 233, false); + for(int j6 = 0; j6 < 64; j6++) + ghj.addModel(ghn[j6]); + + for(int i9 = 0; i9 < 96; i9++) { + for(int k11 = 0; k11 < 96; k11++) + gib[i9][k11] = gkn(i9, k11); + + } + + } + gia.clk(); + int j1 = 0x606060; + for(int i2 = 0; i2 < 95; i2++) { + for(int k2 = 0; k2 < 95; k2++) { + int k3 = gle(i2, k2); + if(k3 > 0 && (Data.wallObjectUnknown[k3 - 1] == 0 || ghh)) { + gli(gia, k3 - 1, i2, k2, i2 + 1, k2); + if(arg3 && Data.wallObjectType[k3 - 1] != 0) { + tiles[i2][k2] |= 1; + if(k2 > 0) + gjg(i2, k2 - 1, 4); + } + if(arg3) + ghi.drawLineX(i2 * 3, k2 * 3, 3, j1); + } + k3 = gld(i2, k2); + if(k3 > 0 && (Data.wallObjectUnknown[k3 - 1] == 0 || ghh)) { + gli(gia, k3 - 1, i2, k2, i2, k2 + 1); + if(arg3 && Data.wallObjectType[k3 - 1] != 0) { + tiles[i2][k2] |= 2; + if(i2 > 0) + gjg(i2 - 1, k2, 8); + } + if(arg3) + ghi.drawLineY(i2 * 3, k2 * 3, 3, j1); + } + k3 = glf(i2, k2); + if(k3 > 0 && k3 < 12000 && (Data.wallObjectUnknown[k3 - 1] == 0 || ghh)) { + gli(gia, k3 - 1, i2, k2, i2 + 1, k2 + 1); + if(arg3 && Data.wallObjectType[k3 - 1] != 0) + tiles[i2][k2] |= 0x20; + if(arg3) { + ghi.drawMinimapPixel(i2 * 3, k2 * 3, j1); + ghi.drawMinimapPixel(i2 * 3 + 1, k2 * 3 + 1, j1); + ghi.drawMinimapPixel(i2 * 3 + 2, k2 * 3 + 2, j1); + } + } + if(k3 > 12000 && k3 < 24000 && (Data.wallObjectUnknown[k3 - 12001] == 0 || ghh)) { + gli(gia, k3 - 12001, i2 + 1, k2, i2, k2 + 1); + if(arg3 && Data.wallObjectType[k3 - 12001] != 0) + tiles[i2][k2] |= 0x10; + if(arg3) { + ghi.drawMinimapPixel(i2 * 3 + 2, k2 * 3, j1); + ghi.drawMinimapPixel(i2 * 3 + 1, k2 * 3 + 1, j1); + ghi.drawMinimapPixel(i2 * 3, k2 * 3 + 2, j1); + } + } + } + + } + + if(arg3) + ghi.cbn(gjc - 1, 0, 0, 285, 285); + gia.cme(false, 60, 24, -50, -10, -50); + gim[arg2] = gia.cmc(0, 0, 1536, 1536, 8, 64, 338, true); + for(int l2 = 0; l2 < 64; l2++) + ghj.addModel(gim[arg2][l2]); + + for(int l3 = 0; l3 < 95; l3++) { + for(int l4 = 0; l4 < 95; l4++) { + int k6 = gle(l3, l4); + if(k6 > 0) + gkh(k6 - 1, l3, l4, l3 + 1, l4); + k6 = gld(l3, l4); + if(k6 > 0) + gkh(k6 - 1, l3, l4, l3, l4 + 1); + k6 = glf(l3, l4); + if(k6 > 0 && k6 < 12000) + gkh(k6 - 1, l3, l4, l3 + 1, l4 + 1); + if(k6 > 12000 && k6 < 24000) + gkh(k6 - 12001, l3 + 1, l4, l3, l4 + 1); + } + + } + + for(int i5 = 1; i5 < 95; i5++) { + for(int l6 = 1; l6 < 95; l6++) { + int j9 = glb(i5, l6); + if(j9 > 0) { + int l11 = i5; + int i14 = l6; + int j16 = i5 + 1; + int k18 = l6; + int j19 = i5 + 1; + int j21 = l6 + 1; + int l22 = i5; + int j23 = l6 + 1; + int l23 = 0; + int j24 = gib[l11][i14]; + int l24 = gib[j16][k18]; + int j25 = gib[j19][j21]; + int l25 = gib[l22][j23]; + if(j24 > 0x13880) + j24 -= 0x13880; + if(l24 > 0x13880) + l24 -= 0x13880; + if(j25 > 0x13880) + j25 -= 0x13880; + if(l25 > 0x13880) + l25 -= 0x13880; + if(j24 > l23) + l23 = j24; + if(l24 > l23) + l23 = l24; + if(j25 > l23) + l23 = j25; + if(l25 > l23) + l23 = l25; + if(l23 >= 0x13880) + l23 -= 0x13880; + if(j24 < 0x13880) + gib[l11][i14] = l23; + else + gib[l11][i14] -= 0x13880; + if(l24 < 0x13880) + gib[j16][k18] = l23; + else + gib[j16][k18] -= 0x13880; + if(j25 < 0x13880) + gib[j19][j21] = l23; + else + gib[j19][j21] -= 0x13880; + if(l25 < 0x13880) + gib[l22][j23] = l23; + else + gib[l22][j23] -= 0x13880; + } + } + + } + + gia.clk(); + for(int i7 = 1; i7 < 95; i7++) { + for(int k9 = 1; k9 < 95; k9++) { + int i12 = glb(i7, k9); + if(i12 > 0) { + int j14 = i7; + int k16 = k9; + int l18 = i7 + 1; + int k19 = k9; + int k21 = i7 + 1; + int i23 = k9 + 1; + int k23 = i7; + int i24 = k9 + 1; + int k24 = i7 * 128; + int i25 = k9 * 128; + int k25 = k24 + 128; + int i26 = i25 + 128; + int j26 = k24; + int k26 = i25; + int l26 = k25; + int i27 = i26; + int j27 = gib[j14][k16]; + int k27 = gib[l18][k19]; + int l27 = gib[k21][i23]; + int i28 = gib[k23][i24]; + int j28 = Data.alm[i12 - 1]; + if(gkm(j14, k16) && j27 < 0x13880) { + j27 += j28 + 0x13880; + gib[j14][k16] = j27; + } + if(gkm(l18, k19) && k27 < 0x13880) { + k27 += j28 + 0x13880; + gib[l18][k19] = k27; + } + if(gkm(k21, i23) && l27 < 0x13880) { + l27 += j28 + 0x13880; + gib[k21][i23] = l27; + } + if(gkm(k23, i24) && i28 < 0x13880) { + i28 += j28 + 0x13880; + gib[k23][i24] = i28; + } + if(j27 >= 0x13880) + j27 -= 0x13880; + if(k27 >= 0x13880) + k27 -= 0x13880; + if(l27 >= 0x13880) + l27 -= 0x13880; + if(i28 >= 0x13880) + i28 -= 0x13880; + byte byte0 = 16; + if(!gkl(j14 - 1, k16)) + k24 -= byte0; + if(!gkl(j14 + 1, k16)) + k24 += byte0; + if(!gkl(j14, k16 - 1)) + i25 -= byte0; + if(!gkl(j14, k16 + 1)) + i25 += byte0; + if(!gkl(l18 - 1, k19)) + k25 -= byte0; + if(!gkl(l18 + 1, k19)) + k25 += byte0; + if(!gkl(l18, k19 - 1)) + k26 -= byte0; + if(!gkl(l18, k19 + 1)) + k26 += byte0; + if(!gkl(k21 - 1, i23)) + l26 -= byte0; + if(!gkl(k21 + 1, i23)) + l26 += byte0; + if(!gkl(k21, i23 - 1)) + i26 -= byte0; + if(!gkl(k21, i23 + 1)) + i26 += byte0; + if(!gkl(k23 - 1, i24)) + j26 -= byte0; + if(!gkl(k23 + 1, i24)) + j26 += byte0; + if(!gkl(k23, i24 - 1)) + i27 -= byte0; + if(!gkl(k23, i24 + 1)) + i27 += byte0; + i12 = Data.aln[i12 - 1]; + j27 = -j27; + k27 = -k27; + l27 = -l27; + i28 = -i28; + if(glf(i7, k9) > 12000 && glf(i7, k9) < 24000 && glb(i7 - 1, k9 - 1) == 0) { + int ai8[] = new int[3]; + ai8[0] = gia.cln(l26, l27, i26); + ai8[1] = gia.cln(j26, i28, i27); + ai8[2] = gia.cln(k25, k27, k26); + gia.cmb(3, ai8, i12, 0xbc614e); + } else + if(glf(i7, k9) > 12000 && glf(i7, k9) < 24000 && glb(i7 + 1, k9 + 1) == 0) { + int ai9[] = new int[3]; + ai9[0] = gia.cln(k24, j27, i25); + ai9[1] = gia.cln(k25, k27, k26); + ai9[2] = gia.cln(j26, i28, i27); + gia.cmb(3, ai9, i12, 0xbc614e); + } else + if(glf(i7, k9) > 0 && glf(i7, k9) < 12000 && glb(i7 + 1, k9 - 1) == 0) { + int ai10[] = new int[3]; + ai10[0] = gia.cln(j26, i28, i27); + ai10[1] = gia.cln(k24, j27, i25); + ai10[2] = gia.cln(l26, l27, i26); + gia.cmb(3, ai10, i12, 0xbc614e); + } else + if(glf(i7, k9) > 0 && glf(i7, k9) < 12000 && glb(i7 - 1, k9 + 1) == 0) { + int ai11[] = new int[3]; + ai11[0] = gia.cln(k25, k27, k26); + ai11[1] = gia.cln(l26, l27, i26); + ai11[2] = gia.cln(k24, j27, i25); + gia.cmb(3, ai11, i12, 0xbc614e); + } else + if(j27 == k27 && l27 == i28) { + int ai12[] = new int[4]; + ai12[0] = gia.cln(k24, j27, i25); + ai12[1] = gia.cln(k25, k27, k26); + ai12[2] = gia.cln(l26, l27, i26); + ai12[3] = gia.cln(j26, i28, i27); + gia.cmb(4, ai12, i12, 0xbc614e); + } else + if(j27 == i28 && k27 == l27) { + int ai13[] = new int[4]; + ai13[0] = gia.cln(j26, i28, i27); + ai13[1] = gia.cln(k24, j27, i25); + ai13[2] = gia.cln(k25, k27, k26); + ai13[3] = gia.cln(l26, l27, i26); + gia.cmb(4, ai13, i12, 0xbc614e); + } else { + boolean flag = true; + if(glb(i7 - 1, k9 - 1) > 0) + flag = false; + if(glb(i7 + 1, k9 + 1) > 0) + flag = false; + if(!flag) { + int ai14[] = new int[3]; + ai14[0] = gia.cln(k25, k27, k26); + ai14[1] = gia.cln(l26, l27, i26); + ai14[2] = gia.cln(k24, j27, i25); + gia.cmb(3, ai14, i12, 0xbc614e); + int ai16[] = new int[3]; + ai16[0] = gia.cln(j26, i28, i27); + ai16[1] = gia.cln(k24, j27, i25); + ai16[2] = gia.cln(l26, l27, i26); + gia.cmb(3, ai16, i12, 0xbc614e); + } else { + int ai15[] = new int[3]; + ai15[0] = gia.cln(k24, j27, i25); + ai15[1] = gia.cln(k25, k27, k26); + ai15[2] = gia.cln(j26, i28, i27); + gia.cmb(3, ai15, i12, 0xbc614e); + int ai17[] = new int[3]; + ai17[0] = gia.cln(l26, l27, i26); + ai17[1] = gia.cln(j26, i28, i27); + ai17[2] = gia.cln(k25, k27, k26); + gia.cmb(3, ai17, i12, 0xbc614e); + } + } + } + } + + } + + gia.cme(true, 50, 50, -50, -10, -50); + gih[arg2] = gia.cmc(0, 0, 1536, 1536, 8, 64, 169, true); + for(int l9 = 0; l9 < 64; l9++) + ghj.addModel(gih[arg2][l9]); + + if(gih[arg2][0] == null) + throw new RuntimeException("null roof!"); + for(int j12 = 0; j12 < 96; j12++) { + for(int k14 = 0; k14 < 96; k14++) + if(gib[j12][k14] >= 0x13880) + gib[j12][k14] -= 0x13880; + + } + + } + + public void loadSection(int k, int l, int i1) { + gkk(); + int j1 = (k + 24) / 48; + int k1 = (l + 24) / 48; + gji(k, l, i1, true); + if(i1 == 0) { + gji(k, l, 1, false); + gji(k, l, 2, false); + loadSection(j1 - 1, k1 - 1, i1, 0); + loadSection(j1, k1 - 1, i1, 1); + loadSection(j1 - 1, k1, i1, 2); + loadSection(j1, k1, i1, 3); + gjk(); + } + } + + public void gjk() { + for(int k = 0; k < 96; k++) { + for(int l = 0; l < 96; l++) + if(gki(k, l, 0) == 250) + if(k == 47 && gki(k + 1, l, 0) != 250 && gki(k + 1, l, 0) != 2) + glc(k, l, 9); + else + if(l == 47 && gki(k, l + 1, 0) != 250 && gki(k, l + 1, 0) != 2) + glc(k, l, 9); + else + glc(k, l, 2); + + } + + } + + public int generatePath(int curX, int curY, int bottomDestX, int bottomDestY, int upperDestX, int upperDestY, int pathX[], + int pathY[], boolean checkForObjects) { + for(int k = 0; k < 96; k++) { + for(int l = 0; l < 96; l++) + steps[k][l] = 0; + + } + + int requiredSteps = 0; + int stepCount = 0; + int x = curX; + int y = curY; + steps[curX][curY] = 99; + pathX[requiredSteps] = curX; + pathY[requiredSteps++] = curY; + int i2 = pathX.length; + boolean foundPath = false; + while(stepCount != requiredSteps) { + x = pathX[stepCount]; + y = pathY[stepCount]; + stepCount = (stepCount + 1) % i2; + if(x >= bottomDestX && x <= upperDestX && y >= bottomDestY && y <= upperDestY) { + foundPath = true; + break; + } + if(checkForObjects) { + if(x > 0 && x - 1 >= bottomDestX && x - 1 <= upperDestX && y >= bottomDestY && y <= upperDestY && (tiles[x - 1][y] & 8) == 0) { + foundPath = true; + break; + } + if(x < 95 && x + 1 >= bottomDestX && x + 1 <= upperDestX && y >= bottomDestY && y <= upperDestY && (tiles[x + 1][y] & 2) == 0) { + foundPath = true; + break; + } + if(y > 0 && x >= bottomDestX && x <= upperDestX && y - 1 >= bottomDestY && y - 1 <= upperDestY && (tiles[x][y - 1] & 4) == 0) { + foundPath = true; + break; + } + if(y < 95 && x >= bottomDestX && x <= upperDestX && y + 1 >= bottomDestY && y + 1 <= upperDestY && (tiles[x][y + 1] & 1) == 0) { + foundPath = true; + break; + } + } + if(x > 0 && steps[x - 1][y] == 0 && (tiles[x - 1][y] & 0x78) == 0) { + pathX[requiredSteps] = x - 1; + pathY[requiredSteps] = y; + requiredSteps = (requiredSteps + 1) % i2; + steps[x - 1][y] = 2; + } + if(x < 95 && steps[x + 1][y] == 0 && (tiles[x + 1][y] & 0x72) == 0) { + pathX[requiredSteps] = x + 1; + pathY[requiredSteps] = y; + requiredSteps = (requiredSteps + 1) % i2; + steps[x + 1][y] = 8; + } + if(y > 0 && steps[x][y - 1] == 0 && (tiles[x][y - 1] & 0x74) == 0) { + pathX[requiredSteps] = x; + pathY[requiredSteps] = y - 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x][y - 1] = 1; + } + if(y < 95 && steps[x][y + 1] == 0 && (tiles[x][y + 1] & 0x71) == 0) { + pathX[requiredSteps] = x; + pathY[requiredSteps] = y + 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x][y + 1] = 4; + } + if(x > 0 && y > 0 && (tiles[x][y - 1] & 0x74) == 0 && (tiles[x - 1][y] & 0x78) == 0 && (tiles[x - 1][y - 1] & 0x7c) == 0 && steps[x - 1][y - 1] == 0) { + pathX[requiredSteps] = x - 1; + pathY[requiredSteps] = y - 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x - 1][y - 1] = 3; + } + if(x < 95 && y > 0 && (tiles[x][y - 1] & 0x74) == 0 && (tiles[x + 1][y] & 0x72) == 0 && (tiles[x + 1][y - 1] & 0x76) == 0 && steps[x + 1][y - 1] == 0) { + pathX[requiredSteps] = x + 1; + pathY[requiredSteps] = y - 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x + 1][y - 1] = 9; + } + if(x > 0 && y < 95 && (tiles[x][y + 1] & 0x71) == 0 && (tiles[x - 1][y] & 0x78) == 0 && (tiles[x - 1][y + 1] & 0x79) == 0 && steps[x - 1][y + 1] == 0) { + pathX[requiredSteps] = x - 1; + pathY[requiredSteps] = y + 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x - 1][y + 1] = 6; + } + if(x < 95 && y < 95 && (tiles[x][y + 1] & 0x71) == 0 && (tiles[x + 1][y] & 0x72) == 0 && (tiles[x + 1][y + 1] & 0x73) == 0 && steps[x + 1][y + 1] == 0) { + pathX[requiredSteps] = x + 1; + pathY[requiredSteps] = y + 1; + requiredSteps = (requiredSteps + 1) % i2; + steps[x + 1][y + 1] = 12; + } + } + if(!foundPath) + return -1; + stepCount = 0; + pathX[stepCount] = x; + pathY[stepCount++] = y; + int k2; + for(int j2 = k2 = steps[x][y]; x != curX || y != curY; j2 = steps[x][y]) { + if(j2 != k2) { + k2 = j2; + pathX[stepCount] = x; + pathY[stepCount++] = y; + } + if((j2 & 2) != 0) + x++; + else + if((j2 & 8) != 0) + x--; + if((j2 & 1) != 0) + y++; + else + if((j2 & 4) != 0) + y--; + } + + return stepCount; + } + + public void gjm(int k, int l, int i1) { + tiles[k][l] &= 65535 - i1; + } + + public int gjn(int k, int l, int i1, int j1) { + int k1 = gki(k, l, i1); + if(k1 == 0) + return j1; + else + return Data.akg[k1 - 1]; + } + + public void gka(int arg0, int arg1, int arg2, int arg3) { + if(arg0 < 1 || arg1 < 1 || arg0 + arg2 >= 96 || arg1 + arg3 >= 96) + return; + for(int k = arg0; k <= arg0 + arg2; k++) { + for(int l = arg1; l <= arg1 + arg3; l++) + if((gkj(k, l) & 0x63) != 0 || (gkj(k - 1, l) & 0x59) != 0 || (gkj(k, l - 1) & 0x56) != 0 || (gkj(k - 1, l - 1) & 0x6c) != 0) + gjd(k, l, 35); + else + gjd(k, l, 0); + + } + + } + + public void removeWallObject(int arg0, int arg1, int arg2, int arg3) { + if(arg0 < 0 || arg1 < 0 || arg0 >= 95 || arg1 >= 95) + return; + if(Data.wallObjectType[arg3] == 1) { + if(arg2 == 0) { + tiles[arg0][arg1] &= 0xfffe; + if(arg1 > 0) + gjm(arg0, arg1 - 1, 4); + } else + if(arg2 == 1) { + tiles[arg0][arg1] &= 0xfffd; + if(arg0 > 0) + gjm(arg0 - 1, arg1, 8); + } else + if(arg2 == 2) + tiles[arg0][arg1] &= 0xffef; + else + if(arg2 == 3) + tiles[arg0][arg1] &= 0xffdf; + gka(arg0, arg1, 1, 1); + } + } + + public void gkc(int arg0, int arg1, int arg2, int arg3) { + if(arg0 < 0 || arg1 < 0 || arg0 >= 95 || arg1 >= 95) + return; + if(Data.wallObjectType[arg3] == 1) { + if(arg2 == 0) { + tiles[arg0][arg1] |= 1; + if(arg1 > 0) + gjg(arg0, arg1 - 1, 4); + } else + if(arg2 == 1) { + tiles[arg0][arg1] |= 2; + if(arg0 > 0) + gjg(arg0 - 1, arg1, 8); + } else + if(arg2 == 2) + tiles[arg0][arg1] |= 0x10; + else + if(arg2 == 3) + tiles[arg0][arg1] |= 0x20; + gka(arg0, arg1, 1, 1); + } + } + + public int gkd(int k, int l, int i1) { + int j1 = gki(k, l, i1); + if(j1 == 0) + return -1; + int k1 = Data.akh[j1 - 1]; + return k1 != 2 ? 0 : 1; + } + + public int getTileRotation(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileObjectRotation[byte0][arg0 * 48 + arg1]; + } + + public void registerObjectDir(int x, int y, int dir) { + if(x < 0 || x >= 96 || y < 0 || y >= 96) + return; + objectDirs[x][y] = dir; + } + + public void removeObject(int arg0, int arg1, int arg2, int k) { + if(arg0 < 0 || arg1 < 0 || arg0 >= 95 || arg1 >= 95) + return; + if(Data.objectType[arg2] == 1 || Data.objectType[arg2] == 2) { + //int k = getTileRotation(arg0, arg1); + int l; + int i1; + if(k == 0 || k == 4) { + l = Data.objectWidth[arg2]; + i1 = Data.objectHeight[arg2]; + } else { + i1 = Data.objectWidth[arg2]; + l = Data.objectHeight[arg2]; + } + for(int j1 = arg0; j1 < arg0 + l; j1++) { + for(int k1 = arg1; k1 < arg1 + i1; k1++) + if(Data.objectType[arg2] == 1) + tiles[j1][k1] &= 0xffbf; + else + if(k == 0) { + tiles[j1][k1] &= 0xfffd; + if(j1 > 0) + gjm(j1 - 1, k1, 8); + } else + if(k == 2) { + tiles[j1][k1] &= 0xfffb; + if(k1 < 95) + gjm(j1, k1 + 1, 1); + } else + if(k == 4) { + tiles[j1][k1] &= 0xfff7; + if(j1 < 95) + gjm(j1 + 1, k1, 2); + } else + if(k == 6) { + tiles[j1][k1] &= 0xfffe; + if(k1 > 0) + gjm(j1, k1 - 1, 4); + } + + } + + gka(arg0, arg1, l, i1); + } + } + + public void gkg(int k, int l, int i1, int j1, int k1) { + int l1 = k * 3; + int i2 = l * 3; + int j2 = ghj.bjj(j1); + int k2 = ghj.bjj(k1); + j2 = j2 >> 1 & 0x7f7f7f; + k2 = k2 >> 1 & 0x7f7f7f; + if(i1 == 0) { + ghi.drawLineX(l1, i2, 3, j2); + ghi.drawLineX(l1, i2 + 1, 2, j2); + ghi.drawLineX(l1, i2 + 2, 1, j2); + ghi.drawLineX(l1 + 2, i2 + 1, 1, k2); + ghi.drawLineX(l1 + 1, i2 + 2, 2, k2); + return; + } + if(i1 == 1) { + ghi.drawLineX(l1, i2, 3, k2); + ghi.drawLineX(l1 + 1, i2 + 1, 2, k2); + ghi.drawLineX(l1 + 2, i2 + 2, 1, k2); + ghi.drawLineX(l1, i2 + 1, 1, j2); + ghi.drawLineX(l1, i2 + 2, 2, j2); + } + } + + public void gkh(int k, int l, int i1, int j1, int k1) { + int l1 = Data.wallObjectModelVar1[k]; + if(gib[l][i1] < 0x13880) + gib[l][i1] += 0x13880 + l1; + if(gib[j1][k1] < 0x13880) + gib[j1][k1] += 0x13880 + l1; + } + + public int gki(int arg0, int arg1, int arg2) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileGroundOverlay[byte0][arg0 * 48 + arg1] & 0xff; + } + + public int gkj(int k, int l) { + if(k < 0 || l < 0 || k >= 96 || l >= 96) + return 0; + else + return tiles[k][l]; + } + + public void gkk() { + if(gjb) + ghj.cleanUp(); + for(int k = 0; k < 64; k++) { + ghn[k] = null; + for(int l = 0; l < 4; l++) + gim[l][k] = null; + + for(int i1 = 0; i1 < 4; i1++) + gih[i1][k] = null; + + } + + System.gc(); + } + + public boolean gkl(int k, int l) { + return glb(k, l) > 0 || glb(k - 1, l) > 0 || glb(k - 1, l - 1) > 0 || glb(k, l - 1) > 0; + } + + public EngineHandle(Camera arg0, GameImage arg1) { + tileHorizontalWall = new byte[4][2304]; + tileDiagonalWall = new int[4][2304]; + tileGroundOverlay = new byte[4][2304]; + tileObjectRotation = new byte[4][2304]; + ghh = false; + selectedY = new int[18432]; + tileGroundTexture = new byte[4][2304]; + ghm = new int[256]; + ghn = new GameObject[64]; + gib = new int[96][96]; + tileVerticalWall = new byte[4][2304]; + steps = new int[96][96]; + tileGroundElevation = new byte[4][2304]; + gih = new GameObject[4][64]; + playerIsAlive = false; + tiles = new int[96][96]; + gim = new GameObject[4][64]; + selectedX = new int[18432]; + tileRoofType = new byte[4][2304]; + gjb = true; + gjc = 750; + ghj = arg0; + ghi = arg1; + for(int k = 0; k < 64; k++) + ghm[k] = Camera.bjm(255 - k * 4, 255 - (int)((double)k * 1.75D), 255 - k * 4); + + for(int l = 0; l < 64; l++) + ghm[l + 64] = Camera.bjm(l * 3, 144, 0); + + for(int i1 = 0; i1 < 64; i1++) + ghm[i1 + 128] = Camera.bjm(192 - (int)((double)i1 * 1.5D), 144 - (int)((double)i1 * 1.5D), 0); + + for(int j1 = 0; j1 < 64; j1++) + ghm[j1 + 192] = Camera.bjm(96 - (int)((double)j1 * 1.5D), 48 + (int)((double)j1 * 1.5D), 0); + + objectDirs = new int[96][96]; + + } + + public boolean gkm(int k, int l) { + return glb(k, l) > 0 && glb(k - 1, l) > 0 && glb(k - 1, l - 1) > 0 && glb(k, l - 1) > 0; + } + + public int gkn(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return (tileGroundElevation[byte0][arg0 * 48 + arg1] & 0xff) * 3; + } + + public void gla(int arg0, int arg1, int arg2, int k) { + if(arg0 < 0 || arg1 < 0 || arg0 >= 95 || arg1 >= 95) + return; + if(Data.objectType[arg2] == 1 || Data.objectType[arg2] == 2) { + //int k = getTileRotation(arg0, arg1); + int l; + int i1; + if(k == 0 || k == 4) { + l = Data.objectWidth[arg2]; + i1 = Data.objectHeight[arg2]; + } else { + i1 = Data.objectWidth[arg2]; + l = Data.objectHeight[arg2]; + } + for(int j1 = arg0; j1 < arg0 + l; j1++) { + for(int k1 = arg1; k1 < arg1 + i1; k1++) + if(Data.objectType[arg2] == 1) + tiles[j1][k1] |= 0x40; + else + if(k == 0) { + tiles[j1][k1] |= 2; + if(j1 > 0) + gjg(j1 - 1, k1, 8); + } else + if(k == 2) { + tiles[j1][k1] |= 4; + if(k1 < 95) + gjg(j1, k1 + 1, 1); + } else + if(k == 4) { + tiles[j1][k1] |= 8; + if(j1 < 95) + gjg(j1 + 1, k1, 2); + } else + if(k == 6) { + tiles[j1][k1] |= 1; + if(k1 > 0) + gjg(j1, k1 - 1, 4); + } + + } + + gka(arg0, arg1, l, i1); + } + } + + public int glb(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileRoofType[byte0][arg0 * 48 + arg1]; + } + + public void glc(int arg0, int arg1, int arg2) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + tileGroundOverlay[byte0][arg0 * 48 + arg1] = (byte)arg2; + } + + public int gld(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileVerticalWall[byte0][arg0 * 48 + arg1] & 0xff; + } + + public int gle(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileHorizontalWall[byte0][arg0 * 48 + arg1] & 0xff; + } + + public int glf(int arg0, int arg1) { + if(arg0 < 0 || arg0 >= 96 || arg1 < 0 || arg1 >= 96) + return 0; + byte byte0 = 0; + if(arg0 >= 48 && arg1 < 48) { + byte0 = 1; + arg0 -= 48; + } else + if(arg0 < 48 && arg1 >= 48) { + byte0 = 2; + arg1 -= 48; + } else + if(arg0 >= 48 && arg1 >= 48) { + byte0 = 3; + arg0 -= 48; + arg1 -= 48; + } + return tileDiagonalWall[byte0][arg0 * 48 + arg1]; + } + + public void glg(GameObject arg0[]) { + for(int k = 0; k < 94; k++) { + for(int l = 0; l < 94; l++) + if(glf(k, l) > 48000 && glf(k, l) < 60000) { + int i1 = glf(k, l) - 48001; + int j1 = objectDirs[k][l];//getTileRotation(k, l); + int k1; + int l1; + if(j1 == 0 || j1 == 4) { + k1 = Data.objectWidth[i1]; + l1 = Data.objectHeight[i1]; + } else { + l1 = Data.objectWidth[i1]; + k1 = Data.objectHeight[i1]; + } + gla(k, l, i1, j1); + GameObject i2 = arg0[Data.objectModelNumber[i1]].cnk(false, true, false, false); + int j2 = ((k + k + k1) * 128) / 2; + int l2 = ((l + l + l1) * 128) / 2; + i2.cmk(j2, -getAveragedElevation(j2, l2), l2); + //i2.cmj(0, getTileRotation(k, l) * 32, 0); + i2.cmj(0, j1 * 32, 0); + ghj.addModel(i2); + i2.cmf(48, 48, -50, -10, -50); + if(k1 > 1 || l1 > 1) { + for(int j3 = k; j3 < k + k1; j3++) { + for(int k3 = l; k3 < l + l1; k3++) + if((j3 > k || k3 > l) && glf(j3, k3) - 48001 == i1) { + int k2 = j3; + int i3 = k3; + byte byte0 = 0; + if(k2 >= 48 && i3 < 48) { + byte0 = 1; + k2 -= 48; + } else + if(k2 < 48 && i3 >= 48) { + byte0 = 2; + i3 -= 48; + } else + if(k2 >= 48 && i3 >= 48) { + byte0 = 3; + k2 -= 48; + i3 -= 48; + } + tileDiagonalWall[byte0][k2 * 48 + i3] = 0; + } + + } + + } + } + + } + + } + + public void glh(int arg0, int arg1, int arg2, int arg3, int arg4) { + GameObject k = ghn[arg0 + arg1 * 8]; + for(int l = 0; l < k.cfh; l++) + if(k.cil[l] == arg2 * 128 && k.cin[l] == arg3 * 128) { + k.cmh(l, arg4); + return; + } + + } + + public void gli(GameObject k, int l, int i1, int j1, int k1, int l1) { + gjd(i1, j1, 40); + gjd(k1, l1, 40); + int i2 = Data.wallObjectModelVar1[l]; + int j2 = Data.wallObjectModelVar2[l]; + int k2 = Data.wallObjectModelVar3[l]; + int l2 = i1 * 128; + int i3 = j1 * 128; + int j3 = k1 * 128; + int k3 = l1 * 128; + int l3 = k.cln(l2, -gib[i1][j1], i3); + int i4 = k.cln(l2, -gib[i1][j1] - i2, i3); + int j4 = k.cln(j3, -gib[k1][l1] - i2, k3); + int k4 = k.cln(j3, -gib[k1][l1], k3); + int ai[] = { + l3, i4, j4, k4 + }; + int l4 = k.cmb(4, ai, j2, k2); + if(Data.wallObjectUnknown[l] == 5) { + k.entityType[l4] = 30000 + l; + return; + } else { + k.entityType[l4] = 0; + return; + } + } + + final int ggn = 96; + final int gha = 96; + byte tileHorizontalWall[][]; + final int ghc = 0xbc614e; + final int ghd = 128; + int tileDiagonalWall[][]; + byte tileGroundOverlay[][]; + byte tileObjectRotation[][]; + boolean ghh; + GameImage ghi; + Camera ghj; + int selectedY[]; + byte tileGroundTexture[][]; + int ghm[]; + GameObject ghn[]; + GameObject gia; + int gib[][]; + byte tileVerticalWall[][]; + int steps[][]; + byte landscapeFree[]; + byte mapsFree[]; + byte tileGroundElevation[][]; + GameObject gih[][]; + boolean playerIsAlive; + int tiles[][]; + byte landscapeMembers[]; + byte mapsMembers[]; + GameObject gim[][]; + int selectedX[]; + byte tileRoofType[][]; + boolean gjb; + int gjc; + + int objectDirs[][]; +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameApplet.java b/clients/clientRSC/src/main/java/mudclient/GameApplet.java new file mode 100755 index 0000000..f313835 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameApplet.java @@ -0,0 +1,548 @@ +package mudclient; + +import java.applet.Applet; +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.awt.image.BufferedImage; +import java.io.DataInputStream; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URL; + +import javax.swing.event.MouseInputListener; + +@SuppressWarnings("serial") +public class GameApplet extends Applet + implements Runnable, KeyListener, MouseInputListener, MouseMotionListener { + + protected void loadGame() { + } + + protected synchronized void checkInputs() { + } + + protected void close() { + } + + protected synchronized void drawWindow() { + } + + protected final void createWindow(int width, int height, String title, boolean resizable) { + System.out.println("Started application"); + appletWidth = width; + appletHeight = height; + gameFrame = new GameFrame(this, width, height, title, resizable, false); + gameLoadingScreen = 1; + gameWindowThread = new Thread(this); + gameWindowThread.start(); + gameWindowThread.setPriority(1); + } + + protected final void setRefreshRate(int i) { + refreshRate = 1000 / i; + } + + protected final void resetTimings() { + for(int i = 0; i < 10; i++) + timeArray[i] = 0L; + + } + + public void keyTyped(KeyEvent e) { + //ignore + } + + public void mouseClicked(MouseEvent e) { + //ignore + } + + public void keyPressed(KeyEvent evt) { + this.keyDown(evt.getKeyCode(), evt.getKeyChar()); + } + + public void keyReleased(KeyEvent evt) { + this.keyUp(evt.getKeyCode(), evt.getKeyChar()); + } + + public void mouseEntered(MouseEvent evt) { + this.mouseMove(evt.getX(), evt.getY()); + } + + public void mouseExited(MouseEvent evt) { + this.mouseMove(evt.getX(), evt.getY()); + } + + public void mousePressed(MouseEvent evt) { + this.mouseDown(evt.getX(), evt.getY(), evt.isMetaDown()); + } + + public void mouseReleased(MouseEvent evt) { + this.mouseUp(evt.getX(), evt.getY()); + } + + public void mouseDragged(MouseEvent evt) { + this.mouseDrag(evt.getX(), evt.getY(), evt.isMetaDown()); + } + + public void mouseMoved(MouseEvent evt) { + this.mouseMove(evt.getX(), evt.getY()); + } + + public void keyDown(int key, char c) { + handleKeyDown(key, c); + if(key == KeyEvent.VK_LEFT) + keyLeftDown = true; + if(key == KeyEvent.VK_RIGHT) + keyRightDown = true; + if(key == KeyEvent.VK_UP) + keyUpDown = true; + if(key == KeyEvent.VK_DOWN) + keyDownDown = true; + if(key == KeyEvent.VK_SPACE) + keySpaceDown = true; + if(key == KeyEvent.VK_N || key == KeyEvent.VK_M) + keyNMDown = true; + if(key == KeyEvent.VK_F1) + keyF1Toggle = !keyF1Toggle; + boolean flag = false; + for(int i = 0; i < allowedChars.length(); i++) { + if(c != allowedChars.charAt(i)) + continue; + flag = true; + break; + } + if(flag && inputText.length() < 20) + inputText += c; + if(flag && pmText.length() < 80) + pmText += c; + if(key == KeyEvent.VK_BACK_SPACE && inputText.length() > 0) + inputText = inputText.substring(0, inputText.length() - 1); + if(key == KeyEvent.VK_BACK_SPACE && pmText.length() > 0) + pmText = pmText.substring(0, pmText.length() - 1); + if(key == KeyEvent.VK_ENTER) { + enteredInputText = inputText; + enteredPMText = pmText; + } + } + + protected void handleKeyDown(int key, char c) { + } + + public void keyUp(int key, char c) { + if(key == KeyEvent.VK_LEFT) + keyLeftDown = false; + if(key == KeyEvent.VK_RIGHT) + keyRightDown = false; + if(key == KeyEvent.VK_UP) + keyUpDown = false; + if(key == KeyEvent.VK_DOWN) + keyDownDown = false; + if(key == KeyEvent.VK_SPACE) + keySpaceDown = false; + if(key == KeyEvent.VK_N || key == KeyEvent.VK_M) + keyNMDown = false; + } + + public final synchronized boolean mouseMove(int x, int y) { + mouseX = x; + mouseY = y - mouseYOffset; + mouseButton = 0; + return true; + } + + public final synchronized boolean mouseUp(int x, int y) { + mouseX = x; + mouseY = y - mouseYOffset; + mouseButton = 0; + return true; + } + + public final synchronized boolean mouseDown(int x, int y, boolean metaDown) { + mouseX = x; + mouseY = y - mouseYOffset; + mouseButton = metaDown ? 2 : 1; + lastMouseButton = mouseButton; + handleMouseDown(mouseButton, x, y); + return true; + } + + protected void handleMouseDown(int i, int k, int l) { + } + + public final synchronized boolean mouseDrag(int x, int y, boolean metaDown) { + mouseX = x; + mouseY = y - mouseYOffset; + mouseButton = metaDown ? 2 : 1; + return true; + } + + public final void init() { + appletWidth = 512; + appletHeight = 344; + gameLoadingScreen = 1; + DataOperations.codeBase = getCodeBase(); + startThread(this); + } + + public final void start() { + if(runStatus >= 0) + runStatus = 0; + } + + public final void stop() { + if(runStatus >= 0) + runStatus = 4000 / refreshRate; + } + + @SuppressWarnings("deprecation") + public final void destroy() { + runStatus = -1; + try { + Thread.sleep(2000L); + } + catch(Exception _ex) { } + if(runStatus == -1) { + System.out.println("2 seconds expired, forcing kill"); + closeProgram(); + if(gameWindowThread != null) { + gameWindowThread.stop(); + gameWindowThread = null; + } + } + } + + private final void closeProgram() { + runStatus = -2; + System.out.println("Closing program"); + close(); + try { + Thread.sleep(1000L); + } + catch(Exception _ex) { } + if(gameFrame != null) { + gameFrame.dispose(); + System.exit(0); + } + } + + Component getGameComponent() { + if(gameFrame != null) + return gameFrame; + else + return this; + } + + public final void run() { + getGameComponent().addKeyListener(this); + getGameComponent().addMouseListener(this); + getGameComponent().addMouseMotionListener(this); + if(gameLoadingScreen == 1) { + gameLoadingScreen = 2; + graphics = getGraphics(); + loadLoadingScreen(); + drawLoadingScreen(0, "Loading..."); + loadGame(); + gameLoadingScreen = 0; + } + int i = 0; + int k = 256; + int sleepTime = 1; + int j1 = 0; + for(int k1 = 0; k1 < 10; k1++) + timeArray[k1] = System.currentTimeMillis(); + + while(runStatus >= 0) { + if(runStatus > 0) { + runStatus--; + if(runStatus == 0) { + closeProgram(); + gameWindowThread = null; + return; + } + } + int i2 = k; + int j2 = sleepTime; + k = 300; + sleepTime = 1; + long l1 = System.currentTimeMillis(); + if(timeArray[i] == 0L) { + k = i2; + sleepTime = j2; + } else + if(l1 > timeArray[i]) + k = (int)((long)(2560 * refreshRate) / (l1 - timeArray[i])); + if(k < 25) + k = 25; + if(k > 256) { + k = 256; + sleepTime = (int)((long)refreshRate - (l1 - timeArray[i]) / 10L); + if(sleepTime < gameMinThreadSleepTime) + sleepTime = gameMinThreadSleepTime; + } + try { + Thread.sleep(sleepTime); + } + catch(InterruptedException _ex) { } + timeArray[i] = l1; + i = (i + 1) % 10; + if(sleepTime > 1) { + for(int k2 = 0; k2 < 10; k2++) + if(timeArray[k2] != 0L) + timeArray[k2] += sleepTime; + + } + int l2 = 0; + while(j1 < 256) { + checkInputs(); + j1 += k; + if(++l2 > fie) { + j1 = 0; + fij += 6; + if(fij > 25) { + fij = 0; + keyF1Toggle = true; + } + break; + } + } + fij--; + j1 &= 0xff; + drawWindow(); + } + if(runStatus == -1) + closeProgram(); + gameWindowThread = null; + } + + public final void update(Graphics g1) { + paint(g1); + } + + public final void paint(Graphics g1) { + if(gameLoadingScreen == 2) { + drawLoadingScreen(gameLoadingPercentage, gameLoadingFileTitle); + return; + } + } + + private final void loadLoadingScreen() { + graphics.setColor(Color.black); + graphics.fillRect(0, 0, appletWidth, appletHeight); + byte bytes[] = unpackData("fonts.jag", "Game fonts", 0); + GameImage.addFont(DataOperations.loadData("h11p.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h12b.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h12p.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h13b.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h14b.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h16b.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h20b.jf", 0, bytes)); + GameImage.addFont(DataOperations.loadData("h24b.jf", 0, bytes)); + } + + private final void drawLoadingScreen(int percentage, String fileTitle) { + try { + int i = (appletWidth - 281) / 2; + int k = (appletHeight - 148) / 2; + graphics.setColor(Color.black); + graphics.fillRect(0, 0, appletWidth, appletHeight); + i += 2; + k += 90; + if(bgImage != null) + graphics.drawImage(bgImage, 0, 0, null); + gameLoadingPercentage = percentage; + gameLoadingFileTitle = fileTitle; + graphics.setColor(new Color(132, 132, 132)); + graphics.drawRect(i - 2, k - 2, 280, 23); + graphics.fillRect(i, k, (277 * percentage) / 100, 20); + graphics.setColor(new Color(198, 198, 198)); + drawString(graphics, fileTitle, gameLoadingFont, i + 138, k + 10); + } + catch(Exception _ex) { } + } + + protected final void drawLoadingBarText(int i, String s) { + try { + int k = (appletWidth - 281) / 2; + int l = (appletHeight - 148) / 2; + k += 2; + l += 90; + gameLoadingPercentage = i; + gameLoadingFileTitle = s; + int i1 = (277 * i) / 100; + graphics.setColor(new Color(132, 132, 132)); + graphics.fillRect(k, l, i1, 20); + graphics.setColor(Color.black); + graphics.fillRect(k + i1, l, 277 - i1, 20); + graphics.setColor(new Color(198, 198, 198)); + drawString(graphics, s, gameLoadingFont, k + 138, l + 10); + return; + } + catch(Exception _ex) { + return; + } + } + + protected final void drawString(Graphics arg0, String arg1, Font arg2, int arg3, int arg4) { + Object obj; + if(gameFrame == null) + obj = this; + else + obj = gameFrame; + FontMetrics fontmetrics = ((Component) (obj)).getFontMetrics(arg2); + fontmetrics.stringWidth(arg1); + arg0.setFont(arg2); + arg0.drawString(arg1, arg3 - fontmetrics.stringWidth(arg1) / 2, arg4 + fontmetrics.getHeight() / 4); + } + + protected byte[] unpackData(String filename, String fileTitle, int startPercentage) { + System.out.println("Using default load"); + int i = 0; + int k = 0; + byte abyte0[] = link.getFile(filename); + if(abyte0 == null) { + try { + drawLoadingBarText(startPercentage, "Loading " + fileTitle + " - 0%"); + java.io.InputStream inputstream = DataOperations.openInputStream(filename); + DataInputStream datainputstream = new DataInputStream(inputstream); + byte abyte2[] = new byte[6]; + datainputstream.readFully(abyte2, 0, 6); + i = ((abyte2[0] & 0xff) << 16) + ((abyte2[1] & 0xff) << 8) + (abyte2[2] & 0xff); + k = ((abyte2[3] & 0xff) << 16) + ((abyte2[4] & 0xff) << 8) + (abyte2[5] & 0xff); + drawLoadingBarText(startPercentage, "Loading " + fileTitle + " - 5%"); + int l = 0; + abyte0 = new byte[k]; + while(l < k) { + int i1 = k - l; + if(i1 > 1000) + i1 = 1000; + datainputstream.readFully(abyte0, l, i1); + l += i1; + drawLoadingBarText(startPercentage, "Loading " + fileTitle + " - " + (5 + (l * 95) / k) + "%"); + } + datainputstream.close(); + } + catch(IOException _ex) { } + } + drawLoadingBarText(startPercentage, "Unpacking " + fileTitle); + if(k != i) { + byte abyte1[] = new byte[i]; + DataFileDecrypter.unpackData(abyte1, i, abyte0, k, 0); + return abyte1; + } else { + return abyte0; + } + } + + public Graphics getGraphics() { + if(gameFrame != null) + return gameFrame.getGraphics(); + else + return super.getGraphics(); + } + + public Image createImage(int i, int k) { + if(gameFrame != null) + return gameFrame.createImage(i, k); + else + return super.createImage(i, k); + } + + public URL getCodeBase() { + return super.getCodeBase(); + } + + public URL getDocumentBase() { + return super.getDocumentBase(); + } + + public String getParameter(String s) { + return super.getParameter(s); + } + + protected Socket makeSocket(String address, int port) + throws IOException { + Socket socket = new Socket(InetAddress.getByName(address), port); + socket.setSoTimeout(30000); + socket.setTcpNoDelay(true); + return socket; + } + + protected void startThread(Runnable runnable) { + Thread thread = new Thread(runnable); + thread.setDaemon(true); + thread.start(); + } + + public void mouseScroll(boolean begin, int arg) { + System.out.println("mouseWheel(" + begin + ", " + arg + ")"); + } + + public GameApplet() { + appletWidth = 512; + appletHeight = 384; + refreshRate = 20; + fie = 1000; + timeArray = new long[10]; + gameLoadingScreen = 1; + gameLoadingFileTitle = "Loading"; + gameLoadingFont = new Font("TimesRoman", 0, 15); + keyLeftDown = false; + keyRightDown = false; + keyUpDown = false; + keyDownDown = false; + keySpaceDown = false; + keyNMDown = false; + gameMinThreadSleepTime = 1; + keyF1Toggle = false; + inputText = ""; + enteredInputText = ""; + pmText = ""; + enteredPMText = ""; + } + + private int appletWidth; + private int appletHeight; + private Thread gameWindowThread; + private int refreshRate; + private int fie; + private long timeArray[]; + public static GameFrame gameFrame = null; + public int runStatus; + private int fij; + public int mouseYOffset = 0; + public int gameLoadingScreen; + private int gameLoadingPercentage; + private String gameLoadingFileTitle; + private Font gameLoadingFont; + private Graphics graphics; + private static String allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"\243$%^&*()-_=+[{]};:'@#~,<.>/?\\| "; + public boolean keyLeftDown; + public boolean keyRightDown; + public boolean keyUpDown; + public boolean keyDownDown; + public boolean keySpaceDown; + public boolean keyNMDown; + public int gameMinThreadSleepTime; + public int mouseX; + public int mouseY; + public int mouseButton; + public int lastMouseButton; + public boolean keyF1Toggle; + public String inputText; + public String enteredInputText; + public String pmText; + public String enteredPMText; + + protected static int bgPixels[][] = null; + protected static BufferedImage bgImage = null; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameAppletMiddleMan.java b/clients/clientRSC/src/main/java/mudclient/GameAppletMiddleMan.java new file mode 100755 index 0000000..3e70c66 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameAppletMiddleMan.java @@ -0,0 +1,443 @@ +package mudclient; + +import java.awt.*; +import java.io.IOException; + +@SuppressWarnings("serial") +public class GameAppletMiddleMan extends GameApplet { + + protected org.moparscape.iface.Hasher hasher = null; + + protected final void connect(String user, String pass, boolean reconnecting) { + if (socketTimeout > 0) { + loginScreenPrint("Please wait...", "Connecting to server"); + try { + Thread.sleep(2000L); + } catch (Exception _ex) { + } + loginScreenPrint("Sorry! The server is currently full.", "Please try again later"); + return; + } + try { + username = user; + user = DataOperations.formatString(user, 20); + password = pass; + if (hasher != null) + pass = hasher.hashString(pass); + else + pass = DataOperations.formatString(pass, 20); + if (user.trim().length() == 0) { + loginScreenPrint("You must enter both a username", "and a password - Please try again"); + return; + } + if (reconnecting) + gameBoxPrint("Connection lost! Please wait...", "Attempting to re-establish"); + else + loginScreenPrint("Please wait...", "Connecting to server"); + streamClass = new StreamClass(makeSocket(Config.SERVER_IP, Config.SERVER_PORT), this); + streamClass.maxPacketReadCount = maxPacketReadCount; + long l = DataOperations.nameToHash(user); + streamClass.createPacket(32); + streamClass.addByte((int) (l >> 16 & 31L)); + streamClass.addString("You must enter both a username and a password - Please try again");// TODO not used server-side + streamClass.flush(); + long sessionId = streamClass.readLong(); + if (sessionId == 0L) { + loginScreenPrint("Login server offline.", "Please try again in a few mins"); + return; + } + //System.out.println("Verb: Session id: " + sessionId); + int sessionKeys[] = new int[4]; + sessionKeys[0] = (int) (Math.random() * 99999999D); + sessionKeys[1] = (int) (Math.random() * 99999999D); + sessionKeys[2] = (int) (sessionId >> 32); + sessionKeys[3] = (int) sessionId; + LoginDataEncryption dataEnc = new LoginDataEncryption(new byte[117]); + dataEnc.addByte(reconnecting ? 1 : 0); + dataEnc.addInt(Config.CLIENT_VERSION); + dataEnc.addInt(sessionKeys[0]); + dataEnc.addInt(sessionKeys[1]); + dataEnc.addInt(sessionKeys[2]); + dataEnc.addInt(sessionKeys[3]); + dataEnc.addString(user); + dataEnc.addString(pass); + byte data[] = dataEnc.encrypt(dataEnc.packet); + streamClass.createPacket(77); + streamClass.addBytes(data, 0, data.length); + streamClass.flush(); + int loginCode = streamClass.read(); + //System.out.println("login response:" + loginCode); + if (loginCode == 99) { + reconnectTries = 0; + initVars(); + return; + } + if (loginCode == 0) { + reconnectTries = 0; + initVars(); + return; + } + if (loginCode == 1) { + reconnectTries = 0; + return; + } + if (reconnecting) { + user = ""; + pass = ""; + resetIntVars(); + return; + } + if (loginCode == -1) { + loginScreenPrint("Error unable to login.", "Server timed out"); + return; + } + if (loginCode == 2) { + loginScreenPrint("Invalid username or password.", "Try again, or create a new account"); + return; + } + if (loginCode == 3) { + loginScreenPrint("That username is already logged in.", "Wait 60 seconds then retry"); + return; + } + if (loginCode == 4) { + loginScreenPrint("The client has been updated.", "Please restart the client"); + return; + } + if (loginCode == 5) { + loginScreenPrint("Error unable to login.", "Please retry"); + return; + } + if (loginCode == 6) { + loginScreenPrint("Account banned.", "Appeal on the forums, ASAP."); + return; + } + if (loginCode == 7) { + loginScreenPrint("Error - failed to decode profile.", "Contact an admin!"); + return; + } + if (loginCode == 8) { + loginScreenPrint("Too many connections from your IP.", "Please try again later"); + return; + } + if (loginCode == 9) { + loginScreenPrint("Account already in use.", "You may only login to one character at a time"); + return; + } else { + loginScreenPrint("Error unable to login.", "Unrecognised response code"); + return; + } + } catch (Exception e) { + System.out.println(e.getMessage()); + e.printStackTrace(); + } + if (reconnectTries > 0) { + try { + Thread.sleep(2500L); + } catch (Exception _ex) { + } + reconnectTries--; + connect(username, password, reconnecting); + } + if (reconnecting) { + username = ""; + password = ""; + resetIntVars(); + } else { + loginScreenPrint("Sorry! Unable to connect.", "Check internet settings or try another world"); + } + } + + protected final void requestLogout() { + if (streamClass != null) + try { + streamClass.createPacket(39); + streamClass.flush(); + } catch (IOException _ex) { + } + username = ""; + password = ""; + resetIntVars(); + loginScreenPrint("Please enter your usename and password", ""); + } + + protected void lostConnection() { + System.out.println("Lost connection"); + connect(username, password, true); + loginScreenPrint("Please enter your usename and password", ""); + } + + protected final void gameBoxPrint(String s1, String s2) { + Graphics g = getGraphics(); + Font font = new Font("Helvetica", 1, 15); + char c = '\u0200'; + char c1 = '\u0158'; + g.setColor(Color.black); + g.fillRect(c / 2 - 140, c1 / 2 - 25, 280, 50); + g.setColor(Color.white); + g.drawRect(c / 2 - 140, c1 / 2 - 25, 280, 50); + drawString(g, s1, font, c / 2, c1 / 2 - 10); + drawString(g, s2, font, c / 2, c1 / 2 + 10); + } + + protected final void sendPingPacket() { + long l = System.currentTimeMillis(); + if (streamClass.hasData()) + lastPing = l; + if (l - lastPing > 5000L) { + lastPing = l; + streamClass.createPacket(5); + streamClass.formatPacket(); + } + try { + streamClass.writePacket(20); + } catch (IOException _ex) { + lostConnection(); + return; + } + int packetLength = streamClass.readPacket(packetData); + if (packetLength > 0) + handlePacket(packetData[0] & 0xff, packetLength); + } + + private final void handlePacket(int command, int length) { + if (command == 48) { + String s1 = new String(packetData, 1, length - 1); + displayMessage(s1); + return; + } + if (command == 222) { + requestLogout(); + return; + } + if (command == 136) { + cantLogout(); + return; + } + if (command == 249) { + friendsCount = DataOperations.getByte(packetData[1]); + for (int i = 0; i < friendsCount; i++) { + friendsList[i] = DataOperations.getLong(packetData, 2 + i * 9); + friendsWorld[i] = DataOperations.getByte(packetData[10 + i * 9]); + } + + reOrderFriendsList(); + return; + } + if (command == 25) { + long friend = DataOperations.getLong(packetData, 1); + int status = packetData[9] & 0xff; + for (int j1 = 0; j1 < friendsCount; j1++) + if (friendsList[j1] == friend) { + if (friendsWorld[j1] == 0 && status != 0) + displayMessage("@pri@" + DataOperations.hashToName(friend) + " has logged in"); + if (friendsWorld[j1] != 0 && status == 0) + displayMessage("@pri@" + DataOperations.hashToName(friend) + " has logged out"); + friendsWorld[j1] = status; + length = 0; + reOrderFriendsList(); + return; + } + + friendsList[friendsCount] = friend; + friendsWorld[friendsCount] = status; + friendsCount++; + reOrderFriendsList(); + return; + } + if (command == 2) { + ignoresCount = DataOperations.getByte(packetData[1]); + for (int j = 0; j < ignoresCount; j++) + ignoresList[j] = DataOperations.getLong(packetData, 2 + j * 8); + + return; + } + if (command == 158) { + blockChat = packetData[1]; + blockPrivate = packetData[2]; + blockTrade = packetData[3]; + blockDuel = packetData[4]; + return; + } + if (command == 170) { + long l1 = DataOperations.getLong(packetData, 1); + String s = ChatMessage.bytesToString(packetData, 9, length - 9); + displayMessage("@pri@" + DataOperations.hashToName(l1) + ": tells you " + s); + return; + } + if (command == 211) {// TODO remove? + streamClass.createPacket(69); + streamClass.addByte(0);// scar.exe, etc + streamClass.formatPacket(); + return; + } + if (command == 1) {// TODO remove? + //bluePoints + //redPoints + return; + } + handlePacket(command, length, packetData); + } + + private final void reOrderFriendsList() { + boolean flag = true; + while (flag) { + flag = false; + for (int i = 0; i < friendsCount - 1; i++) + if (friendsWorld[i] < friendsWorld[i + 1]) { + int j = friendsWorld[i]; + friendsWorld[i] = friendsWorld[i + 1]; + friendsWorld[i + 1] = j; + long l = friendsList[i]; + friendsList[i] = friendsList[i + 1]; + friendsList[i + 1] = l; + flag = true; + } + + } + } + + protected final void sendUpdatedPrivacyInfo(int blockChat, int blockPrivate, int blockTrade, int blockDuel) { + streamClass.createPacket(176); + streamClass.addByte(blockChat); + streamClass.addByte(blockPrivate); + streamClass.addByte(blockTrade); + streamClass.addByte(blockDuel); + streamClass.formatPacket(); + } + + protected final void addIgnore(String arg0) { + long l = DataOperations.nameToHash(arg0); + streamClass.createPacket(25); + streamClass.addLong(l); + streamClass.formatPacket(); + for (int i = 0; i < ignoresCount; i++) + if (ignoresList[i] == l) + return; + + if (ignoresCount >= ignoresList.length - 1) { + return; + } else { + ignoresList[ignoresCount++] = l; + return; + } + } + + protected final void removeIgnore(long arg0) { + streamClass.createPacket(108); + streamClass.addLong(arg0); + streamClass.formatPacket(); + for (int i = 0; i < ignoresCount; i++) + if (ignoresList[i] == arg0) { + ignoresCount--; + for (int j = i; j < ignoresCount; j++) + ignoresList[j] = ignoresList[j + 1]; + + return; + } + + } + + protected final void addFriend(String arg0) { + streamClass.createPacket(168); + streamClass.addLong(DataOperations.nameToHash(arg0)); + streamClass.formatPacket(); + long l = DataOperations.nameToHash(arg0); + for (int i = 0; i < friendsCount; i++) + if (friendsList[i] == l) + return; + + if (friendsCount >= friendsList.length - 1) { + return; + } else { + friendsList[friendsCount] = l; + friendsWorld[friendsCount] = 0; + friendsCount++; + return; + } + } + + protected final void removeFriend(long arg0) { + streamClass.createPacket(52); + streamClass.addLong(arg0); + streamClass.formatPacket(); + for (int i = 0; i < friendsCount; i++) { + if (friendsList[i] != arg0) + continue; + friendsCount--; + for (int j = i; j < friendsCount; j++) { + friendsList[j] = friendsList[j + 1]; + friendsWorld[j] = friendsWorld[j + 1]; + } + + break; + } + + displayMessage("@pri@" + DataOperations.hashToName(arg0) + " has been removed from your friends list"); + } + + protected final void sendPrivateMessage(long l, byte abyte0[], int i) { + streamClass.createPacket(254); + streamClass.addLong(l); + streamClass.addBytes(abyte0, 0, i); + streamClass.formatPacket(); + } + + protected final void sendChatMessage(byte abyte0[], int i) { + streamClass.createPacket(145); + streamClass.addBytes(abyte0, 0, i); + streamClass.formatPacket(); + } + + protected final void sendCommand(String s1) { + streamClass.createPacket(90); + streamClass.addString(s1); + streamClass.formatPacket(); + } + + protected void loginScreenPrint(String s1, String s2) { + } + + protected void initVars() { + } + + protected void resetIntVars() { + } + + protected void cantLogout() { + } + + protected void handlePacket(int i, int j, byte abyte0[]) { + } + + protected void displayMessage(String s1) { + } + + public GameAppletMiddleMan() { + username = ""; + password = ""; + packetData = new byte[10000]; + friendsList = new long[40]; + friendsWorld = new int[400]; + ignoresList = new long[200]; + } + + public static int maxPacketReadCount; + String username; + String password; + public StreamClass streamClass; + byte packetData[]; + int reconnectTries; + long lastPing; + public int friendsCount; + public long friendsList[]; + public int friendsWorld[]; + public int ignoresCount; + public long ignoresList[]; + public int blockChat; + public int blockPrivate; + public int blockTrade; + public int blockDuel; + public long sessionId; + public int socketTimeout; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameFrame.java b/clients/clientRSC/src/main/java/mudclient/GameFrame.java new file mode 100755 index 0000000..f82e336 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameFrame.java @@ -0,0 +1,77 @@ +package mudclient; + +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.event.WindowEvent; +import java.awt.event.WindowListener; + +@SuppressWarnings({ "deprecation", "serial" }) +public class GameFrame extends Frame implements WindowListener { + + public GameFrame(GameApplet arg0, int width, int height, String title, boolean resizable, boolean translate) { + yOffset = 28; + frameWidth = width; + frameHeight = height; + gameApplet = arg0; + if(translate) + yOffset = 48; + else + yOffset = 28; + gameApplet.mouseYOffset = 24; + setTitle(title); + setResizable(resizable); + show(); + toFront(); + resize(frameWidth, frameHeight); + + addWindowListener(this); + } + + public Graphics getGraphics() { + Graphics g = super.getGraphics(); + if(fej == 0) + g.translate(0, 24); + else + g.translate(-5, 0); + return g; + } + + public void resize(int i, int j) { + super.resize(i, j + yOffset); + } + + public final void paint(Graphics g) { + gameApplet.paint(g); + } + + public void windowClosed(WindowEvent evt) { + if(gameApplet.runStatus != -1) + gameApplet.destroy(); + } + + public void windowClosing(WindowEvent evt) { + if(gameApplet.runStatus != -1) + gameApplet.destroy(); + } + + public void windowActivated(WindowEvent evt) { + } + + public void windowDeactivated(WindowEvent evt) { + } + + public void windowDeiconified(WindowEvent evt) { + } + + public void windowIconified(WindowEvent evt) { + } + + public void windowOpened(WindowEvent evt) { + } + + int frameWidth; + int frameHeight; + int fej; + int yOffset; + GameApplet gameApplet; +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameImage.java b/clients/clientRSC/src/main/java/mudclient/GameImage.java new file mode 100755 index 0000000..0bd5d5d --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameImage.java @@ -0,0 +1,2196 @@ +package mudclient; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.image.ColorModel; +import java.awt.image.DirectColorModel; +import java.awt.image.ImageConsumer; +import java.awt.image.ImageObserver; +import java.awt.image.ImageProducer; +import java.awt.image.PixelGrabber; + +public class GameImage + implements ImageProducer, ImageObserver { + + public GameImage(int arg0, int arg1, int arg2, Component arg3) { + interlace = false; + loggedIn = false; + gameLowerY = arg1; + gameLowerX = arg0; + width = gameWidth = arg0; + height = gameHeight = arg1; + area = arg0 * arg1; + pixels = new int[arg0 * arg1]; + pictureColors = new int[arg2][]; + pictureRequiresShift = new boolean[arg2]; + bmd = new byte[arg2][]; + bme = new int[arg2][]; + pictureWidth = new int[arg2]; + pictureHeight = new int[arg2]; + pictureAssumedWidth = new int[arg2]; + pictureAssumedHeight = new int[arg2]; + pictureOffsetX = new int[arg2]; + pictureOffsetY = new int[arg2]; + if(arg0 > 1 && arg1 > 1 && arg3 != null) { + colorModel = new DirectColorModel(32, 0xff0000, 65280, 255); + int i = gameWidth * gameHeight; + for(int k = 0; k < i; k++) + pixels[k] = 0; + + image = arg3.createImage(this); + cag(); + arg3.prepareImage(image, arg3); + cag(); + arg3.prepareImage(image, arg3); + cag(); + arg3.prepareImage(image, arg3); + } + } + + public synchronized void addConsumer(ImageConsumer imageconsumer) { + imageConsumer = imageconsumer; + imageconsumer.setDimensions(gameWidth, gameHeight); + imageconsumer.setProperties(null); + imageconsumer.setColorModel(colorModel); + imageconsumer.setHints(14); + } + + public synchronized boolean isConsumer(ImageConsumer imageconsumer) { + return imageConsumer == imageconsumer; + } + + public synchronized void removeConsumer(ImageConsumer imageconsumer) { + if(imageConsumer == imageconsumer) + imageConsumer = null; + } + + public void startProduction(ImageConsumer imageconsumer) { + addConsumer(imageconsumer); + } + + public void requestTopDownLeftRightResend(ImageConsumer imageconsumer) { + System.out.println("TDLR"); + } + + public synchronized void cag() { + if(imageConsumer == null) { + return; + } else { + imageConsumer.setPixels(0, 0, gameWidth, gameHeight, colorModel, pixels, 0, gameWidth); + imageConsumer.imageComplete(2); + return; + } + } + + public void setGameBoundaries(int i, int k, int l, int i1) { + if(i < 0) + i = 0; + if(k < 0) + k = 0; + if(l > gameWidth) + l = gameWidth; + if(i1 > gameHeight) + i1 = gameHeight; + gameUpperX = i; + gameUpperY = k; + gameLowerX = l; + gameLowerY = i1; + } + + public void cai() { + gameUpperX = 0; + gameUpperY = 0; + gameLowerX = gameWidth; + gameLowerY = gameHeight; + } + + public void drawImage(Graphics g, int i, int k) { + cag(); + g.drawImage(image, i, k, this); + } + + public void clearScreen() { + int i = gameWidth * gameHeight; + if(!interlace) { + for(int k = 0; k < i; k++) + pixels[k] = 0; + + return; + } + int l = 0; + for(int i1 = -gameHeight; i1 < 0; i1 += 2) { + for(int j1 = -gameWidth; j1 < 0; j1++) + pixels[l++] = 0; + + l += gameWidth; + } + + } + + public void drawCircle(int arg0, int arg1, int arg2, int arg3, int arg4) { + int i = 256 - arg4; + int k = (arg3 >> 16 & 0xff) * arg4; + int l = (arg3 >> 8 & 0xff) * arg4; + int i1 = (arg3 & 0xff) * arg4; + int i2 = arg1 - arg2; + if(i2 < 0) + i2 = 0; + int j2 = arg1 + arg2; + if(j2 >= gameHeight) + j2 = gameHeight - 1; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + if((i2 & 1) != 0) + i2++; + } + for(int k2 = i2; k2 <= j2; k2 += byte0) { + int l2 = k2 - arg1; + int i3 = (int)Math.sqrt(arg2 * arg2 - l2 * l2); + int j3 = arg0 - i3; + if(j3 < 0) + j3 = 0; + int k3 = arg0 + i3; + if(k3 >= gameWidth) + k3 = gameWidth - 1; + int l3 = j3 + k2 * gameWidth; + for(int i4 = j3; i4 <= k3; i4++) { + int j1 = (pixels[l3] >> 16 & 0xff) * i; + int k1 = (pixels[l3] >> 8 & 0xff) * i; + int l1 = (pixels[l3] & 0xff) * i; + int j4 = ((k + j1 >> 8) << 16) + ((l + k1 >> 8) << 8) + (i1 + l1 >> 8); + pixels[l3++] = j4; + } + + } + + } + + public void drawBoxAlpha(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + if(arg0 < gameUpperX) { + arg2 -= gameUpperX - arg0; + arg0 = gameUpperX; + } + if(arg1 < gameUpperY) { + arg3 -= gameUpperY - arg1; + arg1 = gameUpperY; + } + if(arg0 + arg2 > gameLowerX) + arg2 = gameLowerX - arg0; + if(arg1 + arg3 > gameLowerY) + arg3 = gameLowerY - arg1; + int i = 256 - arg5; + int k = (arg4 >> 16 & 0xff) * arg5; + int l = (arg4 >> 8 & 0xff) * arg5; + int i1 = (arg4 & 0xff) * arg5; + int i2 = gameWidth - arg2; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + i2 += gameWidth; + if((arg1 & 1) != 0) { + arg1++; + arg3--; + } + } + int j2 = arg0 + arg1 * gameWidth; + for(int k2 = 0; k2 < arg3; k2 += byte0) { + for(int l2 = -arg2; l2 < 0; l2++) { + int j1 = (pixels[j2] >> 16 & 0xff) * i; + int k1 = (pixels[j2] >> 8 & 0xff) * i; + int l1 = (pixels[j2] & 0xff) * i; + int i3 = ((k + j1 >> 8) << 16) + ((l + k1 >> 8) << 8) + (i1 + l1 >> 8); + pixels[j2++] = i3; + } + + j2 += i2; + } + + } + + public void drawGradientBox(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + if(arg0 < gameUpperX) { + arg2 -= gameUpperX - arg0; + arg0 = gameUpperX; + } + if(arg0 + arg2 > gameLowerX) + arg2 = gameLowerX - arg0; + int i = arg5 >> 16 & 0xff; + int k = arg5 >> 8 & 0xff; + int l = arg5 & 0xff; + int i1 = arg4 >> 16 & 0xff; + int j1 = arg4 >> 8 & 0xff; + int k1 = arg4 & 0xff; + int l1 = gameWidth - arg2; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + l1 += gameWidth; + if((arg1 & 1) != 0) { + arg1++; + arg3--; + } + } + int i2 = arg0 + arg1 * gameWidth; + for(int j2 = 0; j2 < arg3; j2 += byte0) + if(j2 + arg1 >= gameUpperY && j2 + arg1 < gameLowerY) { + int k2 = ((i * j2 + i1 * (arg3 - j2)) / arg3 << 16) + ((k * j2 + j1 * (arg3 - j2)) / arg3 << 8) + (l * j2 + k1 * (arg3 - j2)) / arg3; + for(int l2 = -arg2; l2 < 0; l2++) + pixels[i2++] = k2; + + i2 += l1; + } else { + i2 += gameWidth; + } + + } + + public void drawBox(int arg0, int arg1, int arg2, int arg3, int arg4) { + if(arg0 < gameUpperX) { + arg2 -= gameUpperX - arg0; + arg0 = gameUpperX; + } + if(arg1 < gameUpperY) { + arg3 -= gameUpperY - arg1; + arg1 = gameUpperY; + } + if(arg0 + arg2 > gameLowerX) + arg2 = gameLowerX - arg0; + if(arg1 + arg3 > gameLowerY) + arg3 = gameLowerY - arg1; + int i = gameWidth - arg2; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + i += gameWidth; + if((arg1 & 1) != 0) { + arg1++; + arg3--; + } + } + int k = arg0 + arg1 * gameWidth; + for(int l = -arg3; l < 0; l += byte0) { + for(int i1 = -arg2; i1 < 0; i1++) + pixels[k++] = arg4; + + k += i; + } + + } + + public void drawBoxEdge(int i, int k, int l, int i1, int j1) { + drawLineX(i, k, l, j1); + drawLineX(i, (k + i1) - 1, l, j1); + drawLineY(i, k, i1, j1); + drawLineY((i + l) - 1, k, i1, j1); + } + + public void drawLineX(int arg0, int arg1, int arg2, int arg3) { + if(arg1 < gameUpperY || arg1 >= gameLowerY) + return; + if(arg0 < gameUpperX) { + arg2 -= gameUpperX - arg0; + arg0 = gameUpperX; + } + if(arg0 + arg2 > gameLowerX) + arg2 = gameLowerX - arg0; + int i = arg0 + arg1 * gameWidth; + for(int k = 0; k < arg2; k++) + pixels[i + k] = arg3; + + } + + public void drawLineY(int arg0, int arg1, int arg2, int arg3) { + if(arg0 < gameUpperX || arg0 >= gameLowerX) + return; + if(arg1 < gameUpperY) { + arg2 -= gameUpperY - arg1; + arg1 = gameUpperY; + } + if(arg1 + arg2 > gameLowerX) + arg2 = gameLowerY - arg1; + int i = arg0 + arg1 * gameWidth; + for(int k = 0; k < arg2; k++) + pixels[i + k * gameWidth] = arg3; + + } + + public void drawMinimapPixel(int i, int k, int l) { + if(i < gameUpperX || k < gameUpperY || i >= gameLowerX || k >= gameLowerY) { + return; + } else { + pixels[i + k * gameWidth] = l; + return; + } + } + + public void screenFadeToBlack() { + int l = gameWidth * gameHeight; + for(int k = 0; k < l; k++) { + int i = pixels[k] & 0xffffff; + pixels[k] = (i >>> 1 & 0x7f7f7f) + (i >>> 2 & 0x3f3f3f) + (i >>> 3 & 0x1f1f1f) + (i >>> 4 & 0xf0f0f); + } + + } + + public void cbg(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + for(int i = arg2; i < arg2 + arg4; i++) { + for(int k = arg3; k < arg3 + arg5; k++) { + int l = 0; + int i1 = 0; + int j1 = 0; + int k1 = 0; + for(int l1 = i - arg0; l1 <= i + arg0; l1++) + if(l1 >= 0 && l1 < gameWidth) { + for(int i2 = k - arg1; i2 <= k + arg1; i2++) + if(i2 >= 0 && i2 < gameHeight) { + int j2 = pixels[l1 + gameWidth * i2]; + l += j2 >> 16 & 0xff; + i1 += j2 >> 8 & 0xff; + j1 += j2 & 0xff; + k1++; + } + + } + + pixels[i + gameWidth * k] = (l / k1 << 16) + (i1 / k1 << 8) + j1 / k1; + } + + } + + } + + public static int rgbToInt(int i, int k, int l) { + return (i << 16) + (k << 8) + l; + } + + public void cleanUp() { + for(int i = 0; i < pictureColors.length; i++) { + pictureColors[i] = null; + pictureWidth[i] = 0; + pictureHeight[i] = 0; + bmd[i] = null; + bme[i] = null; + } + + } + + public void unpackImageData(int arg0, byte arg1[], byte arg2[], int arg3) { + int i = DataOperations.getShort(arg1, 0); + int k = DataOperations.getShort(arg2, i); + i += 2; + int l = DataOperations.getShort(arg2, i); + i += 2; + int i1 = arg2[i++] & 0xff; + int ai[] = new int[i1]; + ai[0] = 0xff00ff; + for(int j1 = 0; j1 < i1 - 1; j1++) { + ai[j1 + 1] = ((arg2[i] & 0xff) << 16) + ((arg2[i + 1] & 0xff) << 8) + (arg2[i + 2] & 0xff); + i += 3; + } + + int k1 = 2; + for(int l1 = arg0; l1 < arg0 + arg3; l1++) { + pictureOffsetX[l1] = arg2[i++] & 0xff; + pictureOffsetY[l1] = arg2[i++] & 0xff; + pictureWidth[l1] = DataOperations.getShort(arg2, i); + i += 2; + pictureHeight[l1] = DataOperations.getShort(arg2, i); + i += 2; + int i2 = arg2[i++] & 0xff; + int j2 = pictureWidth[l1] * pictureHeight[l1]; + bmd[l1] = new byte[j2]; + bme[l1] = ai; + pictureAssumedWidth[l1] = k; + pictureAssumedHeight[l1] = l; + pictureColors[l1] = null; + pictureRequiresShift[l1] = false; + if(pictureOffsetX[l1] != 0 || pictureOffsetY[l1] != 0) + pictureRequiresShift[l1] = true; + if(i2 == 0) { + for(int k2 = 0; k2 < j2; k2++) { + bmd[l1][k2] = arg1[k1++]; + if(bmd[l1][k2] == 0) + pictureRequiresShift[l1] = true; + } + + } else + if(i2 == 1) { + for(int l2 = 0; l2 < pictureWidth[l1]; l2++) { + for(int i3 = 0; i3 < pictureHeight[l1]; i3++) { + bmd[l1][l2 + i3 * pictureWidth[l1]] = arg1[k1++]; + if(bmd[l1][l2 + i3 * pictureWidth[l1]] == 0) + pictureRequiresShift[l1] = true; + } + + } + + } + } + + } + + public void setSleepSprite(int pictureIndex, byte spriteData[]) { + int colors[] = pictureColors[pictureIndex] = new int[10200]; + pictureWidth[pictureIndex] = 255; + pictureHeight[pictureIndex] = 40; + pictureOffsetX[pictureIndex] = 0; + pictureOffsetY[pictureIndex] = 0; + pictureAssumedWidth[pictureIndex] = 255; + pictureAssumedHeight[pictureIndex] = 40; + pictureRequiresShift[pictureIndex] = false; + int color = 0; + int off = 1; + int x; + try { + for(x = 0; x < 255;) { + int i1 = spriteData[off++] & 0xff; + for(int k1 = 0; k1 < i1; k1++) + colors[x++] = color; + + color = 0xffffff - color; + } + + for(int y = 1; y < 40; y++) { + for(int l1 = 0; l1 < 255;) { + int i2 = spriteData[off++] & 0xff; + for(int j2 = 0; j2 < i2; j2++) { + colors[x] = colors[x - 255]; + x++; + l1++; + } + + if(l1 < 255) { + colors[x] = 0xffffff - colors[x - 255]; + x++; + l1++; + } + } + + } + } catch(Exception e) { + e.printStackTrace(); + } + + } + + public void cbl(int arg0) { + int i = pictureWidth[arg0] * pictureHeight[arg0]; + int ai[] = pictureColors[arg0]; + int ai1[] = new int[32768]; + for(int k = 0; k < i; k++) { + int l = ai[k]; + ai1[((l & 0xf80000) >> 9) + ((l & 0xf800) >> 6) + ((l & 0xf8) >> 3)]++; + } + + int ai2[] = new int[256]; + ai2[0] = 0xff00ff; + int ai3[] = new int[256]; + for(int i1 = 0; i1 < 32768; i1++) { + int j1 = ai1[i1]; + if(j1 > ai3[255]) { + for(int k1 = 1; k1 < 256; k1++) { + if(j1 <= ai3[k1]) + continue; + for(int i2 = 255; i2 > k1; i2--) { + ai2[i2] = ai2[i2 - 1]; + ai3[i2] = ai3[i2 - 1]; + } + + ai2[k1] = ((i1 & 0x7c00) << 9) + ((i1 & 0x3e0) << 6) + ((i1 & 0x1f) << 3) + 0x40404; + ai3[k1] = j1; + break; + } + + } + ai1[i1] = -1; + } + + byte abyte0[] = new byte[i]; + for(int l1 = 0; l1 < i; l1++) { + int j2 = ai[l1]; + int k2 = ((j2 & 0xf80000) >> 9) + ((j2 & 0xf800) >> 6) + ((j2 & 0xf8) >> 3); + int l2 = ai1[k2]; + if(l2 == -1) { + int i3 = 0x3b9ac9ff; + int j3 = j2 >> 16 & 0xff; + int k3 = j2 >> 8 & 0xff; + int l3 = j2 & 0xff; + for(int i4 = 0; i4 < 256; i4++) { + int j4 = ai2[i4]; + int k4 = j4 >> 16 & 0xff; + int l4 = j4 >> 8 & 0xff; + int i5 = j4 & 0xff; + int j5 = (j3 - k4) * (j3 - k4) + (k3 - l4) * (k3 - l4) + (l3 - i5) * (l3 - i5); + if(j5 < i3) { + i3 = j5; + l2 = i4; + } + } + + ai1[k2] = l2; + } + abyte0[l1] = (byte)l2; + } + + bmd[arg0] = abyte0; + bme[arg0] = ai2; + pictureColors[arg0] = null; + } + + public void loadImage(int arg0) { + if(bmd[arg0] == null) + return; + int i = pictureWidth[arg0] * pictureHeight[arg0]; + byte abyte0[] = bmd[arg0]; + int ai[] = bme[arg0]; + int ai1[] = new int[i]; + for(int k = 0; k < i; k++) { + int l = ai[abyte0[k] & 0xff]; + if(l == 0) + l = 1; + else + if(l == 0xff00ff) + l = 0; + ai1[k] = l; + } + + pictureColors[arg0] = ai1; + bmd[arg0] = null; + bme[arg0] = null; + } + + public void cbn(int arg0, int arg1, int arg2, int arg3, int arg4) { + pictureWidth[arg0] = arg3; + pictureHeight[arg0] = arg4; + pictureRequiresShift[arg0] = false; + pictureOffsetX[arg0] = 0; + pictureOffsetY[arg0] = 0; + pictureAssumedWidth[arg0] = arg3; + pictureAssumedHeight[arg0] = arg4; + int i = arg3 * arg4; + int k = 0; + pictureColors[arg0] = new int[i]; + for(int l = arg1; l < arg1 + arg3; l++) { + for(int i1 = arg2; i1 < arg2 + arg4; i1++) + pictureColors[arg0][k++] = pixels[l + i1 * gameWidth]; + + } + + } + + public void cca(int arg0, int arg1, int arg2, int arg3, int arg4) { + pictureWidth[arg0] = arg3; + pictureHeight[arg0] = arg4; + pictureRequiresShift[arg0] = false; + pictureOffsetX[arg0] = 0; + pictureOffsetY[arg0] = 0; + pictureAssumedWidth[arg0] = arg3; + pictureAssumedHeight[arg0] = arg4; + int i = arg3 * arg4; + int k = 0; + pictureColors[arg0] = new int[i]; + for(int l = arg2; l < arg2 + arg4; l++) { + for(int i1 = arg1; i1 < arg1 + arg3; i1++) + pictureColors[arg0][k++] = pixels[i1 + l * gameWidth]; + + } + + } + + public void drawPicture(int i, int k, int l) { + if(pictureRequiresShift[l]) { + i += pictureOffsetX[l]; + k += pictureOffsetY[l]; + } + int i1 = i + k * gameWidth; + int j1 = 0; + int k1 = pictureHeight[l]; + int l1 = pictureWidth[l]; + int i2 = gameWidth - l1; + int j2 = 0; + if(k < gameUpperY) { + int k2 = gameUpperY - k; + k1 -= k2; + k = gameUpperY; + j1 += k2 * l1; + i1 += k2 * gameWidth; + } + if(k + k1 >= gameLowerY) + k1 -= ((k + k1) - gameLowerY) + 1; + if(i < gameUpperX) { + int l2 = gameUpperX - i; + l1 -= l2; + i = gameUpperX; + j1 += l2; + i1 += l2; + j2 += l2; + i2 += l2; + } + if(i + l1 >= gameLowerX) { + int i3 = ((i + l1) - gameLowerX) + 1; + l1 -= i3; + j2 += i3; + i2 += i3; + } + if(l1 <= 0 || k1 <= 0) + return; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + i2 += gameWidth; + j2 += pictureWidth[l]; + if((k & 1) != 0) { + i1 += gameWidth; + k1--; + } + } + if(pictureColors[l] == null) { + cch(pixels, bmd[l], bme[l], j1, i1, l1, k1, i2, j2, byte0); + return; + } else { + ccg(pixels, pictureColors[l], 0, j1, i1, l1, k1, i2, j2, byte0); + return; + } + } + + public void ccc(int i, int k, int l, int i1, int j1) { + try { + int k1 = pictureWidth[j1]; + int l1 = pictureHeight[j1]; + int i2 = 0; + int j2 = 0; + int k2 = (k1 << 16) / l; + int l2 = (l1 << 16) / i1; + if(pictureRequiresShift[j1]) { + int i3 = pictureAssumedWidth[j1]; + int k3 = pictureAssumedHeight[j1]; + k2 = (i3 << 16) / l; + l2 = (k3 << 16) / i1; + i += ((pictureOffsetX[j1] * l + i3) - 1) / i3; + k += ((pictureOffsetY[j1] * i1 + k3) - 1) / k3; + if((pictureOffsetX[j1] * l) % i3 != 0) + i2 = (i3 - (pictureOffsetX[j1] * l) % i3 << 16) / l; + if((pictureOffsetY[j1] * i1) % k3 != 0) + j2 = (k3 - (pictureOffsetY[j1] * i1) % k3 << 16) / i1; + l = (l * (pictureWidth[j1] - (i2 >> 16))) / i3; + i1 = (i1 * (pictureHeight[j1] - (j2 >> 16))) / k3; + } + int j3 = i + k * gameWidth; + int l3 = gameWidth - l; + if(k < gameUpperY) { + int i4 = gameUpperY - k; + i1 -= i4; + k = 0; + j3 += i4 * gameWidth; + j2 += l2 * i4; + } + if(k + i1 >= gameLowerY) + i1 -= ((k + i1) - gameLowerY) + 1; + if(i < gameUpperX) { + int j4 = gameUpperX - i; + l -= j4; + i = 0; + j3 += j4; + i2 += k2 * j4; + l3 += j4; + } + if(i + l >= gameLowerX) { + int k4 = ((i + l) - gameLowerX) + 1; + l -= k4; + l3 += k4; + } + byte byte0 = 1; + if(interlace) { + byte0 = 2; + l3 += gameWidth; + l2 += l2; + if((k & 1) != 0) { + j3 += gameWidth; + i1--; + } + } + cci(pixels, pictureColors[j1], 0, i2, j2, j3, l3, l, i1, k2, l2, k1, byte0); + return; + } + catch(Exception _ex) { + System.out.println("error in sprite clipping routine"); + } + } + + public void ccd(int i, int k, int l, int i1) { + if(pictureRequiresShift[l]) { + i += pictureOffsetX[l]; + k += pictureOffsetY[l]; + } + int j1 = i + k * gameWidth; + int k1 = 0; + int l1 = pictureHeight[l]; + int i2 = pictureWidth[l]; + int j2 = gameWidth - i2; + int k2 = 0; + if(k < gameUpperY) { + int l2 = gameUpperY - k; + l1 -= l2; + k = gameUpperY; + k1 += l2 * i2; + j1 += l2 * gameWidth; + } + if(k + l1 >= gameLowerY) + l1 -= ((k + l1) - gameLowerY) + 1; + if(i < gameUpperX) { + int i3 = gameUpperX - i; + i2 -= i3; + i = gameUpperX; + k1 += i3; + j1 += i3; + k2 += i3; + j2 += i3; + } + if(i + i2 >= gameLowerX) { + int j3 = ((i + i2) - gameLowerX) + 1; + i2 -= j3; + k2 += j3; + j2 += j3; + } + if(i2 <= 0 || l1 <= 0) + return; + byte byte0 = 1; + if(interlace) { + byte0 = 2; + j2 += gameWidth; + k2 += pictureWidth[l]; + if((k & 1) != 0) { + j1 += gameWidth; + l1--; + } + } + if(pictureColors[l] == null) { + cck(pixels, bmd[l], bme[l], k1, j1, i2, l1, j2, k2, byte0, i1); + return; + } else { + ccj(pixels, pictureColors[l], 0, k1, j1, i2, l1, j2, k2, byte0, i1); + return; + } + } + + public void drawTransparentImage(int i, int k, int l, int i1, int j1, int k1) { + try { + int l1 = pictureWidth[j1]; + int i2 = pictureHeight[j1]; + int j2 = 0; + int k2 = 0; + int l2 = (l1 << 16) / l; + int i3 = (i2 << 16) / i1; + if(pictureRequiresShift[j1]) { + int j3 = pictureAssumedWidth[j1]; + int l3 = pictureAssumedHeight[j1]; + l2 = (j3 << 16) / l; + i3 = (l3 << 16) / i1; + i += ((pictureOffsetX[j1] * l + j3) - 1) / j3; + k += ((pictureOffsetY[j1] * i1 + l3) - 1) / l3; + if((pictureOffsetX[j1] * l) % j3 != 0) + j2 = (j3 - (pictureOffsetX[j1] * l) % j3 << 16) / l; + if((pictureOffsetY[j1] * i1) % l3 != 0) + k2 = (l3 - (pictureOffsetY[j1] * i1) % l3 << 16) / i1; + l = (l * (pictureWidth[j1] - (j2 >> 16))) / j3; + i1 = (i1 * (pictureHeight[j1] - (k2 >> 16))) / l3; + } + int k3 = i + k * gameWidth; + int i4 = gameWidth - l; + if(k < gameUpperY) { + int j4 = gameUpperY - k; + i1 -= j4; + k = 0; + k3 += j4 * gameWidth; + k2 += i3 * j4; + } + if(k + i1 >= gameLowerY) + i1 -= ((k + i1) - gameLowerY) + 1; + if(i < gameUpperX) { + int k4 = gameUpperX - i; + l -= k4; + i = 0; + k3 += k4; + j2 += l2 * k4; + i4 += k4; + } + if(i + l >= gameLowerX) { + int l4 = ((i + l) - gameLowerX) + 1; + l -= l4; + i4 += l4; + } + byte byte0 = 1; + if(interlace) { + byte0 = 2; + i4 += gameWidth; + i3 += i3; + if((k & 1) != 0) { + k3 += gameWidth; + i1--; + } + } + ccl(pixels, pictureColors[j1], 0, j2, k2, k3, i4, l, i1, l2, i3, l1, byte0, k1); + return; + } + catch(Exception _ex) { + System.out.println("error in sprite clipping routine"); + } + } + + public void drawCharacterLegs(int i, int k, int l, int i1, int j1, int k1) { + try { + int l1 = pictureWidth[j1]; + int i2 = pictureHeight[j1]; + int j2 = 0; + int k2 = 0; + int l2 = (l1 << 16) / l; + int i3 = (i2 << 16) / i1; + if(pictureRequiresShift[j1]) { + int j3 = pictureAssumedWidth[j1]; + int l3 = pictureAssumedHeight[j1]; + l2 = (j3 << 16) / l; + i3 = (l3 << 16) / i1; + i += ((pictureOffsetX[j1] * l + j3) - 1) / j3; + k += ((pictureOffsetY[j1] * i1 + l3) - 1) / l3; + if((pictureOffsetX[j1] * l) % j3 != 0) + j2 = (j3 - (pictureOffsetX[j1] * l) % j3 << 16) / l; + if((pictureOffsetY[j1] * i1) % l3 != 0) + k2 = (l3 - (pictureOffsetY[j1] * i1) % l3 << 16) / i1; + l = (l * (pictureWidth[j1] - (j2 >> 16))) / j3; + i1 = (i1 * (pictureHeight[j1] - (k2 >> 16))) / l3; + } + int k3 = i + k * gameWidth; + int i4 = gameWidth - l; + if(k < gameUpperY) { + int j4 = gameUpperY - k; + i1 -= j4; + k = 0; + k3 += j4 * gameWidth; + k2 += i3 * j4; + } + if(k + i1 >= gameLowerY) + i1 -= ((k + i1) - gameLowerY) + 1; + if(i < gameUpperX) { + int k4 = gameUpperX - i; + l -= k4; + i = 0; + k3 += k4; + j2 += l2 * k4; + i4 += k4; + } + if(i + l >= gameLowerX) { + int l4 = ((i + l) - gameLowerX) + 1; + l -= l4; + i4 += l4; + } + byte byte0 = 1; + if(interlace) { + byte0 = 2; + i4 += gameWidth; + i3 += i3; + if((k & 1) != 0) { + k3 += gameWidth; + i1--; + } + } + ccm(pixels, pictureColors[j1], 0, j2, k2, k3, i4, l, i1, l2, i3, l1, byte0, k1); + return; + } + catch(Exception _ex) { + System.out.println("error in sprite clipping routine"); + } + } + + private void ccg(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9) { + int i = -(arg5 >> 2); + arg5 = -(arg5 & 3); + for(int k = -arg6; k < 0; k += arg9) { + for(int l = i; l < 0; l++) { + arg2 = arg1[arg3++]; + if(arg2 != 0) + arg0[arg4++] = arg2; + else + arg4++; + arg2 = arg1[arg3++]; + if(arg2 != 0) + arg0[arg4++] = arg2; + else + arg4++; + arg2 = arg1[arg3++]; + if(arg2 != 0) + arg0[arg4++] = arg2; + else + arg4++; + arg2 = arg1[arg3++]; + if(arg2 != 0) + arg0[arg4++] = arg2; + else + arg4++; + } + + for(int i1 = arg5; i1 < 0; i1++) { + arg2 = arg1[arg3++]; + if(arg2 != 0) + arg0[arg4++] = arg2; + else + arg4++; + } + + arg4 += arg7; + arg3 += arg8; + } + + } + + private void cch(int arg0[], byte arg1[], int arg2[], int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9) { + int i = -(arg5 >> 2); + arg5 = -(arg5 & 3); + for(int k = -arg6; k < 0; k += arg9) { + for(int l = i; l < 0; l++) { + byte byte0 = arg1[arg3++]; + if(byte0 != 0) + arg0[arg4++] = arg2[byte0 & 0xff]; + else + arg4++; + byte0 = arg1[arg3++]; + if(byte0 != 0) + arg0[arg4++] = arg2[byte0 & 0xff]; + else + arg4++; + byte0 = arg1[arg3++]; + if(byte0 != 0) + arg0[arg4++] = arg2[byte0 & 0xff]; + else + arg4++; + byte0 = arg1[arg3++]; + if(byte0 != 0) + arg0[arg4++] = arg2[byte0 & 0xff]; + else + arg4++; + } + + for(int i1 = arg5; i1 < 0; i1++) { + byte byte1 = arg1[arg3++]; + if(byte1 != 0) + arg0[arg4++] = arg2[byte1 & 0xff]; + else + arg4++; + } + + arg4 += arg7; + arg3 += arg8; + } + + } + + private void cci(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12) { + try { + int i = arg3; + for(int k = -arg8; k < 0; k += arg12) { + int l = (arg4 >> 16) * arg11; + for(int i1 = -arg7; i1 < 0; i1++) { + arg2 = arg1[(arg3 >> 16) + l]; + if(arg2 != 0) + arg0[arg5++] = arg2; + else + arg5++; + arg3 += arg9; + } + + arg4 += arg10; + arg3 = i; + arg5 += arg6; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in plot_scale"); + } + } + + private void ccj(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10) { + int i = 256 - arg10; + for(int k = -arg6; k < 0; k += arg9) { + for(int l = -arg5; l < 0; l++) { + arg2 = arg1[arg3++]; + if(arg2 != 0) { + int i1 = arg0[arg4]; + arg0[arg4++] = ((arg2 & 0xff00ff) * arg10 + (i1 & 0xff00ff) * i & 0xff00ff00) + ((arg2 & 0xff00) * arg10 + (i1 & 0xff00) * i & 0xff0000) >> 8; + } else { + arg4++; + } + } + + arg4 += arg7; + arg3 += arg8; + } + + } + + private void cck(int arg0[], byte arg1[], int arg2[], int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10) { + int i = 256 - arg10; + for(int k = -arg6; k < 0; k += arg9) { + for(int l = -arg5; l < 0; l++) { + int i1 = arg1[arg3++]; + if(i1 != 0) { + i1 = arg2[i1 & 0xff]; + int j1 = arg0[arg4]; + arg0[arg4++] = ((i1 & 0xff00ff) * arg10 + (j1 & 0xff00ff) * i & 0xff00ff00) + ((i1 & 0xff00) * arg10 + (j1 & 0xff00) * i & 0xff0000) >> 8; + } else { + arg4++; + } + } + + arg4 += arg7; + arg3 += arg8; + } + + } + + private void ccl(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + int i = 256 - arg13; + try { + int k = arg3; + for(int l = -arg8; l < 0; l += arg12) { + int i1 = (arg4 >> 16) * arg11; + for(int j1 = -arg7; j1 < 0; j1++) { + arg2 = arg1[(arg3 >> 16) + i1]; + if(arg2 != 0) { + int k1 = arg0[arg5]; + arg0[arg5++] = ((arg2 & 0xff00ff) * arg13 + (k1 & 0xff00ff) * i & 0xff00ff00) + ((arg2 & 0xff00) * arg13 + (k1 & 0xff00) * i & 0xff0000) >> 8; + } else { + arg5++; + } + arg3 += arg9; + } + + arg4 += arg10; + arg3 = k; + arg5 += arg6; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in tran_scale"); + } + } + + private void ccm(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13) { + int i = arg13 >> 16 & 0xff; + int k = arg13 >> 8 & 0xff; + int l = arg13 & 0xff; + try { + int i1 = arg3; + for(int j1 = -arg8; j1 < 0; j1 += arg12) { + int k1 = (arg4 >> 16) * arg11; + for(int l1 = -arg7; l1 < 0; l1++) { + arg2 = arg1[(arg3 >> 16) + k1]; + if(arg2 != 0) { + int i2 = arg2 >> 16 & 0xff; + int j2 = arg2 >> 8 & 0xff; + int k2 = arg2 & 0xff; + if(i2 == j2 && j2 == k2) + arg0[arg5++] = ((i2 * i >> 8) << 16) + ((j2 * k >> 8) << 8) + (k2 * l >> 8); + else + arg0[arg5++] = arg2; + } else { + arg5++; + } + arg3 += arg9; + } + + arg4 += arg10; + arg3 = i1; + arg5 += arg6; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in plot_scale"); + } + } + + public void drawMinimapPic(int arg0, int arg1, int arg2, int arg3, int arg4) { + int i = gameWidth; + int k = gameHeight; + if(bng == null) { + bng = new int[512]; + for(int l = 0; l < 256; l++) { + bng[l] = (int)(Math.sin((double)l * 0.02454369D) * 32768D); + bng[l + 256] = (int)(Math.cos((double)l * 0.02454369D) * 32768D); + } + + } + int i1 = -pictureAssumedWidth[arg2] / 2; + int j1 = -pictureAssumedHeight[arg2] / 2; + if(pictureRequiresShift[arg2]) { + i1 += pictureOffsetX[arg2]; + j1 += pictureOffsetY[arg2]; + } + int k1 = i1 + pictureWidth[arg2]; + int l1 = j1 + pictureHeight[arg2]; + int i2 = k1; + int j2 = j1; + int k2 = i1; + int l2 = l1; + arg3 &= 0xff; + int i3 = bng[arg3] * arg4; + int j3 = bng[arg3 + 256] * arg4; + int k3 = arg0 + (j1 * i3 + i1 * j3 >> 22); + int l3 = arg1 + (j1 * j3 - i1 * i3 >> 22); + int i4 = arg0 + (j2 * i3 + i2 * j3 >> 22); + int j4 = arg1 + (j2 * j3 - i2 * i3 >> 22); + int k4 = arg0 + (l1 * i3 + k1 * j3 >> 22); + int l4 = arg1 + (l1 * j3 - k1 * i3 >> 22); + int i5 = arg0 + (l2 * i3 + k2 * j3 >> 22); + int j5 = arg1 + (l2 * j3 - k2 * i3 >> 22); + if(arg4 == 192 && (arg3 & 0x3f) == (cab & 0x3f)) + bnn++; + else + if(arg4 == 128) + cab = arg3; + else + caa++; + int k5 = l3; + int l5 = l3; + if(j4 < k5) + k5 = j4; + else + if(j4 > l5) + l5 = j4; + if(l4 < k5) + k5 = l4; + else + if(l4 > l5) + l5 = l4; + if(j5 < k5) + k5 = j5; + else + if(j5 > l5) + l5 = j5; + if(k5 < gameUpperY) + k5 = gameUpperY; + if(l5 > gameLowerY) + l5 = gameLowerY; + if(bnh == null || bnh.length != k + 1) { + bnh = new int[k + 1]; + bni = new int[k + 1]; + bnj = new int[k + 1]; + bnk = new int[k + 1]; + bnl = new int[k + 1]; + bnm = new int[k + 1]; + } + for(int i6 = k5; i6 <= l5; i6++) { + bnh[i6] = 0x5f5e0ff; + bni[i6] = 0xfa0a1f01; + } + + int i7 = 0; + int k7 = 0; + int i8 = 0; + int j8 = pictureWidth[arg2]; + int k8 = pictureHeight[arg2]; + i1 = 0; + j1 = 0; + i2 = j8 - 1; + j2 = 0; + k1 = j8 - 1; + l1 = k8 - 1; + k2 = 0; + l2 = k8 - 1; + if(j5 != l3) { + i7 = (i5 - k3 << 8) / (j5 - l3); + i8 = (l2 - j1 << 8) / (j5 - l3); + } + int j6; + int k6; + int l6; + int l7; + if(l3 > j5) { + l6 = i5 << 8; + l7 = l2 << 8; + j6 = j5; + k6 = l3; + } else { + l6 = k3 << 8; + l7 = j1 << 8; + j6 = l3; + k6 = j5; + } + if(j6 < 0) { + l6 -= i7 * j6; + l7 -= i8 * j6; + j6 = 0; + } + if(k6 > k - 1) + k6 = k - 1; + for(int l8 = j6; l8 <= k6; l8++) { + bnh[l8] = bni[l8] = l6; + l6 += i7; + bnj[l8] = bnk[l8] = 0; + bnl[l8] = bnm[l8] = l7; + l7 += i8; + } + + if(j4 != l3) { + i7 = (i4 - k3 << 8) / (j4 - l3); + k7 = (i2 - i1 << 8) / (j4 - l3); + } + int j7; + if(l3 > j4) { + l6 = i4 << 8; + j7 = i2 << 8; + j6 = j4; + k6 = l3; + } else { + l6 = k3 << 8; + j7 = i1 << 8; + j6 = l3; + k6 = j4; + } + if(j6 < 0) { + l6 -= i7 * j6; + j7 -= k7 * j6; + j6 = 0; + } + if(k6 > k - 1) + k6 = k - 1; + for(int i9 = j6; i9 <= k6; i9++) { + if(l6 < bnh[i9]) { + bnh[i9] = l6; + bnj[i9] = j7; + bnl[i9] = 0; + } + if(l6 > bni[i9]) { + bni[i9] = l6; + bnk[i9] = j7; + bnm[i9] = 0; + } + l6 += i7; + j7 += k7; + } + + if(l4 != j4) { + i7 = (k4 - i4 << 8) / (l4 - j4); + i8 = (l1 - j2 << 8) / (l4 - j4); + } + if(j4 > l4) { + l6 = k4 << 8; + j7 = k1 << 8; + l7 = l1 << 8; + j6 = l4; + k6 = j4; + } else { + l6 = i4 << 8; + j7 = i2 << 8; + l7 = j2 << 8; + j6 = j4; + k6 = l4; + } + if(j6 < 0) { + l6 -= i7 * j6; + l7 -= i8 * j6; + j6 = 0; + } + if(k6 > k - 1) + k6 = k - 1; + for(int j9 = j6; j9 <= k6; j9++) { + if(l6 < bnh[j9]) { + bnh[j9] = l6; + bnj[j9] = j7; + bnl[j9] = l7; + } + if(l6 > bni[j9]) { + bni[j9] = l6; + bnk[j9] = j7; + bnm[j9] = l7; + } + l6 += i7; + l7 += i8; + } + + if(j5 != l4) { + i7 = (i5 - k4 << 8) / (j5 - l4); + k7 = (k2 - k1 << 8) / (j5 - l4); + } + if(l4 > j5) { + l6 = i5 << 8; + j7 = k2 << 8; + l7 = l2 << 8; + j6 = j5; + k6 = l4; + } else { + l6 = k4 << 8; + j7 = k1 << 8; + l7 = l1 << 8; + j6 = l4; + k6 = j5; + } + if(j6 < 0) { + l6 -= i7 * j6; + j7 -= k7 * j6; + j6 = 0; + } + if(k6 > k - 1) + k6 = k - 1; + for(int k9 = j6; k9 <= k6; k9++) { + if(l6 < bnh[k9]) { + bnh[k9] = l6; + bnj[k9] = j7; + bnl[k9] = l7; + } + if(l6 > bni[k9]) { + bni[k9] = l6; + bnk[k9] = j7; + bnm[k9] = l7; + } + l6 += i7; + j7 += k7; + } + + int l9 = k5 * i; + int ai[] = pictureColors[arg2]; + for(int i10 = k5; i10 < l5; i10++) { + int j10 = bnh[i10] >> 8; + int k10 = bni[i10] >> 8; + if(k10 - j10 <= 0) { + l9 += i; + } else { + int l10 = bnj[i10] << 9; + int i11 = ((bnk[i10] << 9) - l10) / (k10 - j10); + int j11 = bnl[i10] << 9; + int k11 = ((bnm[i10] << 9) - j11) / (k10 - j10); + if(j10 < gameUpperX) { + l10 += (gameUpperX - j10) * i11; + j11 += (gameUpperX - j10) * k11; + j10 = gameUpperX; + } + if(k10 > gameLowerX) + k10 = gameLowerX; + if(!interlace || (i10 & 1) == 0) + if(!pictureRequiresShift[arg2]) + cda(pixels, ai, 0, l9 + j10, l10, j11, i11, k11, j10 - k10, j8); + else + cdb(pixels, ai, 0, l9 + j10, l10, j11, i11, k11, j10 - k10, j8); + l9 += i; + } + } + + } + + private void cda(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9) { + for(arg2 = arg8; arg2 < 0; arg2++) { + pixels[arg3++] = arg1[(arg4 >> 17) + (arg5 >> 17) * arg9]; + arg4 += arg6; + arg5 += arg7; + } + + } + + private void cdb(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9) { + for(int i = arg8; i < 0; i++) { + arg2 = arg1[(arg4 >> 17) + (arg5 >> 17) * arg9]; + if(arg2 != 0) + pixels[arg3++] = arg2; + else + arg3++; + arg4 += arg6; + arg5 += arg7; + } + + } + + public void drawVisibleEntity(int i, int k, int l, int i1, int j1, int k1, int l1) { + ccc(i, k, l, i1, j1); + } + + public void drawImage(int i, int k, int l, int i1, int j1, int k1, int l1, + int i2, boolean flag) { + try { + if(k1 == 0) + k1 = 0xffffff; + if(l1 == 0) + l1 = 0xffffff; + int j2 = pictureWidth[j1]; + int k2 = pictureHeight[j1]; + int l2 = 0; + int i3 = 0; + int j3 = i2 << 16; + int k3 = (j2 << 16) / l; + int l3 = (k2 << 16) / i1; + int i4 = -(i2 << 16) / i1; + if(pictureRequiresShift[j1]) { + int j4 = pictureAssumedWidth[j1]; + int l4 = pictureAssumedHeight[j1]; + k3 = (j4 << 16) / l; + l3 = (l4 << 16) / i1; + int k5 = pictureOffsetX[j1]; + int l5 = pictureOffsetY[j1]; + if(flag) + k5 = j4 - pictureWidth[j1] - k5; + i += ((k5 * l + j4) - 1) / j4; + int i6 = ((l5 * i1 + l4) - 1) / l4; + k += i6; + j3 += i6 * i4; + if((k5 * l) % j4 != 0) + l2 = (j4 - (k5 * l) % j4 << 16) / l; + if((l5 * i1) % l4 != 0) + i3 = (l4 - (l5 * i1) % l4 << 16) / i1; + l = ((((pictureWidth[j1] << 16) - l2) + k3) - 1) / k3; + i1 = ((((pictureHeight[j1] << 16) - i3) + l3) - 1) / l3; + } + int k4 = k * gameWidth; + j3 += i << 16; + if(k < gameUpperY) { + int i5 = gameUpperY - k; + i1 -= i5; + k = gameUpperY; + k4 += i5 * gameWidth; + i3 += l3 * i5; + j3 += i4 * i5; + } + if(k + i1 >= gameLowerY) + i1 -= ((k + i1) - gameLowerY) + 1; + int j5 = k4 / gameWidth & 1; + if(!interlace) + j5 = 2; + if(l1 == 0xffffff) { + if(pictureColors[j1] != null) + if(!flag) { + cde(pixels, pictureColors[j1], 0, l2, i3, k4, l, i1, k3, l3, j2, k1, j3, i4, j5); + return; + } else { + cde(pixels, pictureColors[j1], 0, (pictureWidth[j1] << 16) - l2 - 1, i3, k4, l, i1, -k3, l3, j2, k1, j3, i4, j5); + return; + } + if(!flag) { + cdg(pixels, bmd[j1], bme[j1], 0, l2, i3, k4, l, i1, k3, l3, j2, k1, j3, i4, j5); + return; + } else { + cdg(pixels, bmd[j1], bme[j1], 0, (pictureWidth[j1] << 16) - l2 - 1, i3, k4, l, i1, -k3, l3, j2, k1, j3, i4, j5); + return; + } + } + if(pictureColors[j1] != null) + if(!flag) { + cdf(pixels, pictureColors[j1], 0, l2, i3, k4, l, i1, k3, l3, j2, k1, l1, j3, i4, j5); + return; + } else { + cdf(pixels, pictureColors[j1], 0, (pictureWidth[j1] << 16) - l2 - 1, i3, k4, l, i1, -k3, l3, j2, k1, l1, j3, i4, j5); + return; + } + if(!flag) { + cdh(pixels, bmd[j1], bme[j1], 0, l2, i3, k4, l, i1, k3, l3, j2, k1, l1, j3, i4, j5); + return; + } else { + cdh(pixels, bmd[j1], bme[j1], 0, (pictureWidth[j1] << 16) - l2 - 1, i3, k4, l, i1, -k3, l3, j2, k1, l1, j3, i4, j5); + return; + } + } + catch(Exception _ex) { + System.out.println("error in sprite clipping routine"); + } + } + + private void cde(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, + int arg14) { + int i1 = arg11 >> 16 & 0xff; + int j1 = arg11 >> 8 & 0xff; + int k1 = arg11 & 0xff; + try { + int l1 = arg3; + for(int i2 = -arg7; i2 < 0; i2++) { + int j2 = (arg4 >> 16) * arg10; + int k2 = arg12 >> 16; + int l2 = arg6; + if(k2 < gameUpperX) { + int i3 = gameUpperX - k2; + l2 -= i3; + k2 = gameUpperX; + arg3 += arg8 * i3; + } + if(k2 + l2 >= gameLowerX) { + int j3 = (k2 + l2) - gameLowerX; + l2 -= j3; + } + arg14 = 1 - arg14; + if(arg14 != 0) { + for(int k3 = k2; k3 < k2 + l2; k3++) { + arg2 = arg1[(arg3 >> 16) + j2]; + if(arg2 != 0) { + int i = arg2 >> 16 & 0xff; + int k = arg2 >> 8 & 0xff; + int l = arg2 & 0xff; + if(i == k && k == l) + arg0[k3 + arg5] = ((i * i1 >> 8) << 16) + ((k * j1 >> 8) << 8) + (l * k1 >> 8); + else + arg0[k3 + arg5] = arg2; + } + arg3 += arg8; + } + + } + arg4 += arg9; + arg3 = l1; + arg5 += gameWidth; + arg12 += arg13; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in transparent sprite plot routine"); + } + } + + private void cdf(int arg0[], int arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, + int arg14, int arg15) { + int i1 = arg11 >> 16 & 0xff; + int j1 = arg11 >> 8 & 0xff; + int k1 = arg11 & 0xff; + int l1 = arg12 >> 16 & 0xff; + int i2 = arg12 >> 8 & 0xff; + int j2 = arg12 & 0xff; + try { + int k2 = arg3; + for(int l2 = -arg7; l2 < 0; l2++) { + int i3 = (arg4 >> 16) * arg10; + int j3 = arg13 >> 16; + int k3 = arg6; + if(j3 < gameUpperX) { + int l3 = gameUpperX - j3; + k3 -= l3; + j3 = gameUpperX; + arg3 += arg8 * l3; + } + if(j3 + k3 >= gameLowerX) { + int i4 = (j3 + k3) - gameLowerX; + k3 -= i4; + } + arg15 = 1 - arg15; + if(arg15 != 0) { + for(int j4 = j3; j4 < j3 + k3; j4++) { + arg2 = arg1[(arg3 >> 16) + i3]; + if(arg2 != 0) { + int i = arg2 >> 16 & 0xff; + int k = arg2 >> 8 & 0xff; + int l = arg2 & 0xff; + if(i == k && k == l) + arg0[j4 + arg5] = ((i * i1 >> 8) << 16) + ((k * j1 >> 8) << 8) + (l * k1 >> 8); + else + if(i == 255 && k == l) + arg0[j4 + arg5] = ((i * l1 >> 8) << 16) + ((k * i2 >> 8) << 8) + (l * j2 >> 8); + else + arg0[j4 + arg5] = arg2; + } + arg3 += arg8; + } + + } + arg4 += arg9; + arg3 = k2; + arg5 += gameWidth; + arg13 += arg14; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in transparent sprite plot routine"); + } + } + + private void cdg(int arg0[], byte arg1[], int arg2[], int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, + int arg14, int arg15) { + int i1 = arg12 >> 16 & 0xff; + int j1 = arg12 >> 8 & 0xff; + int k1 = arg12 & 0xff; + try { + int l1 = arg4; + for(int i2 = -arg8; i2 < 0; i2++) { + int j2 = (arg5 >> 16) * arg11; + int k2 = arg13 >> 16; + int l2 = arg7; + if(k2 < gameUpperX) { + int i3 = gameUpperX - k2; + l2 -= i3; + k2 = gameUpperX; + arg4 += arg9 * i3; + } + if(k2 + l2 >= gameLowerX) { + int j3 = (k2 + l2) - gameLowerX; + l2 -= j3; + } + arg15 = 1 - arg15; + if(arg15 != 0) { + for(int k3 = k2; k3 < k2 + l2; k3++) { + arg3 = arg1[(arg4 >> 16) + j2] & 0xff; + if(arg3 != 0) { + arg3 = arg2[arg3]; + int i = arg3 >> 16 & 0xff; + int k = arg3 >> 8 & 0xff; + int l = arg3 & 0xff; + if(i == k && k == l) + arg0[k3 + arg6] = ((i * i1 >> 8) << 16) + ((k * j1 >> 8) << 8) + (l * k1 >> 8); + else + arg0[k3 + arg6] = arg3; + } + arg4 += arg9; + } + + } + arg5 += arg10; + arg4 = l1; + arg6 += gameWidth; + arg13 += arg14; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in transparent sprite plot routine"); + } + } + + private void cdh(int arg0[], byte arg1[], int arg2[], int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, int arg13, + int arg14, int arg15, int arg16) { + int i1 = arg12 >> 16 & 0xff; + int j1 = arg12 >> 8 & 0xff; + int k1 = arg12 & 0xff; + int l1 = arg13 >> 16 & 0xff; + int i2 = arg13 >> 8 & 0xff; + int j2 = arg13 & 0xff; + try { + int k2 = arg4; + for(int l2 = -arg8; l2 < 0; l2++) { + int i3 = (arg5 >> 16) * arg11; + int j3 = arg14 >> 16; + int k3 = arg7; + if(j3 < gameUpperX) { + int l3 = gameUpperX - j3; + k3 -= l3; + j3 = gameUpperX; + arg4 += arg9 * l3; + } + if(j3 + k3 >= gameLowerX) { + int i4 = (j3 + k3) - gameLowerX; + k3 -= i4; + } + arg16 = 1 - arg16; + if(arg16 != 0) { + for(int j4 = j3; j4 < j3 + k3; j4++) { + arg3 = arg1[(arg4 >> 16) + i3] & 0xff; + if(arg3 != 0) { + arg3 = arg2[arg3]; + int i = arg3 >> 16 & 0xff; + int k = arg3 >> 8 & 0xff; + int l = arg3 & 0xff; + if(i == k && k == l) + arg0[j4 + arg6] = ((i * i1 >> 8) << 16) + ((k * j1 >> 8) << 8) + (l * k1 >> 8); + else + if(i == 255 && k == l) + arg0[j4 + arg6] = ((i * l1 >> 8) << 16) + ((k * i2 >> 8) << 8) + (l * j2 >> 8); + else + arg0[j4 + arg6] = arg3; + } + arg4 += arg9; + } + + } + arg5 += arg10; + arg4 = k2; + arg6 += gameWidth; + arg14 += arg15; + } + + return; + } + catch(Exception _ex) { + System.out.println("error in transparent sprite plot routine"); + } + } + + public static void cdj(Font arg0, FontMetrics arg1, char arg2, int arg3, GameApplet arg4, int arg5, boolean arg6) { + int i = arg1.charWidth(arg2); + int k = i; + if(arg6) + try { + if(arg2 == '/') + arg6 = false; + if(arg2 == 'f' || arg2 == 't' || arg2 == 'w' || arg2 == 'v' || arg2 == 'k' || arg2 == 'x' || arg2 == 'y' || arg2 == 'A' || arg2 == 'V' || arg2 == 'W') + i++; + } + catch(Exception _ex) { } + int l = arg1.getMaxAscent(); + int i1 = arg1.getMaxAscent() + arg1.getMaxDescent(); + int j1 = arg1.getHeight(); + Image image = arg4.createImage(i, i1); + Graphics g = image.getGraphics(); + g.setColor(Color.black); + g.fillRect(0, 0, i, i1); + g.setColor(Color.white); + g.setFont(arg0); + g.drawString(String.valueOf(arg2), 0, l); + if(arg6) + g.drawString(String.valueOf(arg2), 1, l); + int ai[] = new int[i * i1]; + PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, i, i1, ai, 0, i); + try { + pixelgrabber.grabPixels(); + } + catch(InterruptedException _ex) { + return; + } + image.flush(); + image = null; + int k1 = 0; + int l1 = 0; + int i2 = i; + int j2 = i1; +label0: + for(int k2 = 0; k2 < i1; k2++) { + for(int l2 = 0; l2 < i; l2++) { + int j3 = ai[l2 + k2 * i]; + if((j3 & 0xffffff) == 0) + continue; + l1 = k2; + break label0; + } + + } + +label1: + for(int i3 = 0; i3 < i; i3++) { + for(int k3 = 0; k3 < i1; k3++) { + int i4 = ai[i3 + k3 * i]; + if((i4 & 0xffffff) == 0) + continue; + k1 = i3; + break label1; + } + + } + +label2: + for(int l3 = i1 - 1; l3 >= 0; l3--) { + for(int j4 = 0; j4 < i; j4++) { + int l4 = ai[j4 + l3 * i]; + if((l4 & 0xffffff) == 0) + continue; + j2 = l3 + 1; + break label2; + } + + } + +label3: + for(int k4 = i - 1; k4 >= 0; k4--) { + for(int i5 = 0; i5 < i1; i5++) { + int k5 = ai[k4 + i5 * i]; + if((k5 & 0xffffff) == 0) + continue; + i2 = k4 + 1; + break label3; + } + + } + + cae[arg3 * 9] = (byte)(cad / 16384); + cae[arg3 * 9 + 1] = (byte)(cad / 128 & 0x7f); + cae[arg3 * 9 + 2] = (byte)(cad & 0x7f); + cae[arg3 * 9 + 3] = (byte)(i2 - k1); + cae[arg3 * 9 + 4] = (byte)(j2 - l1); + cae[arg3 * 9 + 5] = (byte)k1; + cae[arg3 * 9 + 6] = (byte)(l - l1); + cae[arg3 * 9 + 7] = (byte)k; + cae[arg3 * 9 + 8] = (byte)j1; + for(int j5 = l1; j5 < j2; j5++) { + for(int l5 = k1; l5 < i2; l5++) { + int i6 = ai[l5 + j5 * i] & 0xff; + if(i6 > 30 && i6 < 230) + cac[arg5] = true; + cae[cad++] = (byte)i6; + } + + } + + } + + public void cdk(String s, int i, int k, int l, int i1) { + drawString(s, i - textWidth(s, l), k, l, i1); + } + + public void drawText(String s, int i, int k, int l, int i1) { + drawString(s, i - textWidth(s, l) / 2, k, l, i1); + } + + public void drawFloatingText(String arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + try { + int i = 0; + byte abyte0[] = gameFonts[arg3]; + int k = 0; + int l = 0; + for(int i1 = 0; i1 < arg0.length(); i1++) { + if(arg0.charAt(i1) == '@' && i1 + 4 < arg0.length() && arg0.charAt(i1 + 4) == '@') + i1 += 4; + else + if(arg0.charAt(i1) == '~' && i1 + 4 < arg0.length() && arg0.charAt(i1 + 4) == '~') + i1 += 4; + else + i += abyte0[bne[arg0.charAt(i1)] + 7]; + if(arg0.charAt(i1) == ' ') + l = i1; + if(arg0.charAt(i1) == '%') { + l = i1; + i = 1000; + } + if(i > arg5) { + if(l <= k) + l = i1; + drawText(arg0.substring(k, l), arg1, arg2, arg3, arg4); + i = 0; + k = i1 = l + 1; + arg2 += textHeightNumber(arg3); + } + } + + if(i > 0) { + drawText(arg0.substring(k), arg1, arg2, arg3, arg4); + return; + } + } + catch(Exception exception) { + System.out.println("centrepara: " + exception); + exception.printStackTrace(); + } + } + + public void drawString(String arg0, int arg1, int arg2, int arg3, int arg4) { + try { + byte abyte0[] = gameFonts[arg3]; + for(int i = 0; i < arg0.length(); i++) + if(arg0.charAt(i) == '@' && i + 4 < arg0.length() && arg0.charAt(i + 4) == '@') { + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("red")) + arg4 = 0xff0000; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("lre")) + arg4 = 0xff9040; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("yel")) + arg4 = 0xffff00; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("gre")) + arg4 = 65280; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("blu")) + arg4 = 255; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("cya")) + arg4 = 65535; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("mag")) + arg4 = 0xff00ff; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("whi")) + arg4 = 0xffffff; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("bla")) + arg4 = 0; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("dre")) + arg4 = 0xc00000; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("ora")) + arg4 = 0xff9040; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("ran")) + arg4 = (int)(Math.random() * 16777215D); + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("or1")) + arg4 = 0xffb000; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("or2")) + arg4 = 0xff7000; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("or3")) + arg4 = 0xff3000; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("gr1")) + arg4 = 0xc0ff00; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("gr2")) + arg4 = 0x80ff00; + else + if(arg0.substring(i + 1, i + 4).equalsIgnoreCase("gr3")) + arg4 = 0x40ff00; + i += 4; + } else + if(arg0.charAt(i) == '~' && i + 4 < arg0.length() && arg0.charAt(i + 4) == '~') { + char c = arg0.charAt(i + 1); + char c1 = arg0.charAt(i + 2); + char c2 = arg0.charAt(i + 3); + if(c >= '0' && c <= '9' && c1 >= '0' && c1 <= '9' && c2 >= '0' && c2 <= '9') + arg1 = Integer.parseInt(arg0.substring(i + 1, i + 4)); + i += 4; + } else { + int k = bne[arg0.charAt(i)]; + if(loggedIn && !cac[arg3] && arg4 != 0) + cea(k, arg1 + 1, arg2, 0, abyte0, cac[arg3]); + if(loggedIn && !cac[arg3] && arg4 != 0) + cea(k, arg1, arg2 + 1, 0, abyte0, cac[arg3]); + cea(k, arg1, arg2, arg4, abyte0, cac[arg3]); + arg1 += abyte0[k + 7]; + } + + return; + } + catch(Exception exception) { + System.out.println("drawstring: " + exception); + exception.printStackTrace(); + return; + } + } + + private void cea(int i, int k, int l, int i1, byte abyte0[], boolean flag) { + int j1 = k + abyte0[i + 5]; + int k1 = l - abyte0[i + 6]; + int l1 = abyte0[i + 3]; + int i2 = abyte0[i + 4]; + int j2 = abyte0[i] * 16384 + abyte0[i + 1] * 128 + abyte0[i + 2]; + int k2 = j1 + k1 * gameWidth; + int l2 = gameWidth - l1; + int i3 = 0; + if(k1 < gameUpperY) { + int j3 = gameUpperY - k1; + i2 -= j3; + k1 = gameUpperY; + j2 += j3 * l1; + k2 += j3 * gameWidth; + } + if(k1 + i2 >= gameLowerY) + i2 -= ((k1 + i2) - gameLowerY) + 1; + if(j1 < gameUpperX) { + int k3 = gameUpperX - j1; + l1 -= k3; + j1 = gameUpperX; + j2 += k3; + k2 += k3; + i3 += k3; + l2 += k3; + } + if(j1 + l1 >= gameLowerX) { + int l3 = ((j1 + l1) - gameLowerX) + 1; + l1 -= l3; + i3 += l3; + l2 += l3; + } + if(l1 > 0 && i2 > 0) { + if(flag) { + cec(pixels, abyte0, i1, j2, k2, l1, i2, l2, i3); + return; + } + ceb(pixels, abyte0, i1, j2, k2, l1, i2, l2, i3); + } + } + + private void ceb(int arg0[], byte arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8) { + try { + int i = -(arg5 >> 2); + arg5 = -(arg5 & 3); + for(int k = -arg6; k < 0; k++) { + for(int l = i; l < 0; l++) { + if(arg1[arg3++] != 0) + arg0[arg4++] = arg2; + else + arg4++; + if(arg1[arg3++] != 0) + arg0[arg4++] = arg2; + else + arg4++; + if(arg1[arg3++] != 0) + arg0[arg4++] = arg2; + else + arg4++; + if(arg1[arg3++] != 0) + arg0[arg4++] = arg2; + else + arg4++; + } + + for(int i1 = arg5; i1 < 0; i1++) + if(arg1[arg3++] != 0) + arg0[arg4++] = arg2; + else + arg4++; + + arg4 += arg7; + arg3 += arg8; + } + + return; + } + catch(Exception exception) { + System.out.println("plotletter: " + exception); + exception.printStackTrace(); + return; + } + } + + private void cec(int arg0[], byte arg1[], int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7, int arg8) { + for(int i = -arg6; i < 0; i++) { + for(int k = -arg5; k < 0; k++) { + int l = arg1[arg3++] & 0xff; + if(l > 30) { + if(l >= 230) { + arg0[arg4++] = arg2; + } else { + int i1 = arg0[arg4]; + arg0[arg4++] = ((arg2 & 0xff00ff) * l + (i1 & 0xff00ff) * (256 - l) & 0xff00ff00) + ((arg2 & 0xff00) * l + (i1 & 0xff00) * (256 - l) & 0xff0000) >> 8; + } + } else { + arg4++; + } + } + + arg4 += arg7; + arg3 += arg8; + } + + } + + public int textHeightNumber(int i) { + if(i == 0) + return 12; + if(i == 1) + return 14; + if(i == 2) + return 14; + if(i == 3) + return 15; + if(i == 4) + return 15; + if(i == 5) + return 19; + if(i == 6) + return 24; + if(i == 7) + return 29; + else + return cee(i); + } + + public int cee(int i) { + if(i == 0) + return gameFonts[i][8] - 2; + else + return gameFonts[i][8] - 1; + } + + public int textWidth(String arg0, int arg1) { + int i = 0; + byte abyte0[] = gameFonts[arg1]; + for(int k = 0; k < arg0.length(); k++) + if(arg0.charAt(k) == '@' && k + 4 < arg0.length() && arg0.charAt(k + 4) == '@') + k += 4; + else + if(arg0.charAt(k) == '~' && k + 4 < arg0.length() && arg0.charAt(k + 4) == '~') + k += 4; + else + i += abyte0[bne[arg0.charAt(k)] + 7]; + + return i; + } + + public boolean imageUpdate(Image image, int i, int k, int l, int i1, int j1) { + return true; + } + + public void drawPixels(int pixels[][], int drawx, int drawy, int width, int height) { + for(int x = drawx; x < drawx + width; x++) + for(int y = drawy; y < drawy + height; y++) + this.pixels[x + y * gameWidth] = pixels[x - drawx][y - drawy]; + } + + public static int addFont(byte bytes[]) { + gameFonts[currentFont] = bytes; + return currentFont++; + } + + public int gameWidth; + public int gameHeight; + public int area; + public int width; + public int height; + ColorModel colorModel; + public int pixels[]; + ImageConsumer imageConsumer; + public Image image; + public int pictureColors[][]; + public byte bmd[][]; + public int bme[][]; + public int pictureWidth[]; + public int pictureHeight[]; + public int pictureOffsetX[]; + public int pictureOffsetY[]; + public int pictureAssumedWidth[]; + public int pictureAssumedHeight[]; + public boolean pictureRequiresShift[]; + private int gameUpperY; + private int gameLowerY; + private int gameUpperX; + private int gameLowerX; + public boolean interlace; + static byte gameFonts[][] = new byte[50][]; + static int bne[]; + public boolean loggedIn; + int bng[]; + int bnh[]; + int bni[]; + int bnj[]; + int bnk[]; + int bnl[]; + int bnm[]; + public static int bnn; + public static int caa; + public static int cab; + private static boolean cac[] = new boolean[12]; + private static int cad; + private static byte cae[] = new byte[0x186a0]; + public static int caf; + static int currentFont; + + static { + String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"\243$%^&*()-_=+[{]};:'@#~,<.>/?\\| "; + bne = new int[256]; + for(int i = 0; i < 256; i++) { + int k = s.indexOf(i); + if(k == -1) + k = 74; + bne[i] = k * 9; + } + + } +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameImageMiddleMan.java b/clients/clientRSC/src/main/java/mudclient/GameImageMiddleMan.java new file mode 100755 index 0000000..d11bbd6 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameImageMiddleMan.java @@ -0,0 +1,34 @@ +package mudclient; + +import java.awt.Component; + +public final class GameImageMiddleMan extends GameImage { + + public GameImageMiddleMan(int i, int l, int i1, Component c) { + super(i, l, i1, c); + } + + public final void drawVisibleEntity(int i, int l, int i1, int j1, int k1, int l1, int i2) { + if(k1 >= 50000) { + gameReference.drawTeleBubble(i, l, i1, j1, k1 - 50000, l1, i2); + return; + } + if(k1 >= 40000) { + gameReference.drawItem(i, l, i1, j1, k1 - 40000, l1, i2); + return; + } + if(k1 >= 20000) { + gameReference.drawNPC(i, l, i1, j1, k1 - 20000, l1, i2); + return; + } + if(k1 >= 5000) { + gameReference.drawPlayer(i, l, i1, j1, k1 - 5000, l1, i2); + return; + } else { + super.ccc(i, l, i1, j1, k1); + return; + } + } + + public mudclient gameReference; +} diff --git a/clients/clientRSC/src/main/java/mudclient/GameObject.java b/clients/clientRSC/src/main/java/mudclient/GameObject.java new file mode 100755 index 0000000..3b9f2c8 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/GameObject.java @@ -0,0 +1,1079 @@ +package mudclient; + +import java.io.*; + +public class GameObject { + + public GameObject(int arg0, int arg1) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + cli(arg0, arg1); + cje = new int[arg1][1]; + for(int j = 0; j < arg1; j++) + cje[j][0] = j; + + } + + public GameObject(int j, int k, boolean flag, boolean flag1, boolean flag2, boolean flag3, boolean flag4) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + chn = flag; + cia = flag1; + cib = flag2; + cic = flag3; + cid = flag4; + cli(j, k); + } + + private void cli(int arg0, int arg1) { + cil = new int[arg0]; + cim = new int[arg0]; + cin = new int[arg0]; + cfn = new int[arg0]; + cga = new byte[arg0]; + cgc = new int[arg1]; + cgd = new int[arg1][]; + cge = new int[arg1]; + cgf = new int[arg1]; + cgi = new int[arg1]; + cgh = new int[arg1]; + cgg = new int[arg1]; + if(!cid) { + cfi = new int[arg0]; + cfj = new int[arg0]; + cfk = new int[arg0]; + cfl = new int[arg0]; + cfm = new int[arg0]; + } + if(!cic) { + chm = new byte[arg1]; + entityType = new int[arg1]; + } + if(chn) { + cja = cil; + cjb = cim; + cjc = cin; + } else { + cja = new int[arg0]; + cjb = new int[arg0]; + cjc = new int[arg0]; + } + if(!cib || !cia) { + cgj = new int[arg1]; + cgk = new int[arg1]; + cgl = new int[arg1]; + } + if(!cia) { + cjf = new int[arg1]; + cjg = new int[arg1]; + cjh = new int[arg1]; + cji = new int[arg1]; + cjj = new int[arg1]; + cjk = new int[arg1]; + } + cgb = 0; + cfh = 0; + cik = arg0; + cjd = arg1; + cjl = cjm = cjn = 0; + cka = ckb = ckc = 0; + ckd = cke = ckf = 256; + ckg = ckh = cki = ckj = ckk = ckl = 256; + ckm = 0; + } + + public void clj() { + cfi = new int[cfh]; + cfj = new int[cfh]; + cfk = new int[cfh]; + cfl = new int[cfh]; + cfm = new int[cfh]; + } + + public void clk() { + cgb = 0; + cfh = 0; + } + + public void cll(int j, int k) { + cgb -= j; + if(cgb < 0) + cgb = 0; + cfh -= k; + if(cfh < 0) + cfh = 0; + } + + public GameObject(byte arg0[], int arg1, boolean arg2) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + int j = DataOperations.getShort(arg0, arg1); + arg1 += 2; + int k = DataOperations.getShort(arg0, arg1); + arg1 += 2; + cli(j, k); + cje = new int[k][1]; + for(int l = 0; l < j; l++) { + cil[l] = DataOperations.getShort2(arg0, arg1); + arg1 += 2; + } + + for(int i1 = 0; i1 < j; i1++) { + cim[i1] = DataOperations.getShort2(arg0, arg1); + arg1 += 2; + } + + for(int j1 = 0; j1 < j; j1++) { + cin[j1] = DataOperations.getShort2(arg0, arg1); + arg1 += 2; + } + + cfh = j; + for(int k1 = 0; k1 < k; k1++) + cgc[k1] = arg0[arg1++] & 0xff; + + for(int l1 = 0; l1 < k; l1++) { + cge[l1] = DataOperations.getShort2(arg0, arg1); + arg1 += 2; + if(cge[l1] == 32767) + cge[l1] = cij; + } + + for(int i2 = 0; i2 < k; i2++) { + cgf[i2] = DataOperations.getShort2(arg0, arg1); + arg1 += 2; + if(cgf[i2] == 32767) + cgf[i2] = cij; + } + + for(int j2 = 0; j2 < k; j2++) { + int k2 = arg0[arg1++] & 0xff; + if(k2 == 0) + cgi[j2] = 0; + else + cgi[j2] = cij; + } + + for(int l2 = 0; l2 < k; l2++) { + cgd[l2] = new int[cgc[l2]]; + for(int i3 = 0; i3 < cgc[l2]; i3++) + if(j < 256) { + cgd[l2][i3] = arg0[arg1++] & 0xff; + } else { + cgd[l2][i3] = DataOperations.getShort(arg0, arg1); + arg1 += 2; + } + + } + + cgb = k; + cgn = 1; + } + + public GameObject(String arg0) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + byte abyte0[] = null; + try { + java.io.InputStream inputstream = DataOperations.openInputStream(arg0); + DataInputStream datainputstream = new DataInputStream(inputstream); + abyte0 = new byte[3]; + clg = 0; + for(int j = 0; j < 3; j += datainputstream.read(abyte0, j, 3 - j)); + int l = cnm(abyte0); + abyte0 = new byte[l]; + clg = 0; + for(int k = 0; k < l; k += datainputstream.read(abyte0, k, l - k)); + datainputstream.close(); + } + catch(IOException _ex) { + cfh = 0; + cgb = 0; + return; + } + int i1 = cnm(abyte0); + int j1 = cnm(abyte0); + cli(i1, j1); + cje = new int[j1][]; + for(int k3 = 0; k3 < i1; k3++) { + int k1 = cnm(abyte0); + int l1 = cnm(abyte0); + int i2 = cnm(abyte0); + cln(k1, l1, i2); + } + + for(int l3 = 0; l3 < j1; l3++) { + int j2 = cnm(abyte0); + int k2 = cnm(abyte0); + int l2 = cnm(abyte0); + int i3 = cnm(abyte0); + cle = cnm(abyte0); + clf = cnm(abyte0); + int j3 = cnm(abyte0); + int ai[] = new int[j2]; + for(int i4 = 0; i4 < j2; i4++) + ai[i4] = cnm(abyte0); + + int ai1[] = new int[i3]; + for(int j4 = 0; j4 < i3; j4++) + ai1[j4] = cnm(abyte0); + + int k4 = cmb(j2, ai, k2, l2); + cje[l3] = ai1; + if(j3 == 0) + cgi[k4] = 0; + else + cgi[k4] = cij; + } + + cgn = 1; + } + + public GameObject(GameObject ai[], int j, boolean flag, boolean flag1, boolean flag2, boolean flag3) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + chn = flag; + cia = flag1; + cib = flag2; + cic = flag3; + clm(ai, j, false); + } + + public GameObject(GameObject ai[], int j) { + cgn = 1; + cha = true; + chh = true; + chi = false; + isGiantCrystal = false; + index = -1; + chn = false; + cia = false; + cib = false; + cic = false; + cid = false; + cij = 0xbc614e; + ckn = 0xbc614e; + cla = 180; + clb = 155; + clc = 95; + cld = 256; + cle = 512; + clf = 32; + clm(ai, j, true); + } + + public void clm(GameObject arg0[], int arg1, boolean arg2) { + int j = 0; + int k = 0; + for(int l = 0; l < arg1; l++) { + j += arg0[l].cgb; + k += arg0[l].cfh; + } + + cli(k, j); + if(arg2) + cje = new int[j][]; + for(int i1 = 0; i1 < arg1; i1++) { + GameObject j1 = arg0[i1]; + j1.cni(); + clf = j1.clf; + cle = j1.cle; + cla = j1.cla; + clb = j1.clb; + clc = j1.clc; + cld = j1.cld; + for(int k1 = 0; k1 < j1.cgb; k1++) { + int ai[] = new int[j1.cgc[k1]]; + int ai1[] = j1.cgd[k1]; + for(int l1 = 0; l1 < j1.cgc[k1]; l1++) + ai[l1] = cln(j1.cil[ai1[l1]], j1.cim[ai1[l1]], j1.cin[ai1[l1]]); + + int i2 = cmb(j1.cgc[k1], ai, j1.cge[k1], j1.cgf[k1]); + cgi[i2] = j1.cgi[k1]; + cgh[i2] = j1.cgh[k1]; + cgg[i2] = j1.cgg[k1]; + if(arg2) + if(arg1 > 1) { + cje[i2] = new int[j1.cje[k1].length + 1]; + cje[i2][0] = i1; + for(int j2 = 0; j2 < j1.cje[k1].length; j2++) + cje[i2][j2 + 1] = j1.cje[k1][j2]; + + } else { + cje[i2] = new int[j1.cje[k1].length]; + for(int k2 = 0; k2 < j1.cje[k1].length; k2++) + cje[i2][k2] = j1.cje[k1][k2]; + + } + } + + } + + cgn = 1; + } + + public int cln(int arg0, int arg1, int arg2) { + for(int j = 0; j < cfh; j++) + if(cil[j] == arg0 && cim[j] == arg1 && cin[j] == arg2) + return j; + + if(cfh >= cik) { + return -1; + } else { + cil[cfh] = arg0; + cim[cfh] = arg1; + cin[cfh] = arg2; + return cfh++; + } + } + + public int cma(int j, int k, int l) { + if(cfh >= cik) { + return -1; + } else { + cil[cfh] = j; + cim[cfh] = k; + cin[cfh] = l; + return cfh++; + } + } + + public int cmb(int j, int ai[], int k, int l) { + if(cgb >= cjd) { + return -1; + } else { + cgc[cgb] = j; + cgd[cgb] = ai; + cge[cgb] = k; + cgf[cgb] = l; + cgn = 1; + return cgb++; + } + } + + public GameObject[] cmc(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, + boolean arg7) { + cni(); + int ai[] = new int[arg5]; + int ai1[] = new int[arg5]; + for(int j = 0; j < arg5; j++) { + ai[j] = 0; + ai1[j] = 0; + } + + for(int k = 0; k < cgb; k++) { + int l = 0; + int i1 = 0; + int k1 = cgc[k]; + int ai3[] = cgd[k]; + for(int k2 = 0; k2 < k1; k2++) { + l += cil[ai3[k2]]; + i1 += cin[ai3[k2]]; + } + + int i3 = l / (k1 * arg2) + (i1 / (k1 * arg3)) * arg4; + ai[i3] += k1; + ai1[i3]++; + } + + GameObject ai2[] = new GameObject[arg5]; + for(int j1 = 0; j1 < arg5; j1++) { + if(ai[j1] > arg6) + ai[j1] = arg6; + ai2[j1] = new GameObject(ai[j1], ai1[j1], true, true, true, arg7, true); + ai2[j1].cle = cle; + ai2[j1].clf = clf; + } + + for(int l1 = 0; l1 < cgb; l1++) { + int i2 = 0; + int l2 = 0; + int j3 = cgc[l1]; + int ai4[] = cgd[l1]; + for(int k3 = 0; k3 < j3; k3++) { + i2 += cil[ai4[k3]]; + l2 += cin[ai4[k3]]; + } + + int l3 = i2 / (j3 * arg2) + (l2 / (j3 * arg3)) * arg4; + cmd(ai2[l3], ai4, j3, l1); + } + + for(int j2 = 0; j2 < arg5; j2++) + ai2[j2].clj(); + + return ai2; + } + + public void cmd(GameObject arg0, int arg1[], int arg2, int arg3) { + int ai[] = new int[arg2]; + for(int j = 0; j < arg2; j++) { + int k = ai[j] = arg0.cln(cil[arg1[j]], cim[arg1[j]], cin[arg1[j]]); + arg0.cfn[k] = cfn[arg1[j]]; + arg0.cga[k] = cga[arg1[j]]; + } + + int l = arg0.cmb(arg2, ai, cge[arg3], cgf[arg3]); + if(!arg0.cic && !cic) + arg0.entityType[l] = entityType[arg3]; + arg0.cgi[l] = cgi[arg3]; + arg0.cgh[l] = cgh[arg3]; + arg0.cgg[l] = cgg[arg3]; + } + + public void cme(boolean arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + clf = 256 - arg1 * 4; + cle = (64 - arg2) * 16 + 128; + if(cib) + return; + for(int j = 0; j < cgb; j++) + if(arg0) + cgi[j] = cij; + else + cgi[j] = 0; + + cla = arg3; + clb = arg4; + clc = arg5; + cld = (int)Math.sqrt(arg3 * arg3 + arg4 * arg4 + arg5 * arg5); + cne(); + } + + public void cmf(int j, int k, int l, int i1, int j1) { + clf = 256 - j * 4; + cle = (64 - k) * 16 + 128; + if(cib) { + return; + } else { + cla = l; + clb = i1; + clc = j1; + cld = (int)Math.sqrt(l * l + i1 * i1 + j1 * j1); + cne(); + return; + } + } + + public void cmg(int j, int k, int l) { + if(cib) { + return; + } else { + cla = j; + clb = k; + clc = l; + cld = (int)Math.sqrt(j * j + k * k + l * l); + cne(); + return; + } + } + + public void cmh(int j, int k) { + cga[j] = (byte)k; + } + + public void cmi(int j, int k, int l) { + cka = cka + j & 0xff; + ckb = ckb + k & 0xff; + ckc = ckc + l & 0xff; + cmm(); + cgn = 1; + } + + public void cmj(int j, int k, int l) { + cka = j & 0xff; + ckb = k & 0xff; + ckc = l & 0xff; + cmm(); + cgn = 1; + } + + public void cmk(int j, int k, int l) { + cjl += j; + cjm += k; + cjn += l; + cmm(); + cgn = 1; + } + + public void cml(int j, int k, int l) { + cjl = j; + cjm = k; + cjn = l; + cmm(); + cgn = 1; + } + + private void cmm() { + if(ckg != 256 || ckh != 256 || cki != 256 || ckj != 256 || ckk != 256 || ckl != 256) { + ckm = 4; + return; + } + if(ckd != 256 || cke != 256 || ckf != 256) { + ckm = 3; + return; + } + if(cka != 0 || ckb != 0 || ckc != 0) { + ckm = 2; + return; + } + if(cjl != 0 || cjm != 0 || cjn != 0) { + ckm = 1; + return; + } else { + ckm = 0; + return; + } + } + + private void cmn(int arg0, int arg1, int arg2) { + for(int j = 0; j < cfh; j++) { + cja[j] += arg0; + cjb[j] += arg1; + cjc[j] += arg2; + } + + } + + private void cna(int arg0, int arg1, int arg2) { + for(int k2 = 0; k2 < cfh; k2++) { + if(arg2 != 0) { + int j = cie[arg2]; + int i1 = cie[arg2 + 256]; + int l1 = cjb[k2] * j + cja[k2] * i1 >> 15; + cjb[k2] = cjb[k2] * i1 - cja[k2] * j >> 15; + cja[k2] = l1; + } + if(arg0 != 0) { + int k = cie[arg0]; + int j1 = cie[arg0 + 256]; + int i2 = cjb[k2] * j1 - cjc[k2] * k >> 15; + cjc[k2] = cjb[k2] * k + cjc[k2] * j1 >> 15; + cjb[k2] = i2; + } + if(arg1 != 0) { + int l = cie[arg1]; + int k1 = cie[arg1 + 256]; + int j2 = cjc[k2] * l + cja[k2] * k1 >> 15; + cjc[k2] = cjc[k2] * k1 - cja[k2] * l >> 15; + cja[k2] = j2; + } + } + + } + + private void cnb(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { + for(int j = 0; j < cfh; j++) { + if(arg0 != 0) + cja[j] += cjb[j] * arg0 >> 8; + if(arg1 != 0) + cjc[j] += cjb[j] * arg1 >> 8; + if(arg2 != 0) + cja[j] += cjc[j] * arg2 >> 8; + if(arg3 != 0) + cjb[j] += cjc[j] * arg3 >> 8; + if(arg4 != 0) + cjc[j] += cja[j] * arg4 >> 8; + if(arg5 != 0) + cjb[j] += cja[j] * arg5 >> 8; + } + + } + + private void cnc(int arg0, int arg1, int arg2) { + for(int j = 0; j < cfh; j++) { + cja[j] = cja[j] * arg0 >> 8; + cjb[j] = cjb[j] * arg1 >> 8; + cjc[j] = cjc[j] * arg2 >> 8; + } + + } + + private void cnd() { + chb = chd = chf = 0xf423f; + ckn = chc = che = chg = 0xfff0bdc1; + for(int j = 0; j < cgb; j++) { + int ai[] = cgd[j]; + int l = ai[0]; + int j1 = cgc[j]; + int k1; + int l1 = k1 = cja[l]; + int i2; + int j2 = i2 = cjb[l]; + int k2; + int l2 = k2 = cjc[l]; + for(int k = 0; k < j1; k++) { + int i1 = ai[k]; + if(cja[i1] < k1) + k1 = cja[i1]; + else + if(cja[i1] > l1) + l1 = cja[i1]; + if(cjb[i1] < i2) + i2 = cjb[i1]; + else + if(cjb[i1] > j2) + j2 = cjb[i1]; + if(cjc[i1] < k2) + k2 = cjc[i1]; + else + if(cjc[i1] > l2) + l2 = cjc[i1]; + } + + if(!cia) { + cjf[j] = k1; + cjg[j] = l1; + cjh[j] = i2; + cji[j] = j2; + cjj[j] = k2; + cjk[j] = l2; + } + if(l1 - k1 > ckn) + ckn = l1 - k1; + if(j2 - i2 > ckn) + ckn = j2 - i2; + if(l2 - k2 > ckn) + ckn = l2 - k2; + if(k1 < chb) + chb = k1; + if(l1 > chc) + chc = l1; + if(i2 < chd) + chd = i2; + if(j2 > che) + che = j2; + if(k2 < chf) + chf = k2; + if(l2 > chg) + chg = l2; + } + + } + + public void cne() { + if(cib) + return; + int j = cle * cld >> 8; + for(int k = 0; k < cgb; k++) + if(cgi[k] != cij) + cgi[k] = (cgj[k] * cla + cgk[k] * clb + cgl[k] * clc) / j; + + int ai[] = new int[cfh]; + int ai1[] = new int[cfh]; + int ai2[] = new int[cfh]; + int ai3[] = new int[cfh]; + for(int l = 0; l < cfh; l++) { + ai[l] = 0; + ai1[l] = 0; + ai2[l] = 0; + ai3[l] = 0; + } + + for(int i1 = 0; i1 < cgb; i1++) + if(cgi[i1] == cij) { + for(int j1 = 0; j1 < cgc[i1]; j1++) { + int l1 = cgd[i1][j1]; + ai[l1] += cgj[i1]; + ai1[l1] += cgk[i1]; + ai2[l1] += cgl[i1]; + ai3[l1]++; + } + + } + + for(int k1 = 0; k1 < cfh; k1++) + if(ai3[k1] > 0) + cfn[k1] = (ai[k1] * cla + ai1[k1] * clb + ai2[k1] * clc) / (j * ai3[k1]); + + } + + public void cnf() { + if(cib && cia) + return; + for(int j = 0; j < cgb; j++) { + int ai[] = cgd[j]; + int k = cja[ai[0]]; + int l = cjb[ai[0]]; + int i1 = cjc[ai[0]]; + int j1 = cja[ai[1]] - k; + int k1 = cjb[ai[1]] - l; + int l1 = cjc[ai[1]] - i1; + int i2 = cja[ai[2]] - k; + int j2 = cjb[ai[2]] - l; + int k2 = cjc[ai[2]] - i1; + int l2 = k1 * k2 - j2 * l1; + int i3 = l1 * i2 - k2 * j1; + int j3; + for(j3 = j1 * j2 - i2 * k1; l2 > 8192 || i3 > 8192 || j3 > 8192 || l2 < -8192 || i3 < -8192 || j3 < -8192; j3 >>= 1) { + l2 >>= 1; + i3 >>= 1; + } + + int k3 = (int)(256D * Math.sqrt(l2 * l2 + i3 * i3 + j3 * j3)); + if(k3 <= 0) + k3 = 1; + cgj[j] = (l2 * 0x10000) / k3; + cgk[j] = (i3 * 0x10000) / k3; + cgl[j] = (j3 * 65535) / k3; + cgh[j] = -1; + } + + cne(); + } + + public void cng() { + if(cgn == 2) { + cgn = 0; + for(int j = 0; j < cfh; j++) { + cja[j] = cil[j]; + cjb[j] = cim[j]; + cjc[j] = cin[j]; + } + + chb = chd = chf = 0xff676981; + ckn = chc = che = chg = 0x98967f; + return; + } + if(cgn == 1) { + cgn = 0; + for(int k = 0; k < cfh; k++) { + cja[k] = cil[k]; + cjb[k] = cim[k]; + cjc[k] = cin[k]; + } + + if(ckm >= 2) + cna(cka, ckb, ckc); + if(ckm >= 3) + cnc(ckd, cke, ckf); + if(ckm >= 4) + cnb(ckg, ckh, cki, ckj, ckk, ckl); + if(ckm >= 1) + cmn(cjl, cjm, cjn); + cnd(); + cnf(); + } + } + + public void cnh(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, + int arg7) { + cng(); + if(chf > Camera.bgj || chg < Camera.bgi || chb > Camera.bgf || chc < Camera.bge || chd > Camera.bgh || che < Camera.bgg) { + cha = false; + return; + } + cha = true; + int i1 = 0; + int j1 = 0; + int k1 = 0; + int l1 = 0; + int i2 = 0; + int j2 = 0; + if(arg5 != 0) { + i1 = cif[arg5]; + j1 = cif[arg5 + 1024]; + } + if(arg4 != 0) { + i2 = cif[arg4]; + j2 = cif[arg4 + 1024]; + } + if(arg3 != 0) { + k1 = cif[arg3]; + l1 = cif[arg3 + 1024]; + } + for(int k2 = 0; k2 < cfh; k2++) { + int l2 = cja[k2] - arg0; + int i3 = cjb[k2] - arg1; + int j3 = cjc[k2] - arg2; + if(arg5 != 0) { + int j = i3 * i1 + l2 * j1 >> 15; + i3 = i3 * j1 - l2 * i1 >> 15; + l2 = j; + } + if(arg4 != 0) { + int k = j3 * i2 + l2 * j2 >> 15; + j3 = j3 * j2 - l2 * i2 >> 15; + l2 = k; + } + if(arg3 != 0) { + int l = i3 * l1 - j3 * k1 >> 15; + j3 = i3 * k1 + j3 * l1 >> 15; + i3 = l; + } + if(j3 >= arg7) + cfl[k2] = (l2 << arg6) / j3; + else + cfl[k2] = l2 << arg6; + if(j3 >= arg7) + cfm[k2] = (i3 << arg6) / j3; + else + cfm[k2] = i3 << arg6; + cfi[k2] = l2; + cfj[k2] = i3; + cfk[k2] = j3; + } + + } + + public void cni() { + cng(); + for(int j = 0; j < cfh; j++) { + cil[j] = cja[j]; + cim[j] = cjb[j]; + cin[j] = cjc[j]; + } + + cjl = cjm = cjn = 0; + cka = ckb = ckc = 0; + ckd = cke = ckf = 256; + ckg = ckh = cki = ckj = ckk = ckl = 256; + ckm = 0; + } + + public GameObject cnj() { + GameObject ai[] = new GameObject[1]; + ai[0] = this; + GameObject j = new GameObject(ai, 1); + j.cgm = cgm; + j.isGiantCrystal = isGiantCrystal; + return j; + } + + public GameObject cnk(boolean flag, boolean flag1, boolean flag2, boolean flag3) { + GameObject ai[] = new GameObject[1]; + ai[0] = this; + GameObject j = new GameObject(ai, 1, flag, flag1, flag2, flag3); + j.cgm = cgm; + return j; + } + + public void cnl(GameObject j) { + cka = j.cka; + ckb = j.ckb; + ckc = j.ckc; + cjl = j.cjl; + cjm = j.cjm; + cjn = j.cjn; + cmm(); + cgn = 1; + } + + public int cnm(byte arg0[]) { + for(; arg0[clg] == 10 || arg0[clg] == 13; clg++); + int j = cih[arg0[clg++] & 0xff]; + int k = cih[arg0[clg++] & 0xff]; + int l = cih[arg0[clg++] & 0xff]; + int i1 = (j * 4096 + k * 64 + l) - 0x20000; + if(i1 == 0x1e240) + i1 = cij; + return i1; + } + + public int cfh; + public int cfi[]; + public int cfj[]; + public int cfk[]; + public int cfl[]; + public int cfm[]; + public int cfn[]; + public byte cga[]; + public int cgb; + public int cgc[]; + public int cgd[][]; + public int cge[]; + public int cgf[]; + public int cgg[]; + public int cgh[]; + public int cgi[]; + public int cgj[]; + public int cgk[]; + public int cgl[]; + public int cgm; + public int cgn; + public boolean cha; + public int chb; + public int chc; + public int chd; + public int che; + public int chf; + public int chg; + public boolean chh; + public boolean chi; + public boolean isGiantCrystal; + public int index; + public int entityType[]; + public byte chm[]; + private boolean chn; + public boolean cia; + public boolean cib; + public boolean cic; + public boolean cid; + private static int cie[]; + private static int cif[]; + private static byte cig[]; + private static int cih[]; + private int cij; + public int cik; + public int cil[]; + public int cim[]; + public int cin[]; + public int cja[]; + public int cjb[]; + public int cjc[]; + private int cjd; + private int cje[][]; + private int cjf[]; + private int cjg[]; + private int cjh[]; + private int cji[]; + private int cjj[]; + private int cjk[]; + private int cjl; + private int cjm; + private int cjn; + private int cka; + private int ckb; + private int ckc; + private int ckd; + private int cke; + private int ckf; + private int ckg; + private int ckh; + private int cki; + private int ckj; + private int ckk; + private int ckl; + private int ckm; + private int ckn; + private int cla; + private int clb; + private int clc; + private int cld; + protected int cle; + protected int clf; + private int clg; + + static { + cie = new int[512]; + cif = new int[2048]; + cig = new byte[64]; + cih = new int[256]; + for(int j = 0; j < 256; j++) { + cie[j] = (int)(Math.sin((double)j * 0.02454369D) * 32768D); + cie[j + 256] = (int)(Math.cos((double)j * 0.02454369D) * 32768D); + } + + for(int k = 0; k < 1024; k++) { + cif[k] = (int)(Math.sin((double)k * 0.00613592315D) * 32768D); + cif[k + 1024] = (int)(Math.cos((double)k * 0.00613592315D) * 32768D); + } + + for(int l = 0; l < 10; l++) + cig[l] = (byte)(48 + l); + + for(int i1 = 0; i1 < 26; i1++) + cig[i1 + 10] = (byte)(65 + i1); + + for(int j1 = 0; j1 < 26; j1++) + cig[j1 + 36] = (byte)(97 + j1); + + cig[62] = -93; + cig[63] = 36; + for(int k1 = 0; k1 < 10; k1++) + cih[48 + k1] = k1; + + for(int l1 = 0; l1 < 26; l1++) + cih[65 + l1] = l1 + 10; + + for(int i2 = 0; i2 < 26; i2++) + cih[97 + i2] = i2 + 36; + + cih[163] = 62; + cih[36] = 63; + } +} diff --git a/clients/clientRSC/src/main/java/mudclient/Loader.java b/clients/clientRSC/src/main/java/mudclient/Loader.java new file mode 100755 index 0000000..570b0b2 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Loader.java @@ -0,0 +1,159 @@ +package mudclient; + +import java.applet.Applet; +import java.awt.Graphics; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URL; + +@SuppressWarnings("serial") +public class Loader extends Applet implements Runnable { + + private mudclient client; + private boolean running; + private String files[]; + + public void init() { + running = false; + files = new String[] { + "config.jag", "entity.jag", "entity.mem", "filter.jag", "fonts.jag", + "land.jag", "land.mem", "maps.jag", "maps.mem", "media.jag", "models.jag", + "sounds.mem", "textures.jag" + }; + new Thread(this).start(); + while(!running) + try { + Thread.sleep(100); + } catch(Exception e) { } + new Thread(this).start(); + } + + public void run() { + if(running) { + runGame(); + return; + } + running = true; + try { + link.gameApplet = this; + link.currentFile = 0; + for(int i = 0; i < files.length; i++) { + byte bytes[] = load(files[i]); + link.addFile(files[i], bytes); + } + client = new mudclient(); + client.init(); + client.start(); + this.addKeyListener(client); + this.addMouseListener(client); + this.addMouseMotionListener(client); + } catch(Exception e) { + e.printStackTrace(); + } + } + + private byte[] load(String file) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte buffer[] = new byte[4096]; + int read = 0; + try { + InputStream in = getClass().getResourceAsStream("/" + file); + while((read = in.read(buffer)) > 0) { + baos.write(buffer, 0, read); + buffer = new byte[4096]; + } + in.close(); + baos.close(); + return baos.toByteArray(); + } catch(Exception e) { } + baos.reset(); + buffer = new byte[4096]; + read = 0; + try { + InputStream in = new FileInputStream(new File(Config.CONF_DIR, file)); + while((read = in.read(buffer)) > 0) { + baos.write(buffer, 0, read); + buffer = new byte[4096]; + } + in.close(); + baos.close(); + return baos.toByteArray(); + } catch(Exception e) { } + baos.reset(); + buffer = new byte[4096]; + read = 0; + try { + InputStream in = (new URL(Config.CACHE_URL)).openStream(); + while((read = in.read(buffer)) > 0) { + baos.write(buffer, 0, read); + buffer = new byte[4096]; + } + in.close(); + baos.close(); + return baos.toByteArray(); + } catch(Exception e) { } + return null; + } + + private void runGame() { + while(true) { + if(link.port != 0) { + try { + Socket socket = new Socket(InetAddress.getByName(Config.SERVER_IP), link.port); + socket.setSoTimeout(30000); + socket.setTcpNoDelay(true); + link.socket = socket; + } catch(Exception e) { + e.printStackTrace(); + link.socket = null; + } + link.port = 0; + } + if(link.thread != null) { + Thread thread = new Thread(link.thread); + thread.setDaemon(true); + thread.start(); + link.thread = null; + } + if(link.iplookup != null) { + String s = "unknown"; + try { + s = InetAddress.getByName(link.iplookup).getHostName(); + } catch(Exception e) { } + link.address = s; + link.iplookup = null; + } + try { + Thread.sleep(100); + } catch(Exception e) { } + } + } + + public void update(Graphics g) { + paint(g); + } + + public void paint(Graphics g) { + if(client != null) + client.paint(g); + } + + public void start() { + if(client != null) + client.start(); + } + + public void stop() { + if(client != null) + client.stop(); + } + + public void destroy() { + if(client != null) + client.destroy(); + } +} diff --git a/clients/clientRSC/src/main/java/mudclient/LoginDataEncryption.java b/clients/clientRSC/src/main/java/mudclient/LoginDataEncryption.java new file mode 100755 index 0000000..3635c11 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/LoginDataEncryption.java @@ -0,0 +1,80 @@ +package mudclient; + +import javax.crypto.Cipher; +import java.math.BigInteger; +import java.security.KeyFactory; +import java.security.PublicKey; +import java.security.spec.X509EncodedKeySpec; + +public class LoginDataEncryption { + + public void addByte(int i) { + packet[offset++] = (byte) i; + } + + public void addInt(int i) { + packet[offset++] = (byte) (i >> 24); + packet[offset++] = (byte) (i >> 16); + packet[offset++] = (byte) (i >> 8); + packet[offset++] = (byte) i; + } + + @SuppressWarnings("deprecation") + public void addString(String s) { + s.getBytes(0, s.length(), packet, offset); + offset += s.length(); + packet[offset++] = 10; + } + + public void addBytes(byte bytes[], int offset, int length) { + for (int i = offset; i < offset + length; i++) + packet[this.offset++] = bytes[i]; + + } + + public int getByte() { + return packet[offset++] & 0xff; + } + + public int getShort() { + offset += 2; + return ((packet[offset - 2] & 0xff) << 8) + (packet[offset - 1] & 0xff); + } + + public int getInt() { + offset += 4; + return ((packet[offset - 4] & 0xff) << 24) + ((packet[offset - 3] & 0xff) << 16) + ((packet[offset - 2] & 0xff) << 8) + (packet[offset - 1] & 0xff); + } + + public void getBytes(byte arg0[], int arg1, int arg2) { + for (int i = arg1; i < arg1 + arg2; i++) + arg0[i] = packet[offset++]; + + } + + public byte[] encrypt(byte text[]) throws Exception { + byte cipherText[] = null; + Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); + cipher.init(Cipher.ENCRYPT_MODE, pubKey); + cipherText = cipher.doFinal(text); + return cipherText; + } + + public LoginDataEncryption(byte abyte0[]) { + packet = abyte0; + offset = 0; + try { + if (customPublicKey == null) + pubKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(new BigInteger("258483531987721813854435365666199783121097212864526576114955744050873252978581213214062885665119329089273296913884093898593877564098511382732309048889240854054459372263273672334107564088395710980478911359605768175143527864461996266529749955416370971506195317045377519645018157466830930794446490944537605962330090699836840861268493872513762630835769942133970804813091619416385064187784658945").toByteArray())); + else + pubKey = customPublicKey; + } catch (Exception e) { + } + } + + public byte packet[]; + public int offset; + private PublicKey pubKey; + + public static PublicKey customPublicKey = null; +} diff --git a/clients/clientRSC/src/main/java/mudclient/Menu.java b/clients/clientRSC/src/main/java/mudclient/Menu.java new file mode 100755 index 0000000..5aa9c91 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Menu.java @@ -0,0 +1,679 @@ +package mudclient; + +import java.awt.event.KeyEvent; + +public class Menu { + + public Menu(GameImage j1, int i) { + selectedComponent = -1; + gdg = true; + gaj = j1; + gal = i; + componentAcceptsInput = new boolean[i]; + gan = new boolean[i]; + componentIsPasswordField = new boolean[i]; + componentSkip = new boolean[i]; + componentWhiteText = new boolean[i]; + listShownEntries = new int[i]; + listLength = new int[i]; + gbe = new int[i]; + gbf = new int[i]; + componentX = new int[i]; + componentY = new int[i]; + componentType = new int[i]; + componentWidth = new int[i]; + componentHeight = new int[i]; + copmonentInputMaxLength = new int[i]; + componentTextSize = new int[i]; + componentText = new String[i]; + componentTextList = new String[i][]; + scrollBarGradientColorTop = rgbToIntMod(114, 114, 176); + scrollBarGradientColorBottom = rgbToIntMod(14, 14, 62); + scrollBarDraggingBarLine1Color = rgbToIntMod(200, 208, 232); + scrollBarDraggingBarColor = rgbToIntMod(96, 129, 184); + scrollBarDraggingBarLine2Color = rgbToIntMod(53, 95, 115); + gcn = rgbToIntMod(117, 142, 171); + gda = rgbToIntMod(98, 122, 158); + gdb = rgbToIntMod(86, 100, 136); + gdc = rgbToIntMod(135, 146, 179); + gdd = rgbToIntMod(97, 112, 151); + gde = rgbToIntMod(88, 102, 136); + gdf = rgbToIntMod(84, 93, 120); + } + + public int rgbToIntMod(int i, int k, int l) { + return GameImage.rgbToInt((redMod * i) / 114, (greenMod * k) / 114, (blueMod * l) / 176); + } + + public void mouseClick(int mouseX, int mouseY, int lastMouseButton, int mouseButton) { + this.mouseX = mouseX; + this.mouseY = mouseY; + this.mouseButton = mouseButton; + if(lastMouseButton != 0) + this.lastMouseButton = lastMouseButton; + if(lastMouseButton == 1) { + for(int i = 0; i < menuItemsCount; i++) { + if(componentAcceptsInput[i] && componentType[i] == 10 && this.mouseX >= componentX[i] && this.mouseY >= componentY[i] && this.mouseX <= componentX[i] + componentWidth[i] && this.mouseY <= componentY[i] + componentHeight[i]) + componentSkip[i] = true; + if(componentAcceptsInput[i] && componentType[i] == 14 && this.mouseX >= componentX[i] && this.mouseY >= componentY[i] && this.mouseX <= componentX[i] + componentWidth[i] && this.mouseY <= componentY[i] + componentHeight[i]) + gbe[i] = 1 - gbe[i]; + } + + } + if(mouseButton == 1) + gch++; + else + gch = 0; + if(lastMouseButton == 1 || gch > 20) { + for(int k = 0; k < menuItemsCount; k++) + if(componentAcceptsInput[k] && componentType[k] == 15 && this.mouseX >= componentX[k] && this.mouseY >= componentY[k] && this.mouseX <= componentX[k] + componentWidth[k] && this.mouseY <= componentY[k] + componentHeight[k]) + componentSkip[k] = true; + + gch -= 5; + } + } + + public boolean isClicked(int i) { + if(componentAcceptsInput[i] && componentSkip[i]) { + componentSkip[i] = false; + return true; + } else { + return false; + } + } + + public void keyPress(int key, char c) { + if(key == 0) + return; + if(selectedComponent != -1 && componentText[selectedComponent] != null && componentAcceptsInput[selectedComponent]) { + int i = componentText[selectedComponent].length(); + if(key == KeyEvent.VK_BACK_SPACE && i > 0) + componentText[selectedComponent] = componentText[selectedComponent].substring(0, i - 1); + if((key == KeyEvent.VK_ENTER) && i > 0) + componentSkip[selectedComponent] = true; + String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"\243$%^&*()-_=+[{]};:'@#~,<.>/?\\| "; + if(i < copmonentInputMaxLength[selectedComponent]) { + for(int k = 0; k < s.length(); k++) + if(c == s.charAt(k)) + componentText[selectedComponent] += c; + + } + if(key == KeyEvent.VK_TAB) { + do + selectedComponent = (selectedComponent + 1) % menuItemsCount; + while(componentType[selectedComponent] != 5 && componentType[selectedComponent] != 6); + return; + } + } + } + + public void drawMenu() { + for(int i = 0; i < menuItemsCount; i++) + if(componentAcceptsInput[i]) + if(componentType[i] == 0) + gef(i, componentX[i], componentY[i], componentText[i], componentTextSize[i]); + else + if(componentType[i] == 1) + gef(i, componentX[i] - gaj.textWidth(componentText[i], componentTextSize[i]) / 2, componentY[i], componentText[i], componentTextSize[i]); + else + if(componentType[i] == 2) + gei(componentX[i], componentY[i], componentWidth[i], componentHeight[i]); + else + if(componentType[i] == 3) + gel(componentX[i], componentY[i], componentWidth[i]); + else + if(componentType[i] == 4) + gem(i, componentX[i], componentY[i], componentWidth[i], componentHeight[i], componentTextSize[i], componentTextList[i], listLength[i], listShownEntries[i]); + else + if(componentType[i] == 5 || componentType[i] == 6) + geh(i, componentX[i], componentY[i], componentWidth[i], componentHeight[i], componentText[i], componentTextSize[i]); + else + if(componentType[i] == 7) + gfa(i, componentX[i], componentY[i], componentTextSize[i], componentTextList[i]); + else + if(componentType[i] == 8) + gfb(i, componentX[i], componentY[i], componentTextSize[i], componentTextList[i]); + else + if(componentType[i] == 9) + drawList(i, componentX[i], componentY[i], componentWidth[i], componentHeight[i], componentTextSize[i], componentTextList[i], listLength[i], listShownEntries[i]); + else + if(componentType[i] == 11) + gej(componentX[i], componentY[i], componentWidth[i], componentHeight[i]); + else + if(componentType[i] == 12) + gek(componentX[i], componentY[i], componentTextSize[i]); + else + if(componentType[i] == 14) + gee(i, componentX[i], componentY[i], componentWidth[i], componentHeight[i]); + + lastMouseButton = 0; + } + + protected void gee(int arg0, int arg1, int arg2, int arg3, int arg4) { + gaj.drawBox(arg1, arg2, arg3, arg4, 0xffffff); + gaj.drawLineX(arg1, arg2, arg3, gdc); + gaj.drawLineY(arg1, arg2, arg4, gdc); + gaj.drawLineX(arg1, (arg2 + arg4) - 1, arg3, gdf); + gaj.drawLineY((arg1 + arg3) - 1, arg2, arg4, gdf); + if(gbe[arg0] == 1) { + for(int i = 0; i < arg4; i++) { + gaj.drawLineX(arg1 + i, arg2 + i, 1, 0); + gaj.drawLineX((arg1 + arg3) - 1 - i, arg2 + i, 1, 0); + } + + } + } + + protected void gef(int i, int k, int l, String s, int i1) { + int j1 = l + gaj.textHeightNumber(i1) / 3; + geg(i, k, j1, s, i1); + } + + protected void geg(int arg0, int arg1, int arg2, String arg3, int arg4) { + int i; + if(componentWhiteText[arg0]) + i = 0xffffff; + else + i = 0; + gaj.drawString(arg3, arg1, arg2, arg4, i); + } + + protected void geh(int arg0, int arg1, int arg2, int arg3, int arg4, String arg5, int arg6) { + if(componentIsPasswordField[arg0]) { + int i = arg5.length(); + arg5 = ""; + for(int l = 0; l < i; l++) + arg5 = arg5 + "X"; + + } + if(componentType[arg0] == 5) { + if(lastMouseButton == 1 && mouseX >= arg1 && mouseY >= arg2 - arg4 / 2 && mouseX <= arg1 + arg3 && mouseY <= arg2 + arg4 / 2) + selectedComponent = arg0; + } else + if(componentType[arg0] == 6) { + if(lastMouseButton == 1 && mouseX >= arg1 - arg3 / 2 && mouseY >= arg2 - arg4 / 2 && mouseX <= arg1 + arg3 / 2 && mouseY <= arg2 + arg4 / 2) + selectedComponent = arg0; + arg1 -= gaj.textWidth(arg5, arg6) / 2; + } + if(selectedComponent == arg0) + arg5 = arg5 + "*"; + int k = arg2 + gaj.textHeightNumber(arg6) / 3; + geg(arg0, arg1, k, arg5, arg6); + } + + public void gei(int arg0, int arg1, int arg2, int arg3) { + gaj.setGameBoundaries(arg0, arg1, arg0 + arg2, arg1 + arg3); + gaj.drawGradientBox(arg0, arg1, arg2, arg3, gdf, gdc); + if(gdh) { + for(int i = arg0 - (arg1 & 0x3f); i < arg0 + arg2; i += 128) { + for(int k = arg1 - (arg1 & 0x1f); k < arg1 + arg3; k += 128) + gaj.ccd(i, k, 6 + baseScrollPic, 128); + + } + + } + gaj.drawLineX(arg0, arg1, arg2, gdc); + gaj.drawLineX(arg0 + 1, arg1 + 1, arg2 - 2, gdc); + gaj.drawLineX(arg0 + 2, arg1 + 2, arg2 - 4, gdd); + gaj.drawLineY(arg0, arg1, arg3, gdc); + gaj.drawLineY(arg0 + 1, arg1 + 1, arg3 - 2, gdc); + gaj.drawLineY(arg0 + 2, arg1 + 2, arg3 - 4, gdd); + gaj.drawLineX(arg0, (arg1 + arg3) - 1, arg2, gdf); + gaj.drawLineX(arg0 + 1, (arg1 + arg3) - 2, arg2 - 2, gdf); + gaj.drawLineX(arg0 + 2, (arg1 + arg3) - 3, arg2 - 4, gde); + gaj.drawLineY((arg0 + arg2) - 1, arg1, arg3, gdf); + gaj.drawLineY((arg0 + arg2) - 2, arg1 + 1, arg3 - 2, gdf); + gaj.drawLineY((arg0 + arg2) - 3, arg1 + 2, arg3 - 4, gde); + gaj.cai(); + } + + public void gej(int i, int k, int l, int i1) { + gaj.drawBox(i, k, l, i1, 0); + gaj.drawBoxEdge(i, k, l, i1, gcn); + gaj.drawBoxEdge(i + 1, k + 1, l - 2, i1 - 2, gda); + gaj.drawBoxEdge(i + 2, k + 2, l - 4, i1 - 4, gdb); + gaj.drawPicture(i, k, 2 + baseScrollPic); + gaj.drawPicture((i + l) - 7, k, 3 + baseScrollPic); + gaj.drawPicture(i, (k + i1) - 7, 4 + baseScrollPic); + gaj.drawPicture((i + l) - 7, (k + i1) - 7, 5 + baseScrollPic); + } + + protected void gek(int i, int k, int l) { + gaj.drawPicture(i, k, l); + } + + protected void gel(int i, int k, int l) { + gaj.drawLineX(i, k, l, 0); + } + + protected void gem(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, String arg6[], + int arg7, int arg8) { + int i = arg4 / gaj.textHeightNumber(arg5); + if(arg8 > arg7 - i) + arg8 = arg7 - i; + if(arg8 < 0) + arg8 = 0; + listShownEntries[arg0] = arg8; + if(i < arg7) { + int k = (arg1 + arg3) - 12; + int i1 = ((arg4 - 27) * i) / arg7; + if(i1 < 6) + i1 = 6; + int k1 = ((arg4 - 27 - i1) * arg8) / (arg7 - i); + if(mouseButton == 1 && mouseX >= k && mouseX <= k + 12) { + if(mouseY > arg2 && mouseY < arg2 + 12 && arg8 > 0) + arg8--; + if(mouseY > (arg2 + arg4) - 12 && mouseY < arg2 + arg4 && arg8 < arg7 - i) + arg8++; + listShownEntries[arg0] = arg8; + } + if(mouseButton == 1 && (mouseX >= k && mouseX <= k + 12 || mouseX >= k - 12 && mouseX <= k + 24 && gan[arg0])) { + if(mouseY > arg2 + 12 && mouseY < (arg2 + arg4) - 12) { + gan[arg0] = true; + int i2 = mouseY - arg2 - 12 - i1 / 2; + arg8 = (i2 * arg7) / (arg4 - 24); + if(arg8 > arg7 - i) + arg8 = arg7 - i; + if(arg8 < 0) + arg8 = 0; + listShownEntries[arg0] = arg8; + } + } else { + gan[arg0] = false; + } + k1 = ((arg4 - 27 - i1) * arg8) / (arg7 - i); + drawScrollbar(arg1, arg2, arg3, arg4, k1, i1); + } + int l = arg4 - i * gaj.textHeightNumber(arg5); + int j1 = arg2 + (gaj.textHeightNumber(arg5) * 5) / 6 + l / 2; + for(int l1 = arg8; l1 < arg7; l1++) { + geg(arg0, arg1 + 2, j1, arg6[l1], arg5); + j1 += gaj.textHeightNumber(arg5) - chatMenuTextHeightMod; + if(j1 >= arg2 + arg4) + return; + } + + } + + protected void drawScrollbar(int i, int k, int l, int i1, int j1, int k1) { + int l1 = (i + l) - 12; + gaj.drawBoxEdge(l1, k, 12, i1, 0);// border + gaj.drawPicture(l1 + 1, k + 1, baseScrollPic);// up arrow + gaj.drawPicture(l1 + 1, (k + i1) - 12, 1 + baseScrollPic);// down arrow + gaj.drawLineX(l1, k + 13, 12, 0);// up arrow border + gaj.drawLineX(l1, (k + i1) - 13, 12, 0);// down arrow border + gaj.drawGradientBox(l1 + 1, k + 14, 11, i1 - 27, scrollBarGradientColorTop, scrollBarGradientColorBottom);// background gradient + gaj.drawBox(l1 + 3, j1 + k + 14, 7, k1, scrollBarDraggingBarColor);// dragging bar + gaj.drawLineY(l1 + 2, j1 + k + 14, k1, scrollBarDraggingBarLine1Color);// dragging bar + gaj.drawLineY(l1 + 2 + 8, j1 + k + 14, k1, scrollBarDraggingBarLine2Color);// drawgging bar + } + + protected void gfa(int arg0, int arg1, int arg2, int arg3, String arg4[]) { + int i = 0; + int k = arg4.length; + for(int l = 0; l < k; l++) { + i += gaj.textWidth(arg4[l], arg3); + if(l < k - 1) + i += gaj.textWidth(" ", arg3); + } + + int i1 = arg1 - i / 2; + int j1 = arg2 + gaj.textHeightNumber(arg3) / 3; + for(int k1 = 0; k1 < k; k1++) { + int l1; + if(componentWhiteText[arg0]) + l1 = 0xffffff; + else + l1 = 0; + if(mouseX >= i1 && mouseX <= i1 + gaj.textWidth(arg4[k1], arg3) && mouseY <= j1 && mouseY > j1 - gaj.textHeightNumber(arg3)) { + if(componentWhiteText[arg0]) + l1 = 0x808080; + else + l1 = 0xffffff; + if(lastMouseButton == 1) { + gbe[arg0] = k1; + componentSkip[arg0] = true; + } + } + if(gbe[arg0] == k1) + if(componentWhiteText[arg0]) + l1 = 0xff0000; + else + l1 = 0xc00000; + gaj.drawString(arg4[k1], i1, j1, arg3, l1); + i1 += gaj.textWidth(arg4[k1] + " ", arg3); + } + + } + + protected void gfb(int arg0, int arg1, int arg2, int arg3, String arg4[]) { + int i = arg4.length; + int k = arg2 - (gaj.textHeightNumber(arg3) * (i - 1)) / 2; + for(int l = 0; l < i; l++) { + int i1; + if(componentWhiteText[arg0]) + i1 = 0xffffff; + else + i1 = 0; + int j1 = gaj.textWidth(arg4[l], arg3); + if(mouseX >= arg1 - j1 / 2 && mouseX <= arg1 + j1 / 2 && mouseY - 2 <= k && mouseY - 2 > k - gaj.textHeightNumber(arg3)) { + if(componentWhiteText[arg0]) + i1 = 0x808080; + else + i1 = 0xffffff; + if(lastMouseButton == 1) { + gbe[arg0] = l; + componentSkip[arg0] = true; + } + } + if(gbe[arg0] == l) + if(componentWhiteText[arg0]) + i1 = 0xff0000; + else + i1 = 0xc00000; + gaj.drawString(arg4[l], arg1 - j1 / 2, k, arg3, i1); + k += gaj.textHeightNumber(arg3); + } + + } + // drawList(i, componentX[i], componentY[i], componentWidth[i], componentHeight[i], componentTextSize[i], componentTextList[i], listLength[i], gbc[i]); + protected void drawList(int listIndex, int listX, int listY, int listWidth, int listHeight, int listTextSize, String listText[], + int listLength, int shownEntries) { + int entryCount = listHeight / gaj.textHeightNumber(listTextSize); + if(entryCount < listLength) { + int k = (listX + listWidth) - 12; + int i1 = ((listHeight - 27) * entryCount) / listLength; + if(i1 < 6) + i1 = 6; + int k1 = ((listHeight - 27 - i1) * shownEntries) / (listLength - entryCount); + if(mouseButton == 1 && mouseX >= k && mouseX <= k + 12) { + if(mouseY > listY && mouseY < listY + 12 && shownEntries > 0) + shownEntries--; + if(mouseY > (listY + listHeight) - 12 && mouseY < listY + listHeight && shownEntries < listLength - entryCount) + shownEntries++; + listShownEntries[listIndex] = shownEntries; + } + if(mouseButton == 1 && (mouseX >= k && mouseX <= k + 12 || mouseX >= k - 12 && mouseX <= k + 24 && gan[listIndex])) { + if(mouseY > listY + 12 && mouseY < (listY + listHeight) - 12) { + gan[listIndex] = true; + int i2 = mouseY - listY - 12 - i1 / 2; + shownEntries = (i2 * listLength) / (listHeight - 24); + if(shownEntries < 0) + shownEntries = 0; + if(shownEntries > listLength - entryCount) + shownEntries = listLength - entryCount; + listShownEntries[listIndex] = shownEntries; + } + } else { + gan[listIndex] = false; + } + k1 = ((listHeight - 27 - i1) * shownEntries) / (listLength - entryCount); + drawScrollbar(listX, listY, listWidth, listHeight, k1, i1); + } else { + shownEntries = 0; + listShownEntries[listIndex] = 0; + } + gbf[listIndex] = -1; + int l = listHeight - entryCount * gaj.textHeightNumber(listTextSize); + int j1 = listY + (gaj.textHeightNumber(listTextSize) * 5) / 6 + l / 2; + for(int l1 = shownEntries; l1 < listLength; l1++) { + int j2; + if(componentWhiteText[listIndex]) + j2 = 0xffffff; + else + j2 = 0; + if(mouseX >= listX + 2 && mouseX <= listX + 2 + gaj.textWidth(listText[l1], listTextSize) && mouseY - 2 <= j1 && mouseY - 2 > j1 - gaj.textHeightNumber(listTextSize)) { + if(componentWhiteText[listIndex]) + j2 = 0x808080; + else + j2 = 0xffffff; + gbf[listIndex] = l1; + if(lastMouseButton == 1) { + gbe[listIndex] = l1; + componentSkip[listIndex] = true; + } + } + if(gbe[listIndex] == l1 && gdg) + j2 = 0xff0000; + gaj.drawString(listText[l1], listX + 2, j1, listTextSize, j2); + j1 += gaj.textHeightNumber(listTextSize); + if(j1 >= listY + listHeight) + return; + } + + } + + public int drawText(int i, int k, String s, int l, boolean flag) { + componentType[menuItemsCount] = 1; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentTextSize[menuItemsCount] = l; + componentWhiteText[menuItemsCount] = flag; + componentX[menuItemsCount] = i; + componentY[menuItemsCount] = k; + componentText[menuItemsCount] = s; + return menuItemsCount++; + } + + public int drawButton(int i, int k, int l, int i1) { + componentType[menuItemsCount] = 2; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentX[menuItemsCount] = i - l / 2; + componentY[menuItemsCount] = k - i1 / 2; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + return menuItemsCount++; + } + + public int drawCurvedBox(int i, int k, int l, int i1) { + componentType[menuItemsCount] = 11; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentX[menuItemsCount] = i - l / 2; + componentY[menuItemsCount] = k - i1 / 2; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + return menuItemsCount++; + } + + public int drawArrow(int i, int k, int l) { + int i1 = gaj.pictureWidth[l]; + int j1 = gaj.pictureHeight[l]; + componentType[menuItemsCount] = 12; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentX[menuItemsCount] = i - i1 / 2; + componentY[menuItemsCount] = k - j1 / 2; + componentWidth[menuItemsCount] = i1; + componentHeight[menuItemsCount] = j1; + componentTextSize[menuItemsCount] = l; + return menuItemsCount++; + } + + public int gfh(int i, int k, int l, int i1, int j1, int k1, boolean flag) { + componentType[menuItemsCount] = 4; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentX[menuItemsCount] = i; + componentY[menuItemsCount] = k; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + componentWhiteText[menuItemsCount] = flag; + componentTextSize[menuItemsCount] = j1; + copmonentInputMaxLength[menuItemsCount] = k1; + listLength[menuItemsCount] = 0; + listShownEntries[menuItemsCount] = 0; + componentTextList[menuItemsCount] = new String[k1]; + return menuItemsCount++; + } + + public int gfi(int i, int k, int l, int i1, int j1, int k1, boolean flag, + boolean flag1) { + componentType[menuItemsCount] = 5; + componentAcceptsInput[menuItemsCount] = true; + componentIsPasswordField[menuItemsCount] = flag; + componentSkip[menuItemsCount] = false; + componentTextSize[menuItemsCount] = j1; + componentWhiteText[menuItemsCount] = flag1; + componentX[menuItemsCount] = i; + componentY[menuItemsCount] = k; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + copmonentInputMaxLength[menuItemsCount] = k1; + componentText[menuItemsCount] = ""; + return menuItemsCount++; + } + + public int createInput(int i, int k, int l, int i1, int j1, int k1, boolean flag, + boolean flag1) { + componentType[menuItemsCount] = 6; + componentAcceptsInput[menuItemsCount] = true; + componentIsPasswordField[menuItemsCount] = flag; + componentSkip[menuItemsCount] = false; + componentTextSize[menuItemsCount] = j1; + componentWhiteText[menuItemsCount] = flag1; + componentX[menuItemsCount] = i; + componentY[menuItemsCount] = k; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + copmonentInputMaxLength[menuItemsCount] = k1; + componentText[menuItemsCount] = ""; + return menuItemsCount++; + } + + public int createList(int i, int k, int l, int i1, int j1, int k1, boolean flag) { + componentType[menuItemsCount] = 9; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentTextSize[menuItemsCount] = j1; + componentWhiteText[menuItemsCount] = flag; + componentX[menuItemsCount] = i; + componentY[menuItemsCount] = k; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + copmonentInputMaxLength[menuItemsCount] = k1; + componentTextList[menuItemsCount] = new String[k1]; + listLength[menuItemsCount] = 0; + listShownEntries[menuItemsCount] = 0; + gbe[menuItemsCount] = -1; + gbf[menuItemsCount] = -1; + return menuItemsCount++; + } + + public int createButton(int i, int k, int l, int i1) { + componentType[menuItemsCount] = 10; + componentAcceptsInput[menuItemsCount] = true; + componentSkip[menuItemsCount] = false; + componentX[menuItemsCount] = i - l / 2; + componentY[menuItemsCount] = k - i1 / 2; + componentWidth[menuItemsCount] = l; + componentHeight[menuItemsCount] = i1; + return menuItemsCount++; + } + + public void clearList(int i) { + listLength[i] = 0; + } + + public void switchList(int i) { + listShownEntries[i] = 0; + gbf[i] = -1; + } + + public void addListItem(int i, int k, String s) { + componentTextList[i][k] = s; + if(k + 1 > listLength[i]) + listLength[i] = k + 1; + } + + public void addMessage(int arg0, String arg1, boolean arg2) { + int i = listLength[arg0]++; + if(i >= copmonentInputMaxLength[arg0]) { + i--; + listLength[arg0]--; + for(int k = 0; k < i; k++) + componentTextList[arg0][k] = componentTextList[arg0][k + 1]; + + } + componentTextList[arg0][i] = arg1; + if(arg2) + listShownEntries[arg0] = 0xf423f; + } + + public void updateText(int i, String s) { + componentText[i] = s; + } + + public String getText(int i) { + if(componentText[i] == null) + return "null"; + else + return componentText[i]; + } + + public void gge(int i) { + componentAcceptsInput[i] = true; + } + + public void ggf(int i) { + componentAcceptsInput[i] = false; + } + + public void setFocus(int i) { + selectedComponent = i; + } + + public int getEntryHighlighted(int i) { + int k = gbf[i]; + return k; + } + + protected GameImage gaj; + int menuItemsCount; + int gal; + public boolean componentAcceptsInput[]; + public boolean gan[]; + public boolean componentIsPasswordField[]; + public boolean componentSkip[]; + public int listShownEntries[]; + public int listLength[]; + public int gbe[]; + public int gbf[]; + boolean componentWhiteText[]; + int componentX[]; + int componentY[]; + int componentType[]; + int componentWidth[]; + int componentHeight[]; + int copmonentInputMaxLength[]; + int componentTextSize[]; + String componentText[]; + String componentTextList[][]; + int mouseX; + int mouseY; + int lastMouseButton; + int mouseButton; + int selectedComponent; + int gch; + int scrollBarGradientColorTop; + int scrollBarGradientColorBottom; + int scrollBarDraggingBarLine1Color; + int scrollBarDraggingBarColor; + int scrollBarDraggingBarLine2Color; + int gcn; + int gda; + int gdb; + int gdc; + int gdd; + int gde; + int gdf; + public boolean gdg; + public static boolean gdh = true; + public static int baseScrollPic; + public static int redMod = 114; + public static int greenMod = 114; + public static int blueMod = 176; + public static int chatMenuTextHeightMod; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/Mob.java b/clients/clientRSC/src/main/java/mudclient/Mob.java new file mode 100755 index 0000000..cfb9219 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/Mob.java @@ -0,0 +1,45 @@ +package mudclient; + +final class Mob { + + Mob() { + waypointsX = new int[10]; + waypointsY = new int[10]; + appearanceItems = new int[12]; + level = -1; + } + + public long nameHash; + public String username; + public int serverIndex; + public int serverID; + public int currentX; + public int currentY; + public int npcId; + public int stepCount; + public int currentSprite; + public int nextSprite; + public int waypointsEndSprite; + public int waypointCurrent; + public int waypointsX[]; + public int waypointsY[]; + public int appearanceItems[]; + public String lastMessage; + public int lastMessageTimeout; + public int itemAboveHeadID; + public int playerSkullTimeout; + public int lastDamageCount; + public int currentHits; + public int baseHits; + public int combatTimer; + public int level; + public int hairColour; + public int topColour; + public int bottomColour; + public int skinColour; + public int projectileType; + public int attackingPlayerIndex; + public int attackingNpcIndex; + public int projectileDistance; + public int playerSkulled; +} diff --git a/clients/clientRSC/src/main/java/mudclient/PacketConstruction.java b/clients/clientRSC/src/main/java/mudclient/PacketConstruction.java new file mode 100755 index 0000000..7ee004f --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/PacketConstruction.java @@ -0,0 +1,198 @@ +package mudclient; + +import java.io.IOException; + +public class PacketConstruction { + + public void closeStream() { + } + + public void createPacket(int i) { + if(packetStart > (maxPacketLength * 4) / 5) + try { + writePacket(0); + } + catch(IOException ioexception) { + error = true; + errorText = ioexception.getMessage(); + } + if(packetData == null) + packetData = new byte[maxPacketLength]; + packetData[packetStart + 2] = (byte)i; + packetData[packetStart + 3] = 0; + packetOffset = packetStart + 3; + skipOffset = 8; + } + + public void writePacket(int i) + throws IOException { + if(error) { + packetStart = 0; + packetOffset = 3; + error = false; + throw new IOException(errorText); + } + packetCount++; + if(packetCount < i) + return; + if(packetStart > 0) { + packetCount = 0; + writeToBuffer(packetData, 0, packetStart); + } + packetStart = 0; + packetOffset = 3; + } + + public void addByte(int i) { + packetData[packetOffset++] = (byte)i; + } + + @SuppressWarnings("deprecation") + public void addString(String s) { + s.getBytes(0, s.length(), packetData, packetOffset); + packetOffset += s.length(); + } + + public void addLong(long l) { + addInt((int)(l >> 32)); + addInt((int)(l & -1L)); + } + + public void writeToBuffer(byte abyte0[], int i, int j) + throws IOException { + } + + public void readInputStream(int i, int j, byte abyte0[]) + throws IOException { + } + + public int readShort() + throws IOException { + int i = readByte(); + int j = readByte(); + return i * 256 + j; + } + + public int read() + throws IOException { + return 0; + } + + public void read(int i, byte abyte0[]) + throws IOException { + readInputStream(i, 0, abyte0); + } + + public void addInt(int i) { + packetData[packetOffset++] = (byte)(i >> 24); + packetData[packetOffset++] = (byte)(i >> 16); + packetData[packetOffset++] = (byte)(i >> 8); + packetData[packetOffset++] = (byte)i; + } + + public void flush() + throws IOException { + formatPacket(); + writePacket(0); + } + + public int available() + throws IOException { + System.out.println("packetconstruction.available WRONG"); + return 0; + } + + public void addShort(int i) { + packetData[packetOffset++] = (byte)(i >> 8); + packetData[packetOffset++] = (byte)i; + } + + public long readLong() + throws IOException { + long l = readShort(); + long l1 = readShort(); + long l2 = readShort(); + long l3 = readShort(); + return (l << 48) + (l1 << 32) + (l2 << 16) + l3; + } + + public void formatPacket() { + if(skipOffset != 8) + packetOffset++; + int j = packetOffset - packetStart - 2; + packetData[packetStart] = (byte) (j >> 8); + packetData[packetStart + 1] = (byte) j; + if(maxPacketLength <= 10000) { + int k = packetData[packetStart + 2] & 0xff; + packetCommandCount[k]++; + packetLengthCount[k] += packetOffset - packetStart; + } + packetStart = packetOffset; + } + + public void addBytes(byte data[], int off, int len) { + for(int i = 0; i < len; i++) + packetData[packetOffset++] = data[off + i]; + + } + + public boolean hasData() { + return packetStart > 0; + } + + public int readPacket(byte arg0[]) { + try { + read++; + if(maxPacketReadCount > 0 && read > maxPacketReadCount) { + error = true; + errorText = "time-out"; + maxPacketReadCount += maxPacketReadCount; + return 0; + } + if(length == 0 && available() >= 2) { + byte buf[] = new byte[2]; + readInputStream(2, 0, buf); + length = ((short) ((buf[0] & 0xff) << 8) | (short) (buf[1] & 0xff)) + 1; + } + if(length > 0 && available() >= length) { + read(length, arg0); + int i = length; + length = 0; + read = 0; + return i; + } + } + catch(IOException ioexception) { + error = true; + errorText = ioexception.getMessage(); + } + return 0; + } + + public int readByte() + throws IOException { + return read(); + } + + public PacketConstruction() { + packetOffset = 3; + skipOffset = 8; + maxPacketLength = 5000; + errorText = ""; + error = false; + } + + protected int length; + public int read; + public int maxPacketReadCount; + public int packetStart; + private int packetOffset; + private int skipOffset; + public byte packetData[]; + public static int packetCommandCount[] = new int[256]; + protected int maxPacketLength; + public static int packetLengthCount[] = new int[256]; + protected int packetCount; + protected String errorText; + protected boolean error; +} diff --git a/clients/clientRSC/src/main/java/mudclient/StreamClass.java b/clients/clientRSC/src/main/java/mudclient/StreamClass.java new file mode 100755 index 0000000..ace5bc8 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/StreamClass.java @@ -0,0 +1,134 @@ +package mudclient; + +import java.io.*; +import java.net.Socket; + +public class StreamClass extends PacketConstruction + implements Runnable { + + public StreamClass(Socket socket, GameApplet a1) + throws IOException { + socketClosing = false; + socketClosed = true; + this.socket = socket; + inputStream = socket.getInputStream(); + outputStream = socket.getOutputStream(); + socketClosed = false; + a1.startThread(this); + } + + public void closeStream() { + super.closeStream(); + socketClosing = true; + try { + if(inputStream != null) + inputStream.close(); + if(outputStream != null) + outputStream.close(); + if(socket != null) + socket.close(); + } + catch(IOException _ex) { + System.out.println("Error closing stream"); + } + socketClosed = true; + synchronized(this) { + notify(); + } + buffer = null; + } + + public int read() + throws IOException { + if(socketClosing) + return 0; + else + return inputStream.read(); + } + + public int available() + throws IOException { + if(socketClosing) + return 0; + else + return inputStream.available(); + } + + public void readInputStream(int arg0, int arg1, byte arg2[]) + throws IOException { + if(socketClosing) + return; + int i = 0; + int j; + for(; i < arg0; i += j) + if((j = inputStream.read(arg2, i + arg1, arg0 - i)) <= 0) + throw new IOException("EOF"); + + } + + public void writeToBuffer(byte arg0[], int arg1, int arg2) + throws IOException { + if(socketClosing) + return; + if(buffer == null) + buffer = new byte[5000]; + synchronized(this) { + for(int i = 0; i < arg2; i++) { + buffer[offset] = arg0[i + arg1]; + offset = (offset + 1) % 5000; + if(offset == (dataWritten + 4900) % 5000) + throw new IOException("buffer overflow"); + } + + notify(); + } + } + + public void run() { + while(!socketClosed) { + int i; + int j; + synchronized(this) { + if(offset == dataWritten) + try { + wait(); + } + catch(InterruptedException _ex) { } + if(socketClosed) + return; + j = dataWritten; + if(offset >= dataWritten) + i = offset - dataWritten; + else + i = 5000 - dataWritten; + } + if(i > 0) { + try { + outputStream.write(buffer, j, i); + } + catch(IOException ioexception) { + super.error = true; + super.errorText = "Twriter:" + ioexception; + } + dataWritten = (dataWritten + i) % 5000; + try { + if(offset == dataWritten) + outputStream.flush(); + } + catch(IOException ioexception1) { + super.error = true; + super.errorText = "Twriter:" + ioexception1; + } + } + } + } + + private InputStream inputStream; + private OutputStream outputStream; + private Socket socket; + private boolean socketClosing; + private byte buffer[]; + private int dataWritten; + private int offset; + private boolean socketClosed; +} diff --git a/clients/clientRSC/src/main/java/mudclient/link.java b/clients/clientRSC/src/main/java/mudclient/link.java new file mode 100755 index 0000000..3f3cbbb --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/link.java @@ -0,0 +1,87 @@ +package mudclient; + +import java.applet.Applet; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.Socket; + +public class link { + + public static final void addFile(String fileName, byte fileData[]) { + link.fileName[currentFile] = fileName; + link.fileData[currentFile] = fileData; + currentFile++; + } + + public static final boolean loadFile(String fileName) { + try { + File f = new File(Config.CONF_DIR, fileName); + if(f.exists()) { + FileInputStream fis = new FileInputStream(f); + byte buf[] = new byte[fis.available()]; + fis.read(buf); + addFile(fileName, buf); + return true; + } + return false; + } catch(IOException ioe) { + ioe.printStackTrace(); + return false; + } + } + + public static final byte[] getFile(String fileName) { + for(int i = 0; i < currentFile; i++) + if(link.fileName[i].equals(fileName)) + return fileData[i]; + if(loadFile(fileName)) + return getFile(fileName); + else + return null; + } + + public static final Socket getSocket(int port) { + for(link.port = port; link.port != 0;) + try { + Thread.sleep(100L); + } + catch(Exception _ex) { } + + return socket; + } + + public static final void thread(Runnable runnable) { + for(thread = runnable; thread != null;) + try { + Thread.sleep(100L); + } + catch(Exception _ex) { } + + } + + public static final String getAddress(String ip) { + for(iplookup = ip; iplookup != null;) + try { + Thread.sleep(100L); + } + catch(Exception _ex) { } + + return address; + } + + public link() { + } + + public static Applet gameApplet; + public static int uid; + static int port; + static Socket socket; + static Runnable thread = null; + static String iplookup = null; + static String address; + static int currentFile; + private static String fileName[] = new String[50]; + private static byte fileData[][] = new byte[50][]; + +} diff --git a/clients/clientRSC/src/main/java/mudclient/mudclient.java b/clients/clientRSC/src/main/java/mudclient/mudclient.java new file mode 100755 index 0000000..04998e0 --- /dev/null +++ b/clients/clientRSC/src/main/java/mudclient/mudclient.java @@ -0,0 +1,7593 @@ +package mudclient; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.event.KeyEvent; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.URL; + +import javax.imageio.ImageIO; + +@SuppressWarnings("serial") +public class mudclient extends GameAppletMiddleMan { + + public static final void main(String args[]) { + mudclient mud = new mudclient(); + mud.createWindow(mud.windowWidth, mud.windowHeight + 11, "MoparClassic", false); + mud.gameMinThreadSleepTime = 10; + } + + private final void menuClick(int l) { + int actionX = menuActionX[l]; + int actionY = menuActionY[l]; + int actionType = menuActionType[l]; + int actionVar1 = menuActionVar1[l]; + int actionVar2 = menuActionVar2[l]; + int actionID = menuActionID[l]; + if(actionID == 200) { + walkToGroundItem(sectionX, sectionY, actionX, actionY, true); + super.streamClass.createPacket(104); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 210) { + walkToGroundItem(sectionX, sectionY, actionX, actionY, true); + super.streamClass.createPacket(34); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 220) { + walkToGroundItem(sectionX, sectionY, actionX, actionY, true); + super.streamClass.createPacket(245); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + } + if(actionID == 3200) + displayMessage(Data.itemDescription[actionType], 3); + if(actionID == 300) { + walkToWallObject(actionX, actionY, actionType); + super.streamClass.createPacket(67); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addByte(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 310) { + walkToWallObject(actionX, actionY, actionType); + super.streamClass.createPacket(36); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addByte(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 320) { + walkToWallObject(actionX, actionY, actionType); + super.streamClass.createPacket(126); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addByte(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 2300) { + walkToWallObject(actionX, actionY, actionType); + super.streamClass.createPacket(235); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addByte(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 3300) + displayMessage(Data.wallObjectDescription[actionType], 3); + if(actionID == 400) { + walkToObject(actionX, actionY, actionType, actionVar1); + super.streamClass.createPacket(17); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionVar2); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 410) { + walkToObject(actionX, actionY, actionType, actionVar1); + super.streamClass.createPacket(94); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionVar2); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 420) { + walkToObject(actionX, actionY, actionType, actionVar1); + super.streamClass.createPacket(51); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.formatPacket(); + } + if(actionID == 2400) { + walkToObject(actionX, actionY, actionType, actionVar1); + super.streamClass.createPacket(40); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.formatPacket(); + } + if(actionID == 3400) + displayMessage(Data.objectDescription[actionType], 3); + if(actionID == 600) { + super.streamClass.createPacket(49); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 610) { + super.streamClass.createPacket(27); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 620) { + super.streamClass.createPacket(92); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 630) { + super.streamClass.createPacket(181); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 640) { + super.streamClass.createPacket(89); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 650) { + selectedItem = actionType; + drawMenuTab = 0; + selectedItemName = Data.itemName[inventoryItems[selectedItem]]; + } + if(actionID == 660) { + super.streamClass.createPacket(147); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + selectedItem = -1; + drawMenuTab = 0; + displayMessage("Dropping " + Data.itemName[inventoryItems[actionType]], 4); + } + if(actionID == 3600) + displayMessage(Data.itemDescription[actionType], 3); + if(actionID == 700) { + int k2 = (actionX - 64) / magicLoc; + int k4 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, k2, k4, true); + super.streamClass.createPacket(71); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 710) { + int l2 = (actionX - 64) / magicLoc; + int l4 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, l2, l4, true); + super.streamClass.createPacket(142); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 720) { + int i3 = (actionX - 64) / magicLoc; + int i5 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, i3, i5, true); + super.streamClass.createPacket(177); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 725) { + int j3 = (actionX - 64) / magicLoc; + int j5 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, j3, j5, true); + super.streamClass.createPacket(74); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 715 || actionID == 2715) { + int k3 = (actionX - 64) / magicLoc; + int k5 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, k3, k5, true); + super.streamClass.createPacket(73); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 3700) + displayMessage(Data.npcDescription[actionType], 3); + if(actionID == 800) { + int l3 = (actionX - 64) / magicLoc; + int l5 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, l3, l5, true); + super.streamClass.createPacket(55); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 810) { + int i4 = (actionX - 64) / magicLoc; + int i6 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, i4, i6, true); + super.streamClass.createPacket(16); + super.streamClass.addShort(actionType); + super.streamClass.addShort(actionVar1); + super.streamClass.formatPacket(); + selectedItem = -1; + } + if(actionID == 805 || actionID == 2805) { + int j4 = (actionX - 64) / magicLoc; + int j6 = (actionY - 64) / magicLoc; + walkTo1Tile(sectionX, sectionY, j4, j6, true); + super.streamClass.createPacket(57); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 2806) { + super.streamClass.createPacket(222); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 2810) { + super.streamClass.createPacket(166); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 2820) { + super.streamClass.createPacket(68); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + } + if(actionID == 900) { + walkTo1Tile(sectionX, sectionY, actionX, actionY, true); + super.streamClass.createPacket(232); + super.streamClass.addShort(actionX + areaX); + super.streamClass.addShort(actionY + areaY); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 920) { + walkTo1Tile(sectionX, sectionY, actionX, actionY, false); + if(actionPictureType == -24) + actionPictureType = 24; + } + if(actionID == 1000) { + super.streamClass.createPacket(206); + super.streamClass.addShort(actionType); + super.streamClass.formatPacket(); + selectedSpell = -1; + } + if(actionID == 4000) { + selectedItem = -1; + selectedSpell = -1; + } + } + + protected final void resetIntVars() { + systemUpdate = 0; + loginScreen = 0; + loggedIn = 0; + logoutTimer = 0; + } + + private final void drawReportAbuseBox1() { + reportAbuseOptionSelected = 0; + int yOffset = 135; + for(int option = 0; option < 12; option++) { + if(super.mouseX > 66 && super.mouseX < 446 && super.mouseY >= yOffset - 12 && super.mouseY < yOffset + 3) + reportAbuseOptionSelected = option + 1; + yOffset += 14; + } + + if(mouseButtonClick != 0 && reportAbuseOptionSelected != 0) { + mouseButtonClick = 0; + showAbuseBox = 2; + super.inputText = ""; + super.enteredInputText = ""; + return; + } + yOffset += 15; + if(mouseButtonClick != 0) { + mouseButtonClick = 0; + if(super.mouseX < 56 || super.mouseY < 35 || super.mouseX > 456 || super.mouseY > 325) { + showAbuseBox = 0; + return; + } + if(super.mouseX > 66 && super.mouseX < 446 && super.mouseY >= yOffset - 15 && super.mouseY < yOffset + 5) { + showAbuseBox = 0; + return; + } + } + gameGraphics.drawBox(56, 35, 400, 290, 0); + gameGraphics.drawBoxEdge(56, 35, 400, 290, 0xffffff); + yOffset = 50; + gameGraphics.drawText("This form is for reporting players who are breaking our rules", 256, yOffset, 1, 0xffffff); + yOffset += 15; + gameGraphics.drawText("Using it sends a snapshot of the last 60 secs of activity to us", 256, yOffset, 1, 0xffffff); + yOffset += 15; + gameGraphics.drawText("If you misuse this form, you will be banned.", 256, yOffset, 1, 0xff8000); + yOffset += 15; + yOffset += 10; + gameGraphics.drawText("First indicate which of our 12 rules is being broken. For a detailed", 256, yOffset, 1, 0xffff00); + yOffset += 15; + gameGraphics.drawText("explanation of each rule please read the manual on our website.", 256, yOffset, 1, 0xffff00); + yOffset += 15; + int j1; + if(reportAbuseOptionSelected == 1) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("1: Offensive language", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 2) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("2: Item scamming", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 3) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("3: Password scamming", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 4) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("4: Bug abuse", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 5) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("5: Jagex Staff impersonation", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 6) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("6: Account sharing/trading", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 7) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("7: Macroing", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 8) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("8: Mutiple logging in", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 9) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("9: Encouraging others to break rules", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 10) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("10: Misuse of customer support", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 11) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("11: Advertising / website", 256, yOffset, 1, j1); + yOffset += 14; + if(reportAbuseOptionSelected == 12) { + gameGraphics.drawBoxEdge(66, yOffset - 12, 380, 15, 0xffffff); + j1 = 0xff8000; + } else { + j1 = 0xffffff; + } + gameGraphics.drawText("12: Real world item trading", 256, yOffset, 1, j1); + yOffset += 14; + yOffset += 15; + j1 = 0xffffff; + if(super.mouseX > 196 && super.mouseX < 316 && super.mouseY > yOffset - 15 && super.mouseY < yOffset + 5) + j1 = 0xffff00; + gameGraphics.drawText("Click here to cancel", 256, yOffset, 1, j1); + } + + private final void loadMap() { + engineHandle.mapsFree = unpackData("maps.jag", "map", 70); + engineHandle.mapsMembers = unpackData("maps.mem", "members map", 75); + engineHandle.landscapeFree = unpackData("land.jag", "landscape", 80); + engineHandle.landscapeMembers = unpackData("land.mem", "members landscape", 85); + } + + private final void drawModel(int l, String s1) { + int i1 = objectX[l]; + int j1 = objectY[l]; + int k1 = i1 - ourPlayer.currentX / 128; + int l1 = j1 - ourPlayer.currentY / 128; + byte byte0 = 7; + if(i1 >= 0 && j1 >= 0 && i1 < 96 && j1 < 96 && k1 > -byte0 && k1 < byte0 && l1 > -byte0 && l1 < byte0) { + gameCamera.removeModel(objectArray[l]); + int i2 = Data.getModelNameIndex(s1); + GameObject j2 = gameDataObjects[i2].cnj(); + gameCamera.addModel(j2); + j2.cme(true, 48, 48, -50, -10, -50); + j2.cnl(objectArray[l]); + j2.index = l; + objectArray[l] = j2; + } + } + + final void drawPlayer(int x, int y, int width, int height, int arg4, int arg5, int arg6) { + Mob f1 = playerArray[arg4]; + if(f1.bottomColour == 255)// TODO this checks if the player is an invisible moderator + return; + int direction = f1.currentSprite + (cameraRotation + 16) / 32 & 7; + boolean flag = false; + int direction2 = direction; + if(direction2 == 5) { + direction2 = 3; + flag = true; + } else + if(direction2 == 6) { + direction2 = 2; + flag = true; + } else + if(direction2 == 7) { + direction2 = 1; + flag = true; + } + int j1 = direction2 * 3 + walkModel[(f1.stepCount / 6) % 4]; + if(f1.currentSprite == 8) { + direction2 = 5; + direction = 2; + flag = false; + x -= (5 * arg6) / 100; + j1 = direction2 * 3 + combatModelArray1[(tick / 5) % 8]; + } else + if(f1.currentSprite == 9) { + direction2 = 5; + direction = 2; + flag = true; + x += (5 * arg6) / 100; + j1 = direction2 * 3 + combatModelArray2[(tick / 6) % 8]; + } + for(int k1 = 0; k1 < 12; k1++) { + int l1 = animationModelArray[direction][k1]; + int l2 = f1.appearanceItems[l1] - 1; + if(l2 > Data.animationCount - 1) + continue; + if(l2 >= 0) { + int k3 = 0; + int i4 = 0; + int j4 = j1; + if(flag && direction2 >= 1 && direction2 <= 3) + if(Data.animationHasF[l2] == 1) + j4 += 15; + else + if(l1 == 4 && direction2 == 1) { + k3 = -22; + i4 = -3; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } else + if(l1 == 4 && direction2 == 2) { + k3 = 0; + i4 = -8; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } else + if(l1 == 4 && direction2 == 3) { + k3 = 26; + i4 = -5; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } else + if(l1 == 3 && direction2 == 1) { + k3 = 22; + i4 = 3; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } else + if(l1 == 3 && direction2 == 2) { + k3 = 0; + i4 = 8; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } else + if(l1 == 3 && direction2 == 3) { + k3 = -26; + i4 = 5; + j4 = direction2 * 3 + walkModel[(2 + f1.stepCount / 6) % 4]; + } + if(direction2 != 5 || Data.animationHasA[l2] == 1) { + int k4 = j4 + Data.animationNumber[l2]; + k3 = (k3 * width) / ((GameImage) (gameGraphics)).pictureAssumedWidth[k4]; + i4 = (i4 * height) / ((GameImage) (gameGraphics)).pictureAssumedHeight[k4]; + int l4 = (width * ((GameImage) (gameGraphics)).pictureAssumedWidth[k4]) / ((GameImage) (gameGraphics)).pictureAssumedWidth[Data.animationNumber[l2]]; + k3 -= (l4 - width) / 2; + int i5 = Data.animationCharacterColor[l2]; + int j5 = appearanceSkinColours[f1.skinColour]; + if(i5 == 1) + i5 = appearanceHairColours[f1.hairColour]; + else + if(i5 == 2) + i5 = appearanceTopBottomColours[f1.topColour]; + else + if(i5 == 3) + i5 = appearanceTopBottomColours[f1.bottomColour]; + gameGraphics.drawImage(x + k3, y + i4, l4, height, k4, i5, j5, arg5, flag); + } + } + } + + if(f1.lastMessageTimeout > 0) { + receivedMessageMidPoint[receivedMessagesCount] = gameGraphics.textWidth(f1.lastMessage, 1) / 2; + if(receivedMessageMidPoint[receivedMessagesCount] > 150) + receivedMessageMidPoint[receivedMessagesCount] = 150; + receivedMessageHeight[receivedMessagesCount] = (gameGraphics.textWidth(f1.lastMessage, 1) / 300) * gameGraphics.textHeightNumber(1); + receivedMessageX[receivedMessagesCount] = x + width / 2; + receivedMessageY[receivedMessagesCount] = y; + receivedMessages[receivedMessagesCount++] = f1.lastMessage; + } + if(f1.playerSkullTimeout > 0) { + itemAboveHeadX[itemsAboveHeadCount] = x + width / 2; + itemAboveHeadY[itemsAboveHeadCount] = y; + itemAboveHeadScale[itemsAboveHeadCount] = arg6; + itemAboveHeadID[itemsAboveHeadCount++] = f1.itemAboveHeadID; + } + if(f1.currentSprite == 8 || f1.currentSprite == 9 || f1.combatTimer != 0) { + if(f1.combatTimer > 0) { + int i2 = x; + if(f1.currentSprite == 8) + i2 -= (20 * arg6) / 100; + else + if(f1.currentSprite == 9) + i2 += (20 * arg6) / 100; + int i3 = (f1.currentHits * 30) / f1.baseHits; + healthBarX[healthBarVisibleCount] = i2 + width / 2; + healthBarY[healthBarVisibleCount] = y; + healthBarMissing[healthBarVisibleCount++] = i3; + } + if(f1.combatTimer > 150) { + int j2 = x; + if(f1.currentSprite == 8) + j2 -= (10 * arg6) / 100; + else + if(f1.currentSprite == 9) + j2 += (10 * arg6) / 100; + gameGraphics.drawPicture((j2 + width / 2) - 12, (y + height / 2) - 12, baseInventoryPic + 11); + gameGraphics.drawText(String.valueOf(f1.lastDamageCount), (j2 + width / 2) - 1, y + height / 2 + 5, 3, 0xffffff); + } + } + if(f1.playerSkulled == 1 && f1.playerSkullTimeout == 0) { + int k2 = arg5 + x + width / 2; + if(f1.currentSprite == 8) + k2 -= (20 * arg6) / 100; + else + if(f1.currentSprite == 9) + k2 += (20 * arg6) / 100; + int j3 = (16 * arg6) / 100; + int l3 = (16 * arg6) / 100; + gameGraphics.ccc(k2 - j3 / 2, y - l3 / 2 - (10 * arg6) / 100, j3, l3, baseInventoryPic + 13); + } + } + + private final void walkToWallObject(int x, int y, int direction) { + if(direction == 0) { + walkTo(sectionX, sectionY, x, y - 1, x, y, false, true); + return; + } + if(direction == 1) { + walkTo(sectionX, sectionY, x - 1, y, x, y, false, true); + return; + } else { + walkTo(sectionX, sectionY, x, y, x, y, true, true); + return; + } + } + + private final void drawDuelConfirmBox() { + byte byte0 = 22; + byte byte1 = 36; + gameGraphics.drawBox(byte0, byte1, 468, 16, 192); + int l = 0x989898; + gameGraphics.drawBoxAlpha(byte0, byte1 + 16, 468, 246, l, 160); + gameGraphics.drawText("Please confirm your duel with @yel@" + DataOperations.hashToName(duelOpponentHash), byte0 + 234, byte1 + 12, 1, 0xffffff); + gameGraphics.drawText("Your stake:", byte0 + 117, byte1 + 30, 1, 0xffff00); + for(int i1 = 0; i1 < duelOurStakeCount; i1++) { + String s1 = Data.itemName[duelOurStakeItem[i1]]; + if(Data.itemStackable[duelOurStakeItem[i1]] == 0) + s1 = s1 + " x " + formatItemCount(duelOurStakeItemCount[i1]); + gameGraphics.drawText(s1, byte0 + 117, byte1 + 42 + i1 * 12, 1, 0xffffff); + } + + if(duelOurStakeCount == 0) + gameGraphics.drawText("Nothing!", byte0 + 117, byte1 + 42, 1, 0xffffff); + gameGraphics.drawText("Your opponent's stake:", byte0 + 351, byte1 + 30, 1, 0xffff00); + for(int j1 = 0; j1 < duelOpponentStakeCount; j1++) { + String s2 = Data.itemName[duelOpponentStakeItem[j1]]; + if(Data.itemStackable[duelOpponentStakeItem[j1]] == 0) + s2 = s2 + " x " + formatItemCount(duelOutStakeItemCount[j1]); + gameGraphics.drawText(s2, byte0 + 351, byte1 + 42 + j1 * 12, 1, 0xffffff); + } + + if(duelOpponentStakeCount == 0) + gameGraphics.drawText("Nothing!", byte0 + 351, byte1 + 42, 1, 0xffffff); + if(duelRetreat == 0) + gameGraphics.drawText("You can retreat from this duel", byte0 + 234, byte1 + 180, 1, 65280); + else + gameGraphics.drawText("No retreat is possible!", byte0 + 234, byte1 + 180, 1, 0xff0000); + if(duelMagic == 0) + gameGraphics.drawText("Magic may be used", byte0 + 234, byte1 + 192, 1, 65280); + else + gameGraphics.drawText("Magic cannot be used", byte0 + 234, byte1 + 192, 1, 0xff0000); + if(duelPrayer == 0) + gameGraphics.drawText("Prayer may be used", byte0 + 234, byte1 + 204, 1, 65280); + else + gameGraphics.drawText("Prayer cannot be used", byte0 + 234, byte1 + 204, 1, 0xff0000); + if(duelWeapons == 0) + gameGraphics.drawText("Weapons may be used", byte0 + 234, byte1 + 216, 1, 65280); + else + gameGraphics.drawText("Weapons cannot be used", byte0 + 234, byte1 + 216, 1, 0xff0000); + gameGraphics.drawText("If you are sure click 'Accept' to begin the duel", byte0 + 234, byte1 + 230, 1, 0xffffff); + if(!duelConfirmOurAccepted) { + gameGraphics.drawPicture((byte0 + 118) - 35, byte1 + 238, baseInventoryPic + 25); + gameGraphics.drawPicture((byte0 + 352) - 35, byte1 + 238, baseInventoryPic + 26); + } else { + gameGraphics.drawText("Waiting for other player...", byte0 + 234, byte1 + 250, 1, 0xffff00); + } + if(mouseButtonClick == 1) { + if(super.mouseX < byte0 || super.mouseY < byte1 || super.mouseX > byte0 + 468 || super.mouseY > byte1 + 262) { + showDuelConfirmBox = false; + super.streamClass.createPacket(35); + super.streamClass.formatPacket(); + } + if(super.mouseX >= (byte0 + 118) - 35 && super.mouseX <= byte0 + 118 + 70 && super.mouseY >= byte1 + 238 && super.mouseY <= byte1 + 238 + 21) { + duelConfirmOurAccepted = true; + super.streamClass.createPacket(87); + super.streamClass.formatPacket(); + } + if(super.mouseX >= (byte0 + 352) - 35 && super.mouseX <= byte0 + 353 + 70 && super.mouseY >= byte1 + 238 && super.mouseY <= byte1 + 238 + 21) { + showDuelConfirmBox = false; + super.streamClass.createPacket(35); + super.streamClass.formatPacket(); + } + mouseButtonClick = 0; + } + } + + private final void setLoginVars() { + loggedIn = 0; + loginScreen = 0; + loginUsername = ""; + loginPassword = ""; + /*dja = "Please enter a username:"; + djb = "*" + loginUsername + "*";*/ + playerCount = 0; + npcCount = 0; + } + + protected final void close() { + requestLogout(); + cleanUp(); + if(audioPlayer != null) + audioPlayer.stop(); + } + + protected final Socket makeSocket(String address, int port) + throws IOException { + if(link.gameApplet != null) { + Socket socket = link.getSocket(port); + if(socket == null) + throw new IOException(); + else + return socket; + } + Socket socket1 = new Socket(InetAddress.getByName(address), port); + socket1.setSoTimeout(30000); + socket1.setTcpNoDelay(true); + return socket1; + } + + private final void drawInventoryMenu(boolean canRightClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 248; + gameGraphics.drawPicture(l, 3, baseInventoryPic + 1); + for(int i1 = 0; i1 < maxInventoryItems; i1++) { + int j1 = l + (i1 % 5) * 49; + int l1 = 36 + (i1 / 5) * 34; + if(i1 < inventoryItemsCount && inventoryItemEquipped[i1] == 1) + gameGraphics.drawBoxAlpha(j1, l1, 49, 34, 0xff0000, 128); + else + gameGraphics.drawBoxAlpha(j1, l1, 49, 34, GameImage.rgbToInt(181, 181, 181), 128); + if(i1 < inventoryItemsCount) { + gameGraphics.drawImage(j1, l1, 48, 32, baseItemPicture + Data.itemInventoryPicture[inventoryItems[i1]], Data.itemPictureMask[inventoryItems[i1]], 0, 0, false); + if(Data.itemStackable[inventoryItems[i1]] == 0) + gameGraphics.drawString(String.valueOf(inventoryItemCount[i1]), j1 + 1, l1 + 10, 1, 0xffff00); + } + } + + for(int k1 = 1; k1 <= 4; k1++) + gameGraphics.drawLineY(l + k1 * 49, 36, (maxInventoryItems / 5) * 34, 0); + + for(int i2 = 1; i2 <= maxInventoryItems / 5 - 1; i2++) + gameGraphics.drawLineX(l, 36 + i2 * 34, 245, 0); + + if(!canRightClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 248); + int j2 = super.mouseY - 36; + if(l >= 0 && j2 >= 0 && l < 248 && j2 < (maxInventoryItems / 5) * 34) { + int k2 = l / 49 + (j2 / 34) * 5; + if(k2 < inventoryItemsCount) { + int l2 = inventoryItems[k2]; + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 3) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 600; + menuActionType[menuOptionsCount] = k2; + menuActionVar1[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + return; + } + } else { + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 610; + menuActionType[menuOptionsCount] = k2; + menuActionVar1[menuOptionsCount] = selectedItem; + menuOptionsCount++; + return; + } + if(inventoryItemEquipped[k2] == 1) { + menuText1[menuOptionsCount] = "Remove"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 620; + menuActionType[menuOptionsCount] = k2; + menuOptionsCount++; + } else + if(Data.itemIsEquippable[l2] != 0) { + if((Data.itemIsEquippable[l2] & 0x18) != 0) + menuText1[menuOptionsCount] = "Wield"; + else + menuText1[menuOptionsCount] = "Wear"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 630; + menuActionType[menuOptionsCount] = k2; + menuOptionsCount++; + } + if(!Data.itemCommand[l2].equals("")) { + menuText1[menuOptionsCount] = Data.itemCommand[l2]; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 640; + menuActionType[menuOptionsCount] = k2; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Use"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 650; + menuActionType[menuOptionsCount] = k2; + menuOptionsCount++; + menuText1[menuOptionsCount] = "Drop"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 660; + menuActionType[menuOptionsCount] = k2; + menuOptionsCount++; + menuText1[menuOptionsCount] = "Examine"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[l2]; + menuActionID[menuOptionsCount] = 3600; + menuActionType[menuOptionsCount] = l2; + menuOptionsCount++; + } + } + } + } + + private final void createLoginScreenBackgrounds() { + int l = 0; + byte byte0 = 50; + byte byte1 = 50; + engineHandle.loadSection(byte0 * 48 + 23, byte1 * 48 + 23, l); + engineHandle.glg(gameDataObjects); + char c1 = '\u2600'; + char c2 = '\u1900'; + char c3 = '\u044C'; + char c4 = '\u0378'; + gameCamera.zoom1 = 4100; + gameCamera.zoom2 = 4100; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 4000; + gameCamera.setCamera(c1, -engineHandle.getAveragedElevation(c1, c2), c2, 912, c4, 0, c3 * 2); + gameCamera.finishCamera(); + gameGraphics.screenFadeToBlack(); + gameGraphics.screenFadeToBlack(); + gameGraphics.drawBox(0, 0, 512, 6, 0); + for(int i1 = 6; i1 >= 1; i1--) + gameGraphics.cbg(0, i1, 0, i1, 512, 8); + + gameGraphics.drawBox(0, 194, 512, 20, 0); + for(int j1 = 6; j1 >= 1; j1--) + gameGraphics.cbg(0, j1, 0, 194 - j1, 512, 8); + + if(bgPixels == null) + gameGraphics.drawPicture(15, 15, baseInventoryPic + 10); + else + gameGraphics.drawPixels(bgPixels, 0, 0, bgPixels.length, bgPixels[0].length); + gameGraphics.cca(baseLoginScreenBackgroundPic, 0, 0, 512, 200); + gameGraphics.cbl(baseLoginScreenBackgroundPic); + c1 = '\u2400'; + c2 = '\u2400'; + c3 = '\u044C'; + c4 = '\u0378'; + gameCamera.zoom1 = 4100; + gameCamera.zoom2 = 4100; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 4000; + gameCamera.setCamera(c1, -engineHandle.getAveragedElevation(c1, c2), c2, 912, c4, 0, c3 * 2); + gameCamera.finishCamera(); + gameGraphics.screenFadeToBlack(); + gameGraphics.screenFadeToBlack(); + gameGraphics.drawBox(0, 0, 512, 6, 0); + for(int k1 = 6; k1 >= 1; k1--) + gameGraphics.cbg(0, k1, 0, k1, 512, 8); + + gameGraphics.drawBox(0, 194, 512, 20, 0); + for(int l1 = 6; l1 >= 1; l1--) + gameGraphics.cbg(0, l1, 0, 194 - l1, 512, 8); + + if(bgPixels == null) + gameGraphics.drawPicture(15, 15, baseInventoryPic + 10); + else + gameGraphics.drawPixels(bgPixels, 0, 0, bgPixels.length, bgPixels[0].length); + gameGraphics.cca(baseLoginScreenBackgroundPic + 1, 0, 0, 512, 200); + gameGraphics.cbl(baseLoginScreenBackgroundPic + 1); + for(int i2 = 0; i2 < 64; i2++) { + gameCamera.removeModel(engineHandle.gih[0][i2]); + gameCamera.removeModel(engineHandle.gim[1][i2]); + gameCamera.removeModel(engineHandle.gih[1][i2]); + gameCamera.removeModel(engineHandle.gim[2][i2]); + gameCamera.removeModel(engineHandle.gih[2][i2]); + } + + c1 = '\u2B80'; + c2 = '\u2880'; + c3 = '\u01F4'; + c4 = '\u0178'; + gameCamera.zoom1 = 4100; + gameCamera.zoom2 = 4100; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 4000; + gameCamera.setCamera(c1, -engineHandle.getAveragedElevation(c1, c2), c2, 912, c4, 0, c3 * 2); + gameCamera.finishCamera(); + gameGraphics.screenFadeToBlack(); + gameGraphics.screenFadeToBlack(); + gameGraphics.drawBox(0, 0, 512, 6, 0); + for(int j2 = 6; j2 >= 1; j2--) + gameGraphics.cbg(0, j2, 0, j2, 512, 8); + + gameGraphics.drawBox(0, 194, 512, 20, 0); + for(int k2 = 6; k2 >= 1; k2--) + gameGraphics.cbg(0, k2, 0, 194, 512, 8); + + if(bgPixels == null) + gameGraphics.drawPicture(15, 15, baseInventoryPic + 10); + else + gameGraphics.drawPixels(bgPixels, 0, 0, bgPixels.length, bgPixels[0].length); + gameGraphics.cca(baseInventoryPic + 10, 0, 0, 512, 200); + gameGraphics.cbl(baseInventoryPic + 10); + } + + protected final void handlePacket(int packetID, int packetLength, byte packetData[]) { + try { + if(packetID == 145) { + if(!hasWorldInfo) + return; + lastPlayerCount = playerCount; + for(int l = 0; l < lastPlayerCount; l++) + lastPlayerArray[l] = playerArray[l]; + + int off = 8; + sectionX = DataOperations.getBits(packetData, off, 11); + off += 11; + sectionY = DataOperations.getBits(packetData, off, 13); + off += 13; + int sprite = DataOperations.getBits(packetData, off, 4); + off += 4; + boolean sectionLoaded = loadSection(sectionX, sectionY); + sectionX -= areaX; + sectionY -= areaY; + int mapEnterX = sectionX * magicLoc + 64; + int mapEnterY = sectionY * magicLoc + 64; + if(sectionLoaded) { + ourPlayer.waypointCurrent = 0; + ourPlayer.waypointsEndSprite = 0; + ourPlayer.currentX = ourPlayer.waypointsX[0] = mapEnterX; + ourPlayer.currentY = ourPlayer.waypointsY[0] = mapEnterY; + } + playerCount = 0; + ourPlayer = makePlayer(serverIndex, mapEnterX, mapEnterY, sprite); + int newPlayerCount = DataOperations.getBits(packetData, off, 8); + off += 8; + for(int currentNewPlayer = 0; currentNewPlayer < newPlayerCount; currentNewPlayer++) { + //Mob mob = lastPlayerArray[currentNewPlayer + 1]; + Mob mob = getLastPlayer(DataOperations.getBits(packetData, off, 16)); + off += 16; + int playerAtTile = DataOperations.getBits(packetData, off, 1); + off++; + if(playerAtTile != 0) { + int waypointsLeft = DataOperations.getBits(packetData, off, 1); + off++; + if(waypointsLeft == 0) { + int currentNextSprite = DataOperations.getBits(packetData, off, 3); + off += 3; + int currentWaypoint = mob.waypointCurrent; + int newWaypointX = mob.waypointsX[currentWaypoint]; + int newWaypointY = mob.waypointsY[currentWaypoint]; + if(currentNextSprite == 2 || currentNextSprite == 1 || currentNextSprite == 3) + newWaypointX += magicLoc; + if(currentNextSprite == 6 || currentNextSprite == 5 || currentNextSprite == 7) + newWaypointX -= magicLoc; + if(currentNextSprite == 4 || currentNextSprite == 3 || currentNextSprite == 5) + newWaypointY += magicLoc; + if(currentNextSprite == 0 || currentNextSprite == 1 || currentNextSprite == 7) + newWaypointY -= magicLoc; + mob.nextSprite = currentNextSprite; + mob.waypointCurrent = currentWaypoint = (currentWaypoint + 1) % 10; + mob.waypointsX[currentWaypoint] = newWaypointX; + mob.waypointsY[currentWaypoint] = newWaypointY; + } else { + int needsNextSprite = DataOperations.getBits(packetData, off, 4); + off += 4; + if((needsNextSprite & 0xc) == 12) { + continue; + } + mob.nextSprite = needsNextSprite; + } + } + playerArray[playerCount++] = mob; + } + + int mobCount = 0; + while(off + 24 < packetLength * 8) { + int mobIndex = DataOperations.getBits(packetData, off, 16); + off += 16; + int areaMobX = DataOperations.getBits(packetData, off, 5); + off += 5; + if(areaMobX > 15) + areaMobX -= 32; + int areaMobY = DataOperations.getBits(packetData, off, 5); + off += 5; + if(areaMobY > 15) + areaMobY -= 32; + int mobSprite = DataOperations.getBits(packetData, off, 4); + off += 4; + int addIndex = DataOperations.getBits(packetData, off, 1); + off++; + int mobX = (sectionX + areaMobX) * magicLoc + 64; + int mobY = (sectionY + areaMobY) * magicLoc + 64; + makePlayer(mobIndex, mobX, mobY, mobSprite); + if(addIndex == 0) + playerBufferArrayIndexes[mobCount++] = mobIndex; + } + if(mobCount > 0) { + super.streamClass.createPacket(83); + super.streamClass.addShort(mobCount); + for(int k40 = 0; k40 < mobCount; k40++) { + Mob f5 = playerBufferArray[playerBufferArrayIndexes[k40]]; + super.streamClass.addShort(f5.serverIndex); + super.streamClass.addShort(f5.serverID); + } + + super.streamClass.formatPacket(); + mobCount = 0; + } + return; + } + if(packetID == 109) { + if(needsClear) { + for(int i = 0; i < groundItemID.length; i++) { + groundItemX[i] = -1; + groundItemY[i] = -1; + groundItemID[i] = -1; + groundItemObjectVar[i] = -1; + } + groundItemCount = 0; + needsClear = false; + } + for(int off = 1; off < packetLength;) + if(DataOperations.getByte(packetData[off]) == 255) { + int newCount = 0; + int newSectionX = sectionX + packetData[off + 1] >> 3; + int newSectionY = sectionY + packetData[off + 2] >> 3; + off += 3; + for(int groundItem = 0; groundItem < groundItemCount; groundItem++) { + int newX = (groundItemX[groundItem] >> 3) - newSectionX; + int newY = (groundItemY[groundItem] >> 3) - newSectionY; + if(newX != 0 || newY != 0) { + if(groundItem != newCount) { + groundItemX[newCount] = groundItemX[groundItem]; + groundItemY[newCount] = groundItemY[groundItem]; + groundItemID[newCount] = groundItemID[groundItem]; + groundItemObjectVar[newCount] = groundItemObjectVar[groundItem]; + } + newCount++; + } + } + + groundItemCount = newCount; + } else { + int newID = DataOperations.getShort(packetData, off); + off += 2; + int newX = sectionX + packetData[off++]; + int newY = sectionY + packetData[off++]; + if((newID & 0x8000) == 0) { + groundItemX[groundItemCount] = newX; + groundItemY[groundItemCount] = newY; + groundItemID[groundItemCount] = newID; + groundItemObjectVar[groundItemCount] = 0; + for(int l23 = 0; l23 < objectCount; l23++) { + if(objectX[l23] != newX || objectY[l23] != newY) + continue; + groundItemObjectVar[groundItemCount] = Data.objectGroundItemVar[objectType[l23]]; + break; + } + + groundItemCount++; + } else { + newID &= 0x7fff; + int i24 = 0; + for(int l26 = 0; l26 < groundItemCount; l26++) + if(groundItemX[l26] != newX || groundItemY[l26] != newY || groundItemID[l26] != newID) { + if(l26 != i24) { + groundItemX[i24] = groundItemX[l26]; + groundItemY[i24] = groundItemY[l26]; + groundItemID[i24] = groundItemID[l26]; + groundItemObjectVar[i24] = groundItemObjectVar[l26]; + } + i24++; + } else { + newID = -123; + } + + groundItemCount = i24; + } + } + + return; + } + if(packetID == 27) { + for(int off = 1; off < packetLength;) + if(DataOperations.getByte(packetData[off]) == 255) { + int newCount = 0; + int newSectionX = sectionX + packetData[off + 1] >> 3; + int newSectionY = sectionY + packetData[off + 2] >> 3; + off += 3; + for(int object = 0; object < objectCount; object++) { + int newX = (objectX[object] >> 3) - newSectionX; + int newY = (objectY[object] >> 3) - newSectionY; + if(newX != 0 || newY != 0) { + if(object != newCount) { + objectArray[newCount] = objectArray[object]; + objectArray[newCount].index = newCount; + objectX[newCount] = objectX[object]; + objectY[newCount] = objectY[object]; + objectType[newCount] = objectType[object]; + objectRotation[newCount] = objectRotation[object]; + } + newCount++; + } else { + gameCamera.removeModel(objectArray[object]); + engineHandle.removeObject(objectX[object], objectY[object], objectType[object], objectRotation[object]); + } + } + + objectCount = newCount; + } else { + int index = DataOperations.getShort(packetData, off); + off += 2; + int newSectionX = sectionX + packetData[off++]; + int newSectionY = sectionY + packetData[off++]; + int rotation = packetData[off++]; + int newCount = 0; + for(int object = 0; object < objectCount; object++) + if(objectX[object] != newSectionX || objectY[object] != newSectionY || objectRotation[object] != rotation) { + if(object != newCount) { + objectArray[newCount] = objectArray[object]; + objectArray[newCount].index = newCount; + objectX[newCount] = objectX[object]; + objectY[newCount] = objectY[object]; + objectType[newCount] = objectType[object]; + objectRotation[newCount] = objectRotation[object]; + } + newCount++; + } else { + gameCamera.removeModel(objectArray[object]); + engineHandle.removeObject(objectX[object], objectY[object], objectType[object], objectRotation[object]); + } + + objectCount = newCount; + if(index != 60000) { + engineHandle.registerObjectDir(newSectionX, newSectionY, rotation); + int width; + int height; + if(rotation == 0 || rotation == 4) { + width = Data.objectWidth[index]; + height = Data.objectHeight[index]; + } else { + height = Data.objectWidth[index]; + width = Data.objectHeight[index]; + } + int l40 = ((newSectionX + newSectionX + width) * magicLoc) / 2; + int k42 = ((newSectionY + newSectionY + height) * magicLoc) / 2; + int model = Data.objectModelNumber[index]; + GameObject gameObject = gameDataObjects[model].cnj(); + gameCamera.addModel(gameObject); + gameObject.index = objectCount; + gameObject.cmi(0, rotation * 32, 0); + gameObject.cmk(l40, -engineHandle.getAveragedElevation(l40, k42), k42); + gameObject.cme(true, 48, 48, -50, -10, -50); + engineHandle.gla(newSectionX, newSectionY, index, rotation); + if(index == 74) + gameObject.cmk(0, -480, 0); + objectX[objectCount] = newSectionX; + objectY[objectCount] = newSectionY; + objectType[objectCount] = index; + objectRotation[objectCount] = rotation; + objectArray[objectCount++] = gameObject; + } + } + + return; + } + if(packetID == 114) { + int off = 1; + inventoryItemsCount = packetData[off++] & 0xff; + for(int item = 0; item < inventoryItemsCount; item++) { + int data = DataOperations.getShort(packetData, off); + off += 2; + inventoryItems[item] = data & 0x7fff; + inventoryItemEquipped[item] = data / 32768; + if(Data.itemStackable[data & 0x7fff] == 0) { + inventoryItemCount[item] = DataOperations.getInt(packetData, off); + off += 4; + } else { + inventoryItemCount[item] = 1; + } + } + + return; + } + if(packetID == 53) { + int newMobCount = DataOperations.getShort(packetData, 1); + int off = 3; + for(int current = 0; current < newMobCount; current++) { + int index = DataOperations.getShort(packetData, off); + off += 2; + if(index < 0 || index > playerBufferArray.length) + return; + Mob mob = playerBufferArray[index]; + if(mob == null) + return; + byte mobUpdateType = packetData[off]; + off++; + if(mobUpdateType == 0) { + int j30 = DataOperations.getShort(packetData, off); + off += 2; + if(mob != null) { + mob.playerSkullTimeout = 150; + mob.itemAboveHeadID = j30; + } + } else + if(mobUpdateType == 1) { + byte byte7 = packetData[off]; + off++; + String s3 = ChatMessage.bytesToString(packetData, off, byte7); + if(useChatFilter) + s3 = ChatFilter.filterChat(s3); + boolean ignore = false; + for(int i41 = 0; i41 < super.ignoresCount; i41++) + if(super.ignoresList[i41] == mob.nameHash) + ignore = true; + + if(!ignore) { + mob.lastMessageTimeout = 150; + mob.lastMessage = s3; + displayMessage(mob.username + ": " + mob.lastMessage, 2); + } + off += byte7; + } else + if(mobUpdateType == 2) { + int lastDamageCount = DataOperations.getByte(packetData[off]); + off++; + int currentHits = DataOperations.getByte(packetData[off]); + off++; + int baseHits = DataOperations.getByte(packetData[off]); + off++; + mob.lastDamageCount = lastDamageCount; + mob.currentHits = currentHits; + mob.baseHits = baseHits; + mob.combatTimer = 200; + if(mob == ourPlayer) { + playerStatCurrent[3] = currentHits; + playerStatBase[3] = baseHits; + showWelcomeBox = false; + showServerMessageBox = false; + } + } else + if(mobUpdateType == 3) { + int l30 = DataOperations.getShort(packetData, off); + off += 2; + int l34 = DataOperations.getShort(packetData, off); + off += 2; + mob.projectileType = l30; + mob.attackingNpcIndex = l34; + mob.attackingPlayerIndex = -1; + mob.projectileDistance = projectileRange; + } else + if(mobUpdateType == 4) { + int i31 = DataOperations.getShort(packetData, off); + off += 2; + int i35 = DataOperations.getShort(packetData, off); + off += 2; + mob.projectileType = i31; + mob.attackingPlayerIndex = i35; + mob.attackingNpcIndex = -1; + mob.projectileDistance = projectileRange; + } else + if(mobUpdateType == 5) { + mob.serverID = DataOperations.getShort(packetData, off); + off += 2; + mob.nameHash = DataOperations.getLong(packetData, off); + off += 8; + mob.username = DataOperations.hashToName(mob.nameHash); + int appearanceCount = DataOperations.getByte(packetData[off]); + off++; + for(int j35 = 0; j35 < appearanceCount; j35++) { + mob.appearanceItems[j35] = DataOperations.getByte(packetData[off]); + off++; + } + + for(int j38 = appearanceCount; j38 < 12; j38++) + mob.appearanceItems[j38] = 0; + + mob.hairColour = packetData[off++] & 0xff; + mob.topColour = packetData[off++] & 0xff; + mob.bottomColour = packetData[off++] & 0xff; + mob.skinColour = packetData[off++] & 0xff; + mob.level = packetData[off++] & 0xff; + mob.playerSkulled = packetData[off++] & 0xff; + off++;// TODO to skip the admin flag (should it be removed) + } else + if(mobUpdateType == 6) { + byte byte8 = packetData[off]; + off++; + String s4 = ChatMessage.bytesToString(packetData, off, byte8); + mob.lastMessageTimeout = 150; + mob.lastMessage = s4; + if(mob == ourPlayer) + displayMessage(mob.username + ": " + mob.lastMessage, 5); + off += byte8; + } + } + + return; + } + if(packetID == 95) { + for(int off = 1; off < packetLength;) + if(DataOperations.getByte(packetData[off]) == 255) { + int newCount = 0; + int newSectionX = sectionX + packetData[off + 1] >> 3; + int newSectionY = sectionY + packetData[off + 2] >> 3; + off += 3; + for(int current = 0; current < wallObjectCount; current++) { + int newX = (wallObjectX[current] >> 3) - newSectionX; + int newY = (wallObjectY[current] >> 3) - newSectionY; + if(newX != 0 || newY != 0) { + if(current != newCount) { + wallObjectArray[newCount] = wallObjectArray[current]; + wallObjectArray[newCount].index = newCount + 10000; + wallObjectX[newCount] = wallObjectX[current]; + wallObjectY[newCount] = wallObjectY[current]; + wallObjectDirection[newCount] = wallObjectDirection[current]; + wallObjectID[newCount] = wallObjectID[current]; + } + newCount++; + } else { + gameCamera.removeModel(wallObjectArray[current]); + engineHandle.removeWallObject(wallObjectX[current], wallObjectY[current], wallObjectDirection[current], wallObjectID[current]); + } + } + + wallObjectCount = newCount; + } else { + int newID = DataOperations.getShort(packetData, off); + off += 2; + int newSectionX = sectionX + packetData[off++]; + int newSectionY = sectionY + packetData[off++]; + byte direction = packetData[off++]; + int newCount = 0; + for(int current = 0; current < wallObjectCount; current++) + if(wallObjectX[current] != newSectionX || wallObjectY[current] != newSectionY || wallObjectDirection[current] != direction) { + if(current != newCount) { + wallObjectArray[newCount] = wallObjectArray[current]; + wallObjectArray[newCount].index = newCount + 10000; + wallObjectX[newCount] = wallObjectX[current]; + wallObjectY[newCount] = wallObjectY[current]; + wallObjectDirection[newCount] = wallObjectDirection[current]; + wallObjectID[newCount] = wallObjectID[current]; + } + newCount++; + } else { + gameCamera.removeModel(wallObjectArray[current]); + engineHandle.removeWallObject(wallObjectX[current], wallObjectY[current], wallObjectDirection[current], wallObjectID[current]); + } + + wallObjectCount = newCount; + if(newID != 60000) { + engineHandle.gkc(newSectionX, newSectionY, direction, newID); + GameObject k35 = makeWallObject(newSectionX, newSectionY, direction, newID, wallObjectCount); + wallObjectArray[wallObjectCount] = k35; + wallObjectX[wallObjectCount] = newSectionX; + wallObjectY[wallObjectCount] = newSectionY; + wallObjectID[wallObjectCount] = newID; + wallObjectDirection[wallObjectCount++] = direction; + } + } + + return; + } + if(packetID == 77) { + lastNpcCount = npcCount; + npcCount = 0; + for(int j2 = 0; j2 < lastNpcCount; j2++) + lastNpcArray[j2] = npcArray[j2]; + + int off = 8; + int newCount = DataOperations.getBits(packetData, off, 8); + off += 8; + for(int current = 0; current < newCount; current++) { + Mob newNpc = getLastNpc(DataOperations.getBits(packetData, off, 16)); + off += 16; + int needsUpdate = DataOperations.getBits(packetData, off, 1); + off++; + if(needsUpdate != 0) { + int j32 = DataOperations.getBits(packetData, off, 1); + off++; + if(j32 == 0) { + int nextSprite = DataOperations.getBits(packetData, off, 3); + off += 3; + int waypointCurrent = newNpc.waypointCurrent; + int waypointX = newNpc.waypointsX[waypointCurrent]; + int waypointY = newNpc.waypointsY[waypointCurrent]; + if(nextSprite == 2 || nextSprite == 1 || nextSprite == 3) + waypointX += magicLoc; + if(nextSprite == 6 || nextSprite == 5 || nextSprite == 7) + waypointX -= magicLoc; + if(nextSprite == 4 || nextSprite == 3 || nextSprite == 5) + waypointY += magicLoc; + if(nextSprite == 0 || nextSprite == 1 || nextSprite == 7) + waypointY -= magicLoc; + newNpc.nextSprite = nextSprite; + newNpc.waypointCurrent = waypointCurrent = (waypointCurrent + 1) % 10; + newNpc.waypointsX[waypointCurrent] = waypointX; + newNpc.waypointsY[waypointCurrent] = waypointY; + } else { + int nextSprite = DataOperations.getBits(packetData, off, 4); + off += 4; + if((nextSprite & 0xc) == 12) { + continue; + } + newNpc.nextSprite = nextSprite; + } + } + npcArray[npcCount++] = newNpc; + } + + while(off + 34 < packetLength * 8) { + int mobIndex = DataOperations.getBits(packetData, off, 16); + off += 16; + int areaMobX = DataOperations.getBits(packetData, off, 5); + off += 5; + if(areaMobX > 15) + areaMobX -= 32; + int areaMobY = DataOperations.getBits(packetData, off, 5); + off += 5; + if(areaMobY > 15) + areaMobY -= 32; + int mobSprite = DataOperations.getBits(packetData, off, 4); + off += 4; + int mobX = (sectionX + areaMobX) * magicLoc + 64; + int mobY = (sectionY + areaMobY) * magicLoc + 64; + int addIndex = DataOperations.getBits(packetData, off, 10); + off += 10; + if(addIndex >= Data.npcCount) + addIndex = 24; + makeNPC(mobIndex, mobX, mobY, mobSprite, addIndex); + } + return; + } + if(packetID == 190) { + int newCount = DataOperations.getShort(packetData, 1); + int off = 3; + for(int l16 = 0; l16 < newCount; l16++) { + int npcIndex = DataOperations.getShort(packetData, off); + off += 2; + Mob mob = npcAttackingArray[npcIndex]; + int updateType = DataOperations.getByte(packetData[off]); + off++; + if(updateType == 1) { + int playerIndex = DataOperations.getShort(packetData, off); + off += 2; + byte messageLength = packetData[off]; + off++; + if(mob != null) { + String s5 = ChatMessage.bytesToString(packetData, off, messageLength); + mob.lastMessageTimeout = 150; + mob.lastMessage = s5; + if(playerIndex == ourPlayer.serverIndex) + displayMessage("@yel@" + Data.npcName[mob.npcId] + ": " + mob.lastMessage, 5); + } + off += messageLength; + } else + if(updateType == 2) { + int lastDamageCount = DataOperations.getByte(packetData[off]); + off++; + int currentHits = DataOperations.getByte(packetData[off]); + off++; + int baseHits = DataOperations.getByte(packetData[off]); + off++; + if(mob != null) { + mob.lastDamageCount = lastDamageCount; + mob.currentHits = currentHits; + mob.baseHits = baseHits; + mob.combatTimer = 200; + } + } + } + + return; + } + if(packetID == 223) { + showQuestionMenu = true; + int count = DataOperations.getByte(packetData[1]); + questionMenuCount = count; + int off = 2; + for(int index = 0; index < count; index++) { + int optionLength = DataOperations.getByte(packetData[off]); + off++; + questionMenuAnswer[index] = new String(packetData, off, optionLength); + off += optionLength; + } + + return; + } + if(packetID == 127) { + showQuestionMenu = false; + return; + } + if(packetID == 131) { + loadArea = true; + serverIndex = DataOperations.getShort(packetData, 1); + wildX = DataOperations.getShort(packetData, 3); + wildY = DataOperations.getShort(packetData, 5); + layerIndex = DataOperations.getShort(packetData, 7); + layerModifier = DataOperations.getShort(packetData, 9); + wildY -= layerIndex * layerModifier; + needsClear = true; + hasWorldInfo = true; + return; + } + if(packetID == 180) { + int off = 1; + for(int stat = 0; stat < 18; stat++) + playerStatCurrent[stat] = DataOperations.getByte(packetData[off++]); + + for(int stat = 0; stat < 18; stat++) + playerStatBase[stat] = DataOperations.getByte(packetData[off++]); + + for(int stat = 0; stat < 18; stat++) { + playerStatExp[stat] = DataOperations.getInt(packetData, off); + off += 4; + } + return; + } + if(packetID == 177) { + int off = 1; + for(int j3 = 0; j3 < 5; j3++) { + equipmentStatus[j3] = DataOperations.getShort2(packetData, off); + off += 2; + } + return; + } + if(packetID == 165) { + playerAliveTimeout = 250; + return; + } + if(packetID == 115) { + int k3 = (packetLength - 1) / 4; + for(int i11 = 0; i11 < k3; i11++) { + int k17 = sectionX + DataOperations.getShort2(packetData, 1 + i11 * 4) >> 3; + int i22 = sectionY + DataOperations.getShort2(packetData, 3 + i11 * 4) >> 3; + int j25 = 0; + for(int l28 = 0; l28 < groundItemCount; l28++) { + int j33 = (groundItemX[l28] >> 3) - k17; + int l36 = (groundItemY[l28] >> 3) - i22; + if(j33 != 0 || l36 != 0) { + if(l28 != j25) { + groundItemX[j25] = groundItemX[l28]; + groundItemY[j25] = groundItemY[l28]; + groundItemID[j25] = groundItemID[l28]; + groundItemObjectVar[j25] = groundItemObjectVar[l28]; + } + j25++; + } + } + + groundItemCount = j25; + j25 = 0; + for(int k33 = 0; k33 < objectCount; k33++) { + int i37 = (objectX[k33] >> 3) - k17; + int j39 = (objectY[k33] >> 3) - i22; + if(i37 != 0 || j39 != 0) { + if(k33 != j25) { + objectArray[j25] = objectArray[k33]; + objectArray[j25].index = j25; + objectX[j25] = objectX[k33]; + objectY[j25] = objectY[k33]; + objectType[j25] = objectType[k33]; + objectRotation[j25] = objectRotation[k33]; + } + j25++; + } else { + gameCamera.removeModel(objectArray[k33]); + engineHandle.removeObject(objectX[k33], objectY[k33], objectType[k33], objectRotation[k33]); + } + } + + objectCount = j25; + j25 = 0; + for(int j37 = 0; j37 < wallObjectCount; j37++) { + int k39 = (wallObjectX[j37] >> 3) - k17; + int l41 = (wallObjectY[j37] >> 3) - i22; + if(k39 != 0 || l41 != 0) { + if(j37 != j25) { + wallObjectArray[j25] = wallObjectArray[j37]; + wallObjectArray[j25].index = j25 + 10000; + wallObjectX[j25] = wallObjectX[j37]; + wallObjectY[j25] = wallObjectY[j37]; + wallObjectDirection[j25] = wallObjectDirection[j37]; + wallObjectID[j25] = wallObjectID[j37]; + } + j25++; + } else { + gameCamera.removeModel(wallObjectArray[j37]); + engineHandle.removeWallObject(wallObjectX[j37], wallObjectY[j37], wallObjectDirection[j37], wallObjectID[j37]); + } + } + + wallObjectCount = j25; + } + + return; + } + if(packetID == 207) { + showAppearanceWindow = true; + return; + } + if(packetID == 4) { + int tradeOther = DataOperations.getShort(packetData, 1); + if(playerBufferArray[tradeOther] != null) + tradeOtherName = playerBufferArray[tradeOther].username; + showTradeBox = true; + tradeOtherAccepted = false; + tradeWeAccepted = false; + tradeItemsOurCount = 0; + tradeItemsOtherCount = 0; + return; + } + if(packetID == 187) { + showTradeBox = false; + showTradeConfirmBox = false; + return; + } + if(packetID == 250) { + tradeItemsOtherCount = packetData[1] & 0xff; + int i4 = 2; + for(int j11 = 0; j11 < tradeItemsOtherCount; j11++) { + tradeItemsOther[j11] = DataOperations.getShort(packetData, i4); + i4 += 2; + tradeItemOtherCount[j11] = DataOperations.getInt(packetData, i4); + i4 += 4; + } + + tradeOtherAccepted = false; + tradeWeAccepted = false; + return; + } + if(packetID == 92) { + byte byte0 = packetData[1]; + if(byte0 == 1) { + tradeOtherAccepted = true; + return; + } else { + tradeOtherAccepted = false; + return; + } + } + if(packetID == 253) { + showShopBox = true; + int off = 1; + int newShopItemCount = packetData[off++] & 0xff; + byte isGeneralShop = packetData[off++]; + shopItemSellPriceModifier = packetData[off++] & 0xff; + shopItemBuyPriceModifier = packetData[off++] & 0xff; + for(int j22 = 0; j22 < 40; j22++) + shopItems[j22] = -1; + + for(int item = 0; item < newShopItemCount; item++) { + shopItems[item] = DataOperations.getShort(packetData, off); + off += 2; + shopItemCount[item] = DataOperations.getShort(packetData, off); + off += 2; + shopItemBuyPrice[item] = DataOperations.getInt2(packetData, off); + off += 4; + shopItemSellPrice[item] = DataOperations.getInt2(packetData, off); + off += 4; + } + + if(isGeneralShop == 1) { + int i29 = 39; + for(int l33 = 0; l33 < inventoryItemsCount; l33++) { + if(i29 < newShopItemCount) + break; + boolean flag2 = false; + for(int l39 = 0; l39 < 40; l39++) { + if(shopItems[l39] != inventoryItems[l33]) + continue; + flag2 = true; + break; + } + + if(inventoryItems[l33] == 10) + flag2 = true; + if(!flag2) { + shopItems[i29] = inventoryItems[l33] & 0x7fff; + shopItemCount[i29] = 0; + shopItemSellPrice[i29] = Data.itemBasePrice[shopItems[i29]] - (int)(Data.itemBasePrice[shopItems[i29]] / 2.5); + shopItemSellPrice[i29] -= shopItemSellPrice[i29] * 0.10; + i29--; + } + } + + } + if(selectedShopItemIndex >= 0 && selectedShopItemIndex < 40 && shopItems[selectedShopItemIndex] != selectedShopItemType) { + selectedShopItemIndex = -1; + selectedShopItemType = -2; + } + return; + } + if(packetID == 220) { + showShopBox = false; + return; + } + if(packetID == 18) { + byte byte1 = packetData[1]; + if(byte1 == 1) { + tradeWeAccepted = true; + return; + } else { + tradeWeAccepted = false; + return; + } + } + if(packetID == 152) { + configCameraAutoAngle = DataOperations.getByte(packetData[1]) == 1; + configOneMouseButton = DataOperations.getByte(packetData[2]) == 1; + configSoundOff = DataOperations.getByte(packetData[3]) == 1; + showRoofs = DataOperations.getByte(packetData[4]) == 1; + autoScreenshot = DataOperations.getByte(packetData[5]) == 1; + showCombatWindow = DataOperations.getByte(packetData[6]) == 1; + return; + } + if(packetID == 209) { + for(int k4 = 0; k4 < packetLength - 1; k4++) { + boolean flag = packetData[k4 + 1] == 1; + if(!prayerOn[k4] && flag) + playSound("prayeron"); + if(prayerOn[k4] && !flag) + playSound("prayeroff"); + prayerOn[k4] = flag; + } + + return; + } + if(packetID == 93) { + showBankBox = true; + int off = 1; + serverBankItemsCount = packetData[off++] & 0xff; + maxBankItems = packetData[off++] & 0xff; + for(int l11 = 0; l11 < serverBankItemsCount; l11++) { + serverBankItems[l11] = DataOperations.getShort(packetData, off); + off += 2; + serverBankItemCount[l11] = DataOperations.getInt2(packetData, off); + off += 4; + } + + updateBankItems(); + return; + } + if(packetID == 171) { + showBankBox = false; + return; + } + if(packetID == 211) { + int j5 = packetData[1] & 0xff; + playerStatExp[j5] = DataOperations.getInt(packetData, 2); + return; + } + if(packetID == 229) { + int k5 = DataOperations.getShort(packetData, 1); + if(playerBufferArray[k5] != null) + duelOpponent = playerBufferArray[k5].username; + showDuelBox = true; + duelMyItemCount = 0; + duelOpponentItemCount = 0; + duelOpponentAccepted = false; + duelMyAccepted = false; + duelNoRetreating = false; + duelNoMagic = false; + duelNoPrayer = false; + duelNoWeapons = false; + return; + } + if(packetID == 160) { + showDuelBox = false; + showDuelConfirmBox = false; + return; + } + if(packetID == 251) { + showTradeConfirmBox = true; + tradeConfirmAccepted = false; + showTradeBox = false; + int off = 1; + tradeConfirmOtherNameLong = DataOperations.getLong(packetData, off); + off += 8; + tradeConfirmOtherItemCount = packetData[off++] & 0xff; + for(int i12 = 0; i12 < tradeConfirmOtherItemCount; i12++) { + tradeConfirmOtherItems[i12] = DataOperations.getShort(packetData, off); + off += 2; + tradeConfirmOtherItemsCount[i12] = DataOperations.getInt(packetData, off); + off += 4; + } + + tradeConfigItemCount = packetData[off++] & 0xff; + for(int l17 = 0; l17 < tradeConfigItemCount; l17++) { + tradeConfirmItems[l17] = DataOperations.getShort(packetData, off); + off += 2; + tradeConfigItemsCount[l17] = DataOperations.getInt(packetData, off); + off += 4; + } + + return; + } + if(packetID == 63) { + duelOpponentItemCount = packetData[1] & 0xff; + int off = 2; + for(int j12 = 0; j12 < duelOpponentItemCount; j12++) { + duelOpponentItems[j12] = DataOperations.getShort(packetData, off); + off += 2; + duelOpponentItemsCount[j12] = DataOperations.getInt(packetData, off); + off += 4; + } + + duelOpponentAccepted = false; + duelMyAccepted = false; + return; + } + if(packetID == 198) { + if(packetData[1] == 1) + duelNoRetreating = true; + else + duelNoRetreating = false; + if(packetData[2] == 1) + duelNoMagic = true; + else + duelNoMagic = false; + if(packetData[3] == 1) + duelNoPrayer = true; + else + duelNoPrayer = false; + if(packetData[4] == 1) + duelNoWeapons = true; + else + duelNoWeapons = false; + duelOpponentAccepted = false; + duelMyAccepted = false; + return; + } + if(packetID == 139) { + int off = 1; + int itemSlot = packetData[off++] & 0xff; + int itemID = DataOperations.getShort(packetData, off); + off += 2; + int itemCount = DataOperations.getInt2(packetData, off); + off += 4; + if(itemCount == 0) { + serverBankItemsCount--; + for(int l25 = itemSlot; l25 < serverBankItemsCount; l25++) { + serverBankItems[l25] = serverBankItems[l25 + 1]; + serverBankItemCount[l25] = serverBankItemCount[l25 + 1]; + } + + } else { + serverBankItems[itemSlot] = itemID; + serverBankItemCount[itemSlot] = itemCount; + if(itemSlot >= serverBankItemsCount) + serverBankItemsCount = itemSlot + 1; + } + updateBankItems(); + return; + } + if(packetID == 228) { + int off = 1; + int count = 1; + int newCount = packetData[off++] & 0xff; + int data = DataOperations.getShort(packetData, off); + off += 2; + if(Data.itemStackable[data & 0x7fff] == 0) { + count = DataOperations.getInt(packetData, off); + off += 4; + } + inventoryItems[newCount] = data & 0x7fff; + inventoryItemEquipped[newCount] = data / 32768; + inventoryItemCount[newCount] = count; + if(newCount >= inventoryItemsCount) + inventoryItemsCount = newCount + 1; + return; + } + if(packetID == 191) { + int l6 = packetData[1] & 0xff; + inventoryItemsCount--; + for(int i13 = l6; i13 < inventoryItemsCount; i13++) { + inventoryItems[i13] = inventoryItems[i13 + 1]; + inventoryItemCount[i13] = inventoryItemCount[i13 + 1]; + inventoryItemEquipped[i13] = inventoryItemEquipped[i13 + 1]; + } + + return; + } + if(packetID == 208) { + int off = 1; + int stat = packetData[off++] & 0xff; + playerStatCurrent[stat] = DataOperations.getByte(packetData[off++]); + playerStatBase[stat] = DataOperations.getByte(packetData[off++]); + playerStatExp[stat] = DataOperations.getInt(packetData, off); + off += 4; + return; + } + if(packetID == 65) { + byte byte2 = packetData[1]; + if(byte2 == 1) { + duelOpponentAccepted = true; + return; + } else { + duelOpponentAccepted = false; + return; + } + } + if(packetID == 197) { + byte byte3 = packetData[1]; + if(byte3 == 1) { + duelMyAccepted = true; + return; + } else { + duelMyAccepted = false; + return; + } + } + if(packetID == 147) { + showDuelConfirmBox = true; + duelConfirmOurAccepted = false; + showDuelBox = false; + int off = 1; + duelOpponentHash = DataOperations.getLong(packetData, off); + off += 8; + duelOpponentStakeCount = packetData[off++] & 0xff; + for(int k13 = 0; k13 < duelOpponentStakeCount; k13++) { + duelOpponentStakeItem[k13] = DataOperations.getShort(packetData, off); + off += 2; + duelOutStakeItemCount[k13] = DataOperations.getInt(packetData, off); + off += 4; + } + + duelOurStakeCount = packetData[off++] & 0xff; + for(int k18 = 0; k18 < duelOurStakeCount; k18++) { + duelOurStakeItem[k18] = DataOperations.getShort(packetData, off); + off += 2; + duelOurStakeItemCount[k18] = DataOperations.getInt(packetData, off); + off += 4; + } + + duelRetreat = packetData[off++] & 0xff; + duelMagic = packetData[off++] & 0xff; + duelPrayer = packetData[off++] & 0xff; + duelWeapons = packetData[off++] & 0xff; + return; + } + if(packetID == 11) { + String s1 = new String(packetData, 1, packetLength - 1); + playSound(s1); + return; + } + if(packetID == 23) { + if(teleBubbleCount < 50) { + int type = packetData[1] & 0xff; + int x = packetData[2] + sectionX; + int y = packetData[3] + sectionY; + teleBubbleType[teleBubbleCount] = type; + teleBubbleTime[teleBubbleCount] = 0; + teleBubbleX[teleBubbleCount] = x; + teleBubbleY[teleBubbleCount] = y; + teleBubbleCount++; + } + return; + } + if(packetID == 248) { + if(!loginScreenShown) { + lastLoginDays = DataOperations.getShort(packetData, 1); + subDaysLeft = DataOperations.getShort(packetData, 3); + lastLoginAddress = new String(packetData, 5, packetLength - 5); + showWelcomeBox = true; + loginScreenShown = true; + } + return; + } + if(packetID == 148) { + serverMessage = new String(packetData, 1, packetLength - 1); + showServerMessageBox = true; + serverMessageBoxTop = false; + return; + } + if(packetID == 64) { + serverMessage = new String(packetData, 1, packetLength - 1); + showServerMessageBox = true; + serverMessageBoxTop = true; + return; + } + if(packetID == 126) { + fatigue = DataOperations.getShort(packetData, 1); + return; + } + if(packetID == 206) { + isSleeping = true; + super.inputText = ""; + super.enteredInputText = ""; + try { + BufferedImage image = ImageIO.read(new ByteArrayInputStream(packetData, 1, packetLength)); + captchaWidth = image.getWidth(); + captchaHeight = image.getHeight(); + captchaPixels = new int[captchaWidth][captchaHeight]; + for(int x = 0; x < captchaWidth; x++) + for(int y = 0; y < captchaHeight; y++) + captchaPixels[x][y] = image.getRGB(x, y); + } catch(Exception e) { + e.printStackTrace(); + } + sleepingStatusText = null; + return; + } + if(packetID == 224) { + isSleeping = false; + return; + } + if(packetID == 225) { + sleepingStatusText = "Incorrect - Please wait..."; + return; + } + if(packetID == 172) { + systemUpdate = DataOperations.getShort(packetData, 1) * 32; + return; + } + if(packetID == 181) { + if(autoScreenshot) + takeScreenshot(false); + return; + } + if(packetID == 182) { + int off = 1; + questPoints = DataOperations.getShort(packetData, off); + off += 2; + for(int l4 = 0; l4 < questName.length; l4++) + questStage[l4] = packetData[l4 + 1]; + + return; + } + if(packetID == 233) { + questPoints = DataOperations.getByte(packetData[1]); + int count = DataOperations.getByte(packetData[2]); + int off = 3; + String newQuestNames[] = new String[count]; + int newQuestStage[] = new int[count]; + for(int i = 0; i < count; i++) { + newQuestNames[i] = questName[DataOperations.getByte(packetData[off++])]; + newQuestStage[i] = DataOperations.getByte(packetData[off++]); + } + usedQuestName = newQuestNames; + questStage = newQuestStage; + return; + } + if(packetID == 129) { + combatStyle = DataOperations.getByte(packetData[1]); + return; + } + if(packetID == 110) {// TODO remove? + //System.out.println("RECEIVED PACKET 110 (SERVER INFO)"); + return; + } + System.err.println("UNHANDLED PACKET:" + packetID + " LEN:" + packetLength); + } + catch(Exception ex) { + ex.printStackTrace(); + } + } + + protected final void startThread(Runnable runnable) { + if(link.gameApplet != null) { + link.thread(runnable); + return; + } else { + Thread thread = new Thread(runnable); + thread.setDaemon(true); + thread.start(); + return; + } + } + + protected final void initVars() { + systemUpdate = 0; + combatStyle = 0; + logoutTimer = 0; + loginScreen = 0; + loggedIn = 1; + resetPrivateMessages(); + gameGraphics.clearScreen(); + gameGraphics.drawImage(graphics, 0, 0); + for(int l = 0; l < objectCount; l++) { + gameCamera.removeModel(objectArray[l]); + engineHandle.removeObject(objectX[l], objectY[l], objectType[l], objectRotation[l]); + } + + for(int i1 = 0; i1 < wallObjectCount; i1++) { + gameCamera.removeModel(wallObjectArray[i1]); + engineHandle.removeWallObject(wallObjectX[i1], wallObjectY[i1], wallObjectDirection[i1], wallObjectID[i1]); + } + + objectCount = 0; + wallObjectCount = 0; + groundItemCount = 0; + playerCount = 0; + for(int j1 = 0; j1 < 4000; j1++) + playerBufferArray[j1] = null; + + for(int k1 = 0; k1 < 500; k1++) + playerArray[k1] = null; + + npcCount = 0; + for(int l1 = 0; l1 < 5000; l1++) + npcAttackingArray[l1] = null; + + for(int i2 = 0; i2 < 500; i2++) + npcArray[i2] = null; + + for(int j2 = 0; j2 < 50; j2++) + prayerOn[j2] = false; + + mouseButtonClick = 0; + super.lastMouseButton = 0; + super.mouseButton = 0; + showShopBox = false; + showBankBox = false; + isSleeping = false; + super.friendsCount = 0; + } + + private final void drawMinimapMenu(boolean canClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 199; + char c1 = '\234'; + char c3 = '\230'; + gameGraphics.drawPicture(l - 49, 3, baseInventoryPic + 2); + l += 40; + gameGraphics.drawBox(l, 36, c1, c3, 0); + gameGraphics.setGameBoundaries(l, 36, l + c1, 36 + c3); + int j1 = 192 + minimapRandomRotationY; + int l1 = cameraRotation + minimapRandomRotationX & 0xff; + int j2 = ((ourPlayer.currentX - 6040) * 3 * j1) / 2048; + int l3 = ((ourPlayer.currentY - 6040) * 3 * j1) / 2048; + int j5 = Camera.bbk[1024 - l1 * 4 & 0x3ff]; + int l5 = Camera.bbk[(1024 - l1 * 4 & 0x3ff) + 1024]; + int j6 = l3 * j5 + j2 * l5 >> 18; + l3 = l3 * l5 - j2 * j5 >> 18; + j2 = j6; + gameGraphics.drawMinimapPic((l + c1 / 2) - j2, 36 + c3 / 2 + l3, baseInventoryPic - 1, l1 + 64 & 0xff, j1); + for(int l7 = 0; l7 < objectCount; l7++) { + int k2 = (((objectX[l7] * magicLoc + 64) - ourPlayer.currentX) * 3 * j1) / 2048; + int i4 = (((objectY[l7] * magicLoc + 64) - ourPlayer.currentY) * 3 * j1) / 2048; + int k6 = i4 * j5 + k2 * l5 >> 18; + i4 = i4 * l5 - k2 * j5 >> 18; + k2 = k6; + drawMinimapObject(l + c1 / 2 + k2, (36 + c3 / 2) - i4, 65535); + } + + for(int i8 = 0; i8 < groundItemCount; i8++) { + int l2 = (((groundItemX[i8] * magicLoc + 64) - ourPlayer.currentX) * 3 * j1) / 2048; + int j4 = (((groundItemY[i8] * magicLoc + 64) - ourPlayer.currentY) * 3 * j1) / 2048; + int l6 = j4 * j5 + l2 * l5 >> 18; + j4 = j4 * l5 - l2 * j5 >> 18; + l2 = l6; + drawMinimapObject(l + c1 / 2 + l2, (36 + c3 / 2) - j4, 0xff0000); + } + + for(int j8 = 0; j8 < npcCount; j8++) { + Mob f1 = npcArray[j8]; + int i3 = ((f1.currentX - ourPlayer.currentX) * 3 * j1) / 2048; + int k4 = ((f1.currentY - ourPlayer.currentY) * 3 * j1) / 2048; + int i7 = k4 * j5 + i3 * l5 >> 18; + k4 = k4 * l5 - i3 * j5 >> 18; + i3 = i7; + drawMinimapObject(l + c1 / 2 + i3, (36 + c3 / 2) - k4, 0xffff00); + } + + for(int k8 = 0; k8 < playerCount; k8++) { + Mob f2 = playerArray[k8]; + int j3 = ((f2.currentX - ourPlayer.currentX) * 3 * j1) / 2048; + int l4 = ((f2.currentY - ourPlayer.currentY) * 3 * j1) / 2048; + int j7 = l4 * j5 + j3 * l5 >> 18; + l4 = l4 * l5 - j3 * j5 >> 18; + j3 = j7; + int i9 = 0xffffff; + for(int j9 = 0; j9 < super.friendsCount; j9++) { + if(f2.nameHash != super.friendsList[j9] || super.friendsWorld[j9] != 99) + continue; + i9 = 65280; + break; + } + + drawMinimapObject(l + c1 / 2 + j3, (36 + c3 / 2) - l4, i9); + } + + // compass + gameGraphics.drawCircle(l + c1 / 2, 36 + c3 / 2, 2, 0xffffff, 255); + gameGraphics.drawMinimapPic(l + 19, 55, baseInventoryPic + 24, cameraRotation + 128 & 0xff, 128); + gameGraphics.setGameBoundaries(0, 0, windowWidth, windowHeight + 12); + if(!canClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 199); + int l8 = super.mouseY - 36; + if(l >= 40 && l8 >= 0 && l < 196 && l8 < 152) { + char c2 = '\234'; + char c4 = '\230'; + int k1 = 192 + minimapRandomRotationY; + int i2 = cameraRotation + minimapRandomRotationX & 0xff; + int i1 = ((GameImage) (gameGraphics)).gameWidth - 199; + i1 += 40; + int k3 = ((super.mouseX - (i1 + c2 / 2)) * 16384) / (3 * k1); + int i5 = ((super.mouseY - (36 + c4 / 2)) * 16384) / (3 * k1); + int k5 = Camera.bbk[1024 - i2 * 4 & 0x3ff]; + int i6 = Camera.bbk[(1024 - i2 * 4 & 0x3ff) + 1024]; + int k7 = i5 * k5 + k3 * i6 >> 15; + i5 = i5 * i6 - k3 * k5 >> 15; + k3 = k7; + k3 += ourPlayer.currentX; + i5 = ourPlayer.currentY - i5; + if(mouseButtonClick == 1) + walkTo1Tile(sectionX, sectionY, k3 / 128, i5 / 128, false); + mouseButtonClick = 0; + } + } + + private final boolean validCameraAngle(int arg0) { + int l = ourPlayer.currentX / 128; + int i1 = ourPlayer.currentY / 128; + for(int j1 = 2; j1 >= 1; j1--) { + if(arg0 == 1 && ((engineHandle.tiles[l][i1 - j1] & 0x80) == 128 || (engineHandle.tiles[l - j1][i1] & 0x80) == 128 || (engineHandle.tiles[l - j1][i1 - j1] & 0x80) == 128)) + return false; + if(arg0 == 3 && ((engineHandle.tiles[l][i1 + j1] & 0x80) == 128 || (engineHandle.tiles[l - j1][i1] & 0x80) == 128 || (engineHandle.tiles[l - j1][i1 + j1] & 0x80) == 128)) + return false; + if(arg0 == 5 && ((engineHandle.tiles[l][i1 + j1] & 0x80) == 128 || (engineHandle.tiles[l + j1][i1] & 0x80) == 128 || (engineHandle.tiles[l + j1][i1 + j1] & 0x80) == 128)) + return false; + if(arg0 == 7 && ((engineHandle.tiles[l][i1 - j1] & 0x80) == 128 || (engineHandle.tiles[l + j1][i1] & 0x80) == 128 || (engineHandle.tiles[l + j1][i1 - j1] & 0x80) == 128)) + return false; + if(arg0 == 0 && (engineHandle.tiles[l][i1 - j1] & 0x80) == 128) + return false; + if(arg0 == 2 && (engineHandle.tiles[l - j1][i1] & 0x80) == 128) + return false; + if(arg0 == 4 && (engineHandle.tiles[l][i1 + j1] & 0x80) == 128) + return false; + if(arg0 == 6 && (engineHandle.tiles[l + j1][i1] & 0x80) == 128) + return false; + } + + return true; + } + + private final void loadSounds() { + try { + soundData = unpackData("sounds.mem", "Sound effects", 90); + audioPlayer = new AudioReader(); + return; + } + catch(Throwable throwable) { + System.out.println("Unable to init sounds:" + throwable); + } + } + + protected final void loadGame() { + int l = 0; + for(int i1 = 0; i1 < 99; i1++) { + int j1 = i1 + 1; + int l1 = (int)((double)j1 + 300D * Math.pow(2D, (double)j1 / 7D)); + l += l1; + experienceList[i1] = l & 0xffffffc; + } + loadConfig(); + if(errorLoading) + return; + GameAppletMiddleMan.maxPacketReadCount = 500; + baseInventoryPic = 2000; + baseScrollPic = baseInventoryPic + 100; + baseItemPicture = baseScrollPic + 50; + baseLoginScreenBackgroundPic = baseItemPicture + 1000; + baseProjectilePic = baseLoginScreenBackgroundPic + 10; + baseTexturePic = baseProjectilePic + 50; + subTexturePic = baseTexturePic + 10; + graphics = getGraphics(); + setRefreshRate(50); + gameGraphics = new GameImageMiddleMan(windowWidth, windowHeight + 12, 4000, this); + gameGraphics.gameReference = this; + gameGraphics.setGameBoundaries(0, 0, windowWidth, windowHeight + 12); + Menu.gdh = false; + Menu.baseScrollPic = baseScrollPic; + spellMenu = new Menu(gameGraphics, 5); + int k1 = ((GameImage) (gameGraphics)).gameWidth - 199; + byte byte0 = 36; + spellMenuHandle = spellMenu.createList(k1, byte0 + 24, 196, 90, 1, 500, true); + friendsMenu = new Menu(gameGraphics, 5); + friendsMenuHandle = friendsMenu.createList(k1, byte0 + 40, 196, 126, 1, 500, true); + questMenu = new Menu(gameGraphics, 5); + questMenuHandle = questMenu.createList(k1, byte0 + 24, 196, 251, 1, 500, true); + loadMedia(); + if(errorLoading) + return; + loadAnimations(); + if(errorLoading) + return; + gameCamera = new Camera(gameGraphics, 15000, 15000, 1000); + gameCamera.setCameraSize(windowWidth / 2, windowHeight / 2, windowWidth / 2, windowHeight / 2, windowWidth, cameraFieldOfView); + gameCamera.zoom1 = 2400; + gameCamera.zoom2 = 2400; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 2300; + gameCamera.bjk(-50, -10, -50); + engineHandle = new EngineHandle(gameCamera, gameGraphics); + engineHandle.gjc = baseInventoryPic; + loadTextures(); + if(errorLoading) + return; + loadModels(); + if(errorLoading) + return; + loadMap(); + if(errorLoading) + return; + loadSounds(); + if(!errorLoading) { + drawLoadingBarText(100, "Starting game..."); + createChatInputMenu(); + createLoginMenus(); + createAppearanceWindow(); + setLoginVars(); + createLoginScreenBackgrounds(); + return; + } + } + + private final void createLoginMenus() { + loginMenuFirst = new Menu(gameGraphics, 50); + int l = 40; + if(!Config.MEMBERS_FEATURES) { + loginMenuFirst.drawText(256, 200 + l, "Click on an option", 5, true); + loginMenuFirst.drawButton(156, 240 + l, 120, 35); + loginMenuFirst.drawButton(356, 240 + l, 120, 35); + loginMenuFirst.drawText(156, 240 + l, "New User", 5, false); + loginMenuFirst.drawText(356, 240 + l, "Existing User", 5, false); + loginButtonNewUser = loginMenuFirst.createButton(156, 240 + l, 120, 35); + loginMenuLoginButton = loginMenuFirst.createButton(356, 240 + l, 120, 35); + } else { + loginMenuFirst.drawText(256, 200 + l, "Welcome to RuneScape", 4, true); + loginMenuFirst.drawText(256, 215 + l, "You need a member account to use this server", 4, true); + loginMenuFirst.drawButton(256, 250 + l, 200, 35); + loginMenuFirst.drawText(256, 250 + l, "Click here to login", 5, false); + loginMenuLoginButton = loginMenuFirst.createButton(256, 250 + l, 200, 35); + } + loginNewUser = new Menu(gameGraphics, 50); + l = 230; + loginNewUser.drawText(256, l + 8, "To create an account please go back to the", 4, true); + l += 20; + loginNewUser.drawText(256, l + 8, "www.runescape.com front page, and choose 'create account'", 4, true); + l += 30; + loginNewUser.drawButton(256, l + 17, 150, 34); + loginNewUser.drawText(256, l + 17, "Ok", 5, false); + loginMenuOkButton = loginNewUser.createButton(256, l + 17, 150, 34); + loginMenuLogin = new Menu(gameGraphics, 50); + l = 230; + loginMenuStatusText = loginMenuLogin.drawText(256, l - 10, "Please enter your username and password", 4, true); + l += 28; + loginMenuLogin.drawButton(140, l, 200, 40); + loginMenuLogin.drawText(140, l - 10, "Username:", 4, false); + loginMenuUserText = loginMenuLogin.createInput(140, l + 10, 200, 40, 4, 12, false, false); + l += 47; + loginMenuLogin.drawButton(190, l, 200, 40); + loginMenuLogin.drawText(190, l - 10, "Password:", 4, false); + loginMenuPasswordText = loginMenuLogin.createInput(190, l + 10, 200, 40, 4, 20, true, false); + l -= 55; + loginMenuLogin.drawButton(410, l, 120, 25); + loginMenuLogin.drawText(410, l, "Ok", 4, false); + loginMenuOkLoginButton = loginMenuLogin.createButton(410, l, 120, 25); + l += 30; + loginMenuLogin.drawButton(410, l, 120, 25); + loginMenuLogin.drawText(410, l, "Cancel", 4, false); + loginMenuCancelButton = loginMenuLogin.createButton(410, l, 120, 25); + l += 30; + loginMenuLogin.setFocus(loginMenuUserText); + } + + protected final void lostConnection() { + systemUpdate = 0; + if(logoutTimer != 0) { + resetIntVars(); + return; + } else { + super.lostConnection(); + return; + } + } + + private final void loadMedia() { + byte media[] = unpackData("media.jag", "2d graphics", 20); + if(media == null) { + errorLoading = true; + return; + } + byte abyte1[] = DataOperations.loadData("index.dat", 0, media); + gameGraphics.unpackImageData(baseInventoryPic, DataOperations.loadData("inv1.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 1, DataOperations.loadData("inv2.dat", 0, media), abyte1, 6); + gameGraphics.unpackImageData(baseInventoryPic + 9, DataOperations.loadData("bubble.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 10, DataOperations.loadData("runescape.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 11, DataOperations.loadData("splat.dat", 0, media), abyte1, 3); + gameGraphics.unpackImageData(baseInventoryPic + 14, DataOperations.loadData("icon.dat", 0, media), abyte1, 8); + gameGraphics.unpackImageData(baseInventoryPic + 22, DataOperations.loadData("hbar.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 23, DataOperations.loadData("hbar2.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 24, DataOperations.loadData("compass.dat", 0, media), abyte1, 1); + gameGraphics.unpackImageData(baseInventoryPic + 25, DataOperations.loadData("buttons.dat", 0, media), abyte1, 2); + gameGraphics.unpackImageData(baseScrollPic, DataOperations.loadData("scrollbar.dat", 0, media), abyte1, 2); + gameGraphics.unpackImageData(baseScrollPic + 2, DataOperations.loadData("corners.dat", 0, media), abyte1, 4); + gameGraphics.unpackImageData(baseScrollPic + 6, DataOperations.loadData("arrows.dat", 0, media), abyte1, 2); + gameGraphics.unpackImageData(baseProjectilePic, DataOperations.loadData("projectile.dat", 0, media), abyte1, Data.spellProjectileCount); + int l = Data.highestLoadedPicture; + for(int i1 = 1; l > 0; i1++) { + int j1 = l; + l -= 30; + if(j1 > 30) + j1 = 30; + gameGraphics.unpackImageData(baseItemPicture + (i1 - 1) * 30, DataOperations.loadData("objects" + i1 + ".dat", 0, media), abyte1, j1); + } + + gameGraphics.loadImage(baseInventoryPic); + gameGraphics.loadImage(baseInventoryPic + 9); + for(int k1 = 11; k1 <= 26; k1++) + gameGraphics.loadImage(baseInventoryPic + k1); + + for(int l1 = 0; l1 < Data.spellProjectileCount; l1++) + gameGraphics.loadImage(baseProjectilePic + l1); + + for(int i2 = 0; i2 < Data.highestLoadedPicture; i2++) + gameGraphics.loadImage(baseItemPicture + i2); + + } + + protected final void checkInputs() { + if(memoryError) + return; + if(errorLoading) + return; + try { + tick++; + if(loggedIn == 0) { + checkLoginScreenInputs(); + } + if(loggedIn == 1) { + checkGameInputs(); + } + super.lastMouseButton = 0; + cameraRotateTime++; + if(cameraRotateTime > 500) { + cameraRotateTime = 0; + int l = (int)(Math.random() * 4D); + if((l & 1) == 1) + cameraRotationXAmount += cameraRotationXIncrement; + if((l & 2) == 2) + cameraRotationYAmount += cameraRotationYIncrement; + } + if(cameraRotationXAmount < -50) + cameraRotationXIncrement = 2; + if(cameraRotationXAmount > 50) + cameraRotationXIncrement = -2; + if(cameraRotationYAmount < -50) + cameraRotationYIncrement = 2; + if(cameraRotationYAmount > 50) + cameraRotationYIncrement = -2; + if(chatTabAllMsgFlash > 0) + chatTabAllMsgFlash--; + if(chatTabHistoryFlash > 0) + chatTabHistoryFlash--; + if(chatTabQuestFlash > 0) + chatTabQuestFlash--; + if(chatTabPrivateFlash > 0) + chatTabPrivateFlash--; + } + catch(OutOfMemoryError _ex) { + cleanUp(); + memoryError = true; + } + } + + private final void loadAnimations() { + byte abyte0[] = null; + byte abyte1[] = null; + abyte0 = unpackData("entity.jag", "people and monsters", 30); + if(abyte0 == null) { + errorLoading = true; + return; + } + abyte1 = DataOperations.loadData("index.dat", 0, abyte0); + byte abyte2[] = null; + byte abyte3[] = null; + abyte2 = unpackData("entity.mem", "member graphics", 45); + if(abyte2 == null) { + errorLoading = true; + return; + } + abyte3 = DataOperations.loadData("index.dat", 0, abyte2); + int l = 0; + animationNumber = 0; +label0: + for(int i1 = 0; i1 < Data.animationCount; i1++) { + String s1 = Data.animationName[i1]; + for(int j1 = 0; j1 < i1; j1++) { + if(!Data.animationName[j1].equalsIgnoreCase(s1)) + continue; + Data.animationNumber[i1] = Data.animationNumber[j1]; + continue label0; + } + + byte abyte7[] = DataOperations.loadData(s1 + ".dat", 0, abyte0); + byte abyte4[] = abyte1; + if(abyte7 == null) { + abyte7 = DataOperations.loadData(s1 + ".dat", 0, abyte2); + abyte4 = abyte3; + } + if(abyte7 != null) { + gameGraphics.unpackImageData(animationNumber, abyte7, abyte4, 15); + l += 15; + if(Data.animationHasA[i1] == 1) { + byte abyte8[] = DataOperations.loadData(s1 + "a.dat", 0, abyte0); + byte abyte5[] = abyte1; + if(abyte8 == null) { + abyte8 = DataOperations.loadData(s1 + "a.dat", 0, abyte2); + abyte5 = abyte3; + } + gameGraphics.unpackImageData(animationNumber + 15, abyte8, abyte5, 3); + l += 3; + } + if(Data.animationHasF[i1] == 1) { + byte abyte9[] = DataOperations.loadData(s1 + "f.dat", 0, abyte0); + byte abyte6[] = abyte1; + if(abyte9 == null) { + abyte9 = DataOperations.loadData(s1 + "f.dat", 0, abyte2); + abyte6 = abyte3; + } + gameGraphics.unpackImageData(animationNumber + 18, abyte9, abyte6, 9); + l += 9; + } + if(Data.animationGenderModels[i1] != 0) { + for(int k1 = animationNumber; k1 < animationNumber + 27; k1++) + gameGraphics.loadImage(k1); + + } + } + Data.animationNumber[i1] = animationNumber; + animationNumber += 27; + } + + //System.out.println("Loaded: " + l + " frames of animation"); + } + + private final void updateAppearanceWindow() { + appearanceMenu.mouseClick(super.mouseX, super.mouseY, super.lastMouseButton, super.mouseButton); + if(appearanceMenu.isClicked(appearanceHeadLeftArrow)) + do + appearanceHeadType = ((appearanceHeadType - 1) + Data.animationCount) % Data.animationCount; + while((Data.animationGenderModels[appearanceHeadType] & 3) != 1 || (Data.animationGenderModels[appearanceHeadType] & 4 * appearanceHeadGender) == 0); + if(appearanceMenu.isClicked(appearanceHeadRightArrow)) + do + appearanceHeadType = (appearanceHeadType + 1) % Data.animationCount; + while((Data.animationGenderModels[appearanceHeadType] & 3) != 1 || (Data.animationGenderModels[appearanceHeadType] & 4 * appearanceHeadGender) == 0); + if(appearanceMenu.isClicked(appearanceHairLeftArrow)) + appearanceHairColour = ((appearanceHairColour - 1) + appearanceHairColours.length) % appearanceHairColours.length; + if(appearanceMenu.isClicked(appearanceHairRightArrow)) + appearanceHairColour = (appearanceHairColour + 1) % appearanceHairColours.length; + if(appearanceMenu.isClicked(appearanceGenderLeftArrow) || appearanceMenu.isClicked(appearanceGenderRightArrow)) { + for(appearanceHeadGender = 3 - appearanceHeadGender; (Data.animationGenderModels[appearanceHeadType] & 3) != 1 || (Data.animationGenderModels[appearanceHeadType] & 4 * appearanceHeadGender) == 0; appearanceHeadType = (appearanceHeadType + 1) % Data.animationCount); + for(; (Data.animationGenderModels[appearanceBodyGender] & 3) != 2 || (Data.animationGenderModels[appearanceBodyGender] & 4 * appearanceHeadGender) == 0; appearanceBodyGender = (appearanceBodyGender + 1) % Data.animationCount); + } + if(appearanceMenu.isClicked(appearanceTopLeftArrow)) + appearanceTopColour = ((appearanceTopColour - 1) + appearanceTopBottomColours.length) % appearanceTopBottomColours.length; + if(appearanceMenu.isClicked(appearanceTopRightArrow)) + appearanceTopColour = (appearanceTopColour + 1) % appearanceTopBottomColours.length; + if(appearanceMenu.isClicked(appearanceSkinLeftArrow)) + appearanceSkinColour = ((appearanceSkinColour - 1) + appearanceSkinColours.length) % appearanceSkinColours.length; + if(appearanceMenu.isClicked(appearanceSkingRightArrow)) + appearanceSkinColour = (appearanceSkinColour + 1) % appearanceSkinColours.length; + if(appearanceMenu.isClicked(appearanceBottomLeftArrow)) + appearanceBottomColour = ((appearanceBottomColour - 1) + appearanceTopBottomColours.length) % appearanceTopBottomColours.length; + if(appearanceMenu.isClicked(appearanceBottomRightArrow)) + appearanceBottomColour = (appearanceBottomColour + 1) % appearanceTopBottomColours.length; + if(appearanceMenu.isClicked(appearanceAcceptButton)) { + super.streamClass.createPacket(218); + super.streamClass.addByte(appearanceHeadGender); + super.streamClass.addByte(appearanceHeadType); + super.streamClass.addByte(appearanceBodyGender); + super.streamClass.addByte(appearance2Colour); + super.streamClass.addByte(appearanceHairColour); + super.streamClass.addByte(appearanceTopColour); + super.streamClass.addByte(appearanceBottomColour); + super.streamClass.addByte(appearanceSkinColour); + super.streamClass.formatPacket(); + gameGraphics.clearScreen(); + showAppearanceWindow = false; + } + } + + private final void drawWelcomeBox() { + int l = 65; + if(!lastLoginAddress.equals("0.0.0.0")) + l += 30; + if(subDaysLeft > 0) + l += 15; + if(lastLoginDays >= 0) + l += 15; + int i1 = 167 - l / 2; + gameGraphics.drawBox(56, 167 - l / 2, 400, l, 0); + gameGraphics.drawBoxEdge(56, 167 - l / 2, 400, l, 0xffffff); + i1 += 20; + gameGraphics.drawText("Welcome to RuneScape " + loginUsername, 256, i1, 4, 0xffff00); + i1 += 30; + String s1; + // lastLoginDays subDaysLeft lastLoginAddress + if(lastLoginDays == 0) + s1 = "earlier today"; + else + if(lastLoginDays == 1) + s1 = "yesterday"; + else + s1 = lastLoginDays + " days ago"; + if(!lastLoginAddress.equals("0.0.0.0")) { + gameGraphics.drawText("You last logged in " + s1, 256, i1, 1, 0xffffff); + i1 += 15; + gameGraphics.drawText("from: " + lastLoginAddress, 256, i1, 1, 0xffffff); + i1 += 15; + } + if(subDaysLeft > 0) { + gameGraphics.drawText("Subscription left: " + subDaysLeft + " days", 256, i1, 1, 0xffffff); + i1 += 15; + } + /*if(unreadMessages > 0) { + int j1 = 0xffffff; + gameGraphics.drawText("Jagex staff will NEVER email you. We use the", 256, i1, 1, j1); + i1 += 15; + gameGraphics.drawText("message-centre on this website instead.", 256, i1, 1, j1); + i1 += 15; + if(unreadMessages == 1) + gameGraphics.drawText("You have @yel@0@whi@ unread messages in your message-centre", 256, i1, 1, 0xffffff); + else + gameGraphics.drawText("You have @gre@" + (unreadMessages - 1) + " unread messages @whi@in your message-centre", 256, i1, 1, 0xffffff); + i1 += 15; + i1 += 15; + } + if(lastChangedRecoveryDays != 201) { + if(lastChangedRecoveryDays == 200) { + gameGraphics.drawText("You have not yet set any password recovery questions.", 256, i1, 1, 0xff8000); + i1 += 15; + gameGraphics.drawText("We strongly recommend you do so now to secure your account.", 256, i1, 1, 0xff8000); + i1 += 15; + gameGraphics.drawText("Do this from the 'account management' area on our front webpage", 256, i1, 1, 0xff8000); + i1 += 15; + } else { + String s2; + if(lastChangedRecoveryDays == 0) + s2 = "Earlier today"; + else + if(lastChangedRecoveryDays == 1) + s2 = "Yesterday"; + else + s2 = lastChangedRecoveryDays + " days ago"; + gameGraphics.drawText(s2 + " you changed your recovery questions", 256, i1, 1, 0xff8000); + i1 += 15; + gameGraphics.drawText("If you do not remember making this change then cancel it immediately", 256, i1, 1, 0xff8000); + i1 += 15; + gameGraphics.drawText("Do this from the 'account management' area on our front webpage", 256, i1, 1, 0xff8000); + i1 += 15; + } + i1 += 15; + }*/ + int k1 = 0xffffff; + if(super.mouseY > i1 - 12 && super.mouseY <= i1 && super.mouseX > 106 && super.mouseX < 406) + k1 = 0xff0000; + gameGraphics.drawText("Click here to close window", 256, i1, 1, k1); + if(mouseButtonClick == 1) { + if(k1 == 0xff0000) + showWelcomeBox = false; + if((super.mouseX < 86 || super.mouseX > 426) && (super.mouseY < 167 - l / 2 || super.mouseY > 167 + l / 2)) + showWelcomeBox = false; + } + mouseButtonClick = 0; + } + + private final int getInventoryItemTotalCount(int arg0) { + int l = 0; + for(int i1 = 0; i1 < inventoryItemsCount; i1++) + if(inventoryItems[i1] == arg0) + if(Data.itemStackable[arg0] == 1) + l++; + else + l += inventoryItemCount[i1]; + + return l; + } + + private final void sendLogout() { + if(loggedIn == 0) + return; + if(combatTimeout > 450) { + displayMessage("@cya@You can't logout during combat!", 3); + return; + } + if(combatTimeout > 0) { + displayMessage("@cya@You can't logout for 10 seconds after combat", 3); + return; + } else { + super.streamClass.createPacket(129); + super.streamClass.formatPacket(); + logoutTimer = 1000; + return; + } + } + + public final URL getCodeBase() { + if(link.gameApplet != null) + return link.gameApplet.getCodeBase(); + else + return super.getCodeBase(); + } + + private final boolean walkTo(int startX, int startY, int destBottomX, int destBottomY, int destTopX, int destTopY, boolean checkForObjects, + boolean walkToACommand) { + int stepCount = engineHandle.generatePath(startX, startY, destBottomX, destBottomY, destTopX, destTopY, walkArrayX, walkArrayY, checkForObjects); + if(stepCount == -1) + if(walkToACommand) { + stepCount = 1; + walkArrayX[0] = destBottomX; + walkArrayY[0] = destBottomY; + } else { + return false; + } + stepCount--; + startX = walkArrayX[stepCount]; + startY = walkArrayY[stepCount]; + stepCount--; + if(walkToACommand) + super.streamClass.createPacket(246); + else + super.streamClass.createPacket(132); + super.streamClass.addShort(startX + areaX); + super.streamClass.addShort(startY + areaY); + if(walkToACommand && stepCount == -1 && (startX + areaX) % 5 == 0) + stepCount = 0; + for(int i1 = stepCount; i1 >= 0 && i1 > stepCount - 25; i1--) { + super.streamClass.addByte(walkArrayX[i1] - startX); + super.streamClass.addByte(walkArrayY[i1] - startY); + } + + super.streamClass.formatPacket(); + actionPictureType = -24; + walkMouseX = super.mouseX; + walkMouseY = super.mouseY; + return true; + } + + private final boolean walkTo2(int startX, int startY, int destBottomX, int destBottomY, int destTopX, int destTopY, boolean unknownDifferent, + boolean walkToACommand) { + int stepCount = engineHandle.generatePath(startX, startY, destBottomX, destBottomY, destTopX, destTopY, walkArrayX, walkArrayY, unknownDifferent); + if(stepCount == -1) + return false; + stepCount--; + startX = walkArrayX[stepCount]; + startY = walkArrayY[stepCount]; + stepCount--; + if(walkToACommand) + super.streamClass.createPacket(246); + else + super.streamClass.createPacket(132); + super.streamClass.addShort(startX + areaX); + super.streamClass.addShort(startY + areaY); + if(walkToACommand && stepCount == -1 && (startX + areaX) % 5 == 0) + stepCount = 0; + for(int i1 = stepCount; i1 >= 0 && i1 > stepCount - 25; i1--) { + super.streamClass.addByte(walkArrayX[i1] - startX); + super.streamClass.addByte(walkArrayY[i1] - startY); + } + + super.streamClass.formatPacket(); + actionPictureType = -24; + walkMouseX = super.mouseX; + walkMouseY = super.mouseY; + return true; + } + + private final void drawOptionsMenu(boolean canClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 199; + int i1 = 36; + gameGraphics.drawPicture(l - 49, 3, baseInventoryPic + 6); + int c1 = 196; + gameGraphics.drawBoxAlpha(l, 36, c1, 62, GameImage.rgbToInt(181, 181, 181), 160); + gameGraphics.drawBoxAlpha(l, 98, c1, 92, GameImage.rgbToInt(201, 201, 201), 160); + gameGraphics.drawBoxAlpha(l, 190, c1, 90, GameImage.rgbToInt(181, 181, 181), 160); + gameGraphics.drawBoxAlpha(l, 280, c1, 40, GameImage.rgbToInt(201, 201, 201), 160); + int j1 = l + 3; + int l1 = i1 + 15; + gameGraphics.drawString("Game options - click to toggle", j1, l1, 1, 0); + l1 += 15; + if(configCameraAutoAngle) + gameGraphics.drawString("Camera angle mode - @gre@Auto", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Camera angle mode - @red@Manual", j1, l1, 1, 0xffffff); + l1 += 15; + if(configOneMouseButton) + gameGraphics.drawString("Mouse buttons - @red@One", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Mouse buttons - @gre@Two", j1, l1, 1, 0xffffff); + l1 += 15; + if(Config.MEMBERS_FEATURES) + if(configSoundOff) + gameGraphics.drawString("Sound effects - @red@off", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Sound effects - @gre@on", j1, l1, 1, 0xffffff); + l1 += 15; + gameGraphics.drawString("Client assists - click to toggle", j1, l1, 1, 0); + l1 += 15; + if(showRoofs) + gameGraphics.drawString("Roofs - @gre@show", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Roofs - @red@hide", j1, l1, 1, 0xffffff); + l1 += 15; + if(showCombatWindow) + gameGraphics.drawString("Fight mode window - @gre@show", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Fight mode window - @red@hide", j1, l1, 1, 0xffffff); + l1 += 15; + if(fogOfWar) + gameGraphics.drawString("Fog of war - @gre@show", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Fog of war - @red@hide", j1, l1, 1, 0xffffff); + l1 += 15; + if(autoScreenshot) + gameGraphics.drawString("Automatic screenshots - @gre@on", j1, l1, 1, 0xffffff); + else + gameGraphics.drawString("Automatic screenshots - @red@off", j1, l1, 1, 0xffffff); + l1 += 15; + if(useChatFilter) + gameGraphics.drawString("Chat filter: @gre@", l + 3, l1, 1, 0xffffff); + else + gameGraphics.drawString("Chat filter: @red@", l + 3, l1, 1, 0xffffff); + l1 += 15; + gameGraphics.drawString("Privacy settings. Will be applied to", j1, l1, 1, 0); + l1 += 15; + gameGraphics.drawString("all people not on your friends list", j1, l1, 1, 0); + l1 += 15; + if(super.blockChat == 0) + gameGraphics.drawString("Block chat messages: @red@", l + 3, l1, 1, 0xffffff); + else + gameGraphics.drawString("Block chat messages: @gre@", l + 3, l1, 1, 0xffffff); + l1 += 15; + if(super.blockPrivate == 0) + gameGraphics.drawString("Block private messages: @red@", l + 3, l1, 1, 0xffffff); + else + gameGraphics.drawString("Block private messages: @gre@", l + 3, l1, 1, 0xffffff); + l1 += 15; + if(super.blockTrade == 0) + gameGraphics.drawString("Block trade requests: @red@", l + 3, l1, 1, 0xffffff); + else + gameGraphics.drawString("Block trade requests: @gre@", l + 3, l1, 1, 0xffffff); + l1 += 15; + if(Config.MEMBERS_FEATURES) + if(super.blockDuel == 0) + gameGraphics.drawString("Block duel requests: @red@", l + 3, l1, 1, 0xffffff); + else + gameGraphics.drawString("Block duel requests: @gre@", l + 3, l1, 1, 0xffffff); + l1 += 15; + l1 += 5; + gameGraphics.drawString("Always logout when you finish", j1, l1, 1, 0); + l1 += 15; + int j2 = 0xffffff; + if(super.mouseX > j1 && super.mouseX < j1 + c1 && super.mouseY > l1 - 12 && super.mouseY < l1 + 4) + j2 = 0xffff00; + gameGraphics.drawString("Click here to logout", l + 3, l1, 1, j2); + if(!canClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 199); + i1 = super.mouseY - 36; + if(l >= 0 && i1 >= 0 && l < 196 && i1 < 280) { + int k2 = ((GameImage) (gameGraphics)).gameWidth - 199; + byte byte0 = 36; + char c2 = '\304'; + int k1 = k2 + 3; + int i2 = byte0 + 30; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + configCameraAutoAngle = !configCameraAutoAngle; + super.streamClass.createPacket(157); + super.streamClass.addByte(0); + super.streamClass.addByte(configCameraAutoAngle ? 1 : 0); + super.streamClass.formatPacket(); + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + configOneMouseButton = !configOneMouseButton; + super.streamClass.createPacket(157); + super.streamClass.addByte(2); + super.streamClass.addByte(configOneMouseButton ? 1 : 0); + super.streamClass.formatPacket(); + } + i2 += 15; + if(Config.MEMBERS_FEATURES && super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + configSoundOff = !configSoundOff; + super.streamClass.createPacket(157); + super.streamClass.addByte(3); + super.streamClass.addByte(configSoundOff ? 1 : 0); + super.streamClass.formatPacket(); + } + i2 += 15; + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + showRoofs = !showRoofs; + super.streamClass.createPacket(157); + super.streamClass.addByte(4); + super.streamClass.addByte(showRoofs ? 1 : 0); + super.streamClass.formatPacket(); + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + showCombatWindow = !showCombatWindow; + super.streamClass.createPacket(157); + super.streamClass.addByte(6); + super.streamClass.addByte(showCombatWindow ? 1 : 0); + super.streamClass.formatPacket(); + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + fogOfWar = !fogOfWar; + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + autoScreenshot = !autoScreenshot; + super.streamClass.createPacket(157); + super.streamClass.addByte(5); + super.streamClass.addByte(autoScreenshot ? 1 : 0); + super.streamClass.formatPacket(); + } + boolean flag = false; + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + useChatFilter = !useChatFilter; + } + i2 += 15; + i2 += 15; + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + super.blockChat = 1 - super.blockChat; + flag = true; + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + super.blockPrivate = 1 - super.blockPrivate; + flag = true; + } + i2 += 15; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + super.blockTrade = 1 - super.blockTrade; + flag = true; + } + i2 += 15; + if(Config.MEMBERS_FEATURES && super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) { + super.blockDuel = 1 - super.blockDuel; + flag = true; + } + i2 += 15; + if(flag) + sendUpdatedPrivacyInfo(super.blockChat, super.blockPrivate, super.blockTrade, super.blockDuel); + i2 += 20; + if(super.mouseX > k1 && super.mouseX < k1 + c2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && mouseButtonClick == 1) + sendLogout(); + mouseButtonClick = 0; + } + } + + private final void walkToObject(int arg0, int arg1, int arg2, int arg3) { + int l; + int i1; + if(arg2 == 0 || arg2 == 4) { + l = Data.objectWidth[arg3]; + i1 = Data.objectHeight[arg3]; + } else { + i1 = Data.objectWidth[arg3]; + l = Data.objectHeight[arg3]; + } + if(Data.objectType[arg3] == 2 || Data.objectType[arg3] == 3) { + if(arg2 == 0) { + arg0--; + l++; + } + if(arg2 == 2) + i1++; + if(arg2 == 4) + l++; + if(arg2 == 6) { + arg1--; + i1++; + } + walkTo(sectionX, sectionY, arg0, arg1, (arg0 + l) - 1, (arg1 + i1) - 1, false, true); + return; + } else { + walkTo(sectionX, sectionY, arg0, arg1, (arg0 + l) - 1, (arg1 + i1) - 1, true, true); + return; + } + } + + private final void createChatInputMenu() { + chatInputMenu = new Menu(gameGraphics, 10); + messagesHandleType2 = chatInputMenu.gfh(5, 269, 502, 56, 1, 20, true); + chatInputBox = chatInputMenu.gfi(7, 324, 498, 14, 1, 80, false, true); + messagesHandleType5 = chatInputMenu.gfh(5, 269, 502, 56, 1, 20, true); + messagesHandleType6 = chatInputMenu.gfh(5, 269, 502, 56, 1, 20, true); + chatInputMenu.setFocus(chatInputBox); + } + + private final void drawCombatStyleBox() { + byte byte0 = 7; + byte byte1 = 15; + char c1 = '\257'; + if(mouseButtonClick != 0) { + for(int l = 0; l < 5; l++) { + if(l <= 0 || super.mouseX <= byte0 || super.mouseX >= byte0 + c1 || super.mouseY <= byte1 + l * 20 || super.mouseY >= byte1 + l * 20 + 20) + continue; + combatStyle = l - 1; + mouseButtonClick = 0; + super.streamClass.createPacket(42); + super.streamClass.addByte(combatStyle); + super.streamClass.formatPacket(); + break; + } + + } + for(int i1 = 0; i1 < 5; i1++) { + if(i1 == combatStyle + 1) + gameGraphics.drawBoxAlpha(byte0, byte1 + i1 * 20, c1, 20, GameImage.rgbToInt(255, 0, 0), 128); + else + gameGraphics.drawBoxAlpha(byte0, byte1 + i1 * 20, c1, 20, GameImage.rgbToInt(190, 190, 190), 128); + gameGraphics.drawLineX(byte0, byte1 + i1 * 20, c1, 0); + gameGraphics.drawLineX(byte0, byte1 + i1 * 20 + 20, c1, 0); + } + + gameGraphics.drawText("Select combat style", byte0 + c1 / 2, byte1 + 16, 3, 0xffffff); + gameGraphics.drawText("Controlled (+1 of each)", byte0 + c1 / 2, byte1 + 36, 3, 0); + gameGraphics.drawText("Aggressive (+3 strength)", byte0 + c1 / 2, byte1 + 56, 3, 0); + gameGraphics.drawText("Accurate (+3 attack)", byte0 + c1 / 2, byte1 + 76, 3, 0); + gameGraphics.drawText("Defensive (+3 defense)", byte0 + c1 / 2, byte1 + 96, 3, 0); + } + + private final void drawTradeBox() { + if(mouseButtonClick != 0) { + int mx = super.mouseX - 22; + int my = super.mouseY - 36; + if(mx >= 0 && my >= 30 && mx < 462 && my < 262) { + if(mx > 216 && my > 30 && mx < 462 && my < 235) { + int curItem = (mx - 217) / 49 + ((my - 31) / 34) * 5; + if(curItem >= 0 && curItem < inventoryItemsCount) { + int item = inventoryItems[curItem]; + mouseClickedHeldInTradeDuelBox = 1; + boolean ourTradeItemsChanged = false; + int someInt = 0; + for(int tradeItem = 0; tradeItem < tradeItemsOurCount; tradeItem++) + if(tradeItemsOur[tradeItem] == item) + if(Data.itemStackable[item] == 0) + for(int i = 0; i < mouseClickedHeldInTradeDuelBox; i++) { + if(tradeItemOurCount[tradeItem] < inventoryItemCount[curItem]) + tradeItemOurCount[tradeItem]++; + ourTradeItemsChanged = true; + } + else + someInt++; + if(getInventoryItemTotalCount(item) <= someInt) + ourTradeItemsChanged = true; + if(Data.itemSpecial[item] == 1) { + displayMessage("This object cannot be traded with other players", 3); + ourTradeItemsChanged = true; + } + if(!ourTradeItemsChanged && tradeItemsOurCount < 12) { + tradeItemsOur[tradeItemsOurCount] = item; + tradeItemOurCount[tradeItemsOurCount] = 1; + tradeItemsOurCount++; + ourTradeItemsChanged = true; + } + if(ourTradeItemsChanged) { + super.streamClass.createPacket(70); + super.streamClass.addByte(tradeItemsOurCount); + for(int i = 0; i < tradeItemsOurCount; i++) { + super.streamClass.addShort(tradeItemsOur[i]); + super.streamClass.addInt(tradeItemOurCount[i]); + } + super.streamClass.formatPacket(); + tradeOtherAccepted = false; + tradeWeAccepted = false; + } + } + } + else if(mx > 8 && my > 30 && mx < 205 && my < 133) { + int curItem = (mx - 9) / 49 + ((my - 31) / 34) * 4; + if(curItem >= 0 && curItem < tradeItemsOurCount) { + int item = tradeItemsOur[curItem]; + for(int i = 0; i < mouseClickedHeldInTradeDuelBox; i++) { + if(Data.itemStackable[item] == 0 && tradeItemOurCount[curItem] > 1) { + tradeItemOurCount[curItem]--; + continue; + } + tradeItemsOurCount--; + mouseButtonHeldTime = 0; + for(int j = curItem; j < tradeItemsOurCount; j++) { + tradeItemsOur[j] = tradeItemsOur[j + 1]; + tradeItemOurCount[j] = tradeItemOurCount[j + 1]; + } + break; + } + super.streamClass.createPacket(70); + super.streamClass.addByte(tradeItemsOurCount); + for(int i = 0; i < tradeItemsOurCount; i++) { + super.streamClass.addShort(tradeItemsOur[i]); + super.streamClass.addInt(tradeItemOurCount[i]); + } + super.streamClass.formatPacket(); + tradeOtherAccepted = false; + tradeWeAccepted = false; + } + } + if(mx >= 217 && my >= 238 && mx <= 286 && my <= 259) { + tradeWeAccepted = true; + super.streamClass.createPacket(211); + super.streamClass.formatPacket(); + } + if(mx >= 394 && my >= 238 && mx < 463 && my < 259) { + showTradeBox = false; + super.streamClass.createPacket(216); + super.streamClass.formatPacket(); + } + } + else { + showTradeBox = false; + super.streamClass.createPacket(216); + super.streamClass.formatPacket(); + } + mouseButtonClick = 0; + mouseClickedHeldInTradeDuelBox = 0; + } + if(!showTradeBox) + return; + byte byte0 = 22; + byte byte1 = 36; + gameGraphics.drawBox(byte0, byte1, 468, 12, 192); + int l1 = 0x989898; + gameGraphics.drawBoxAlpha(byte0, byte1 + 12, 468, 18, l1, 160); + gameGraphics.drawBoxAlpha(byte0, byte1 + 30, 8, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 205, byte1 + 30, 11, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 462, byte1 + 30, 6, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 133, 197, 22, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 258, 197, 20, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 216, byte1 + 235, 246, 43, l1, 160); + int j2 = 0xd0d0d0; + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 30, 197, 103, j2, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 155, 197, 103, j2, 160); + gameGraphics.drawBoxAlpha(byte0 + 216, byte1 + 30, 246, 205, j2, 160); + for(int i3 = 0; i3 < 4; i3++) + gameGraphics.drawLineX(byte0 + 8, byte1 + 30 + i3 * 34, 197, 0); + + for(int i4 = 0; i4 < 4; i4++) + gameGraphics.drawLineX(byte0 + 8, byte1 + 155 + i4 * 34, 197, 0); + + for(int k4 = 0; k4 < 7; k4++) + gameGraphics.drawLineX(byte0 + 216, byte1 + 30 + k4 * 34, 246, 0); + + for(int j5 = 0; j5 < 6; j5++) { + if(j5 < 5) + gameGraphics.drawLineY(byte0 + 8 + j5 * 49, byte1 + 30, 103, 0); + if(j5 < 5) + gameGraphics.drawLineY(byte0 + 8 + j5 * 49, byte1 + 155, 103, 0); + gameGraphics.drawLineY(byte0 + 216 + j5 * 49, byte1 + 30, 205, 0); + } + + gameGraphics.drawString("Trading with: " + tradeOtherName, byte0 + 1, byte1 + 10, 1, 0xffffff); + gameGraphics.drawString("Your Offer", byte0 + 9, byte1 + 27, 4, 0xffffff); + gameGraphics.drawString("Opponent's Offer", byte0 + 9, byte1 + 152, 4, 0xffffff); + gameGraphics.drawString("Your Inventory", byte0 + 216, byte1 + 27, 4, 0xffffff); + if(!tradeWeAccepted) + gameGraphics.drawPicture(byte0 + 217, byte1 + 238, baseInventoryPic + 25); + gameGraphics.drawPicture(byte0 + 394, byte1 + 238, baseInventoryPic + 26); + if(tradeOtherAccepted) { + gameGraphics.drawText("Other player", byte0 + 341, byte1 + 246, 1, 0xffffff); + gameGraphics.drawText("has accepted", byte0 + 341, byte1 + 256, 1, 0xffffff); + } + if(tradeWeAccepted) { + gameGraphics.drawText("Waiting for", byte0 + 217 + 35, byte1 + 246, 1, 0xffffff); + gameGraphics.drawText("other player", byte0 + 217 + 35, byte1 + 256, 1, 0xffffff); + } + for(int k5 = 0; k5 < inventoryItemsCount; k5++) { + int l5 = 217 + byte0 + (k5 % 5) * 49; + int j6 = 31 + byte1 + (k5 / 5) * 34; + gameGraphics.drawImage(l5, j6, 48, 32, baseItemPicture + Data.itemInventoryPicture[inventoryItems[k5]], Data.itemPictureMask[inventoryItems[k5]], 0, 0, false); + if(Data.itemStackable[inventoryItems[k5]] == 0) + gameGraphics.drawString(String.valueOf(inventoryItemCount[k5]), l5 + 1, j6 + 10, 1, 0xffff00); + } + + for(int i6 = 0; i6 < tradeItemsOurCount; i6++) { + int k6 = 9 + byte0 + (i6 % 4) * 49; + int i7 = 31 + byte1 + (i6 / 4) * 34; + gameGraphics.drawImage(k6, i7, 48, 32, baseItemPicture + Data.itemInventoryPicture[tradeItemsOur[i6]], Data.itemPictureMask[tradeItemsOur[i6]], 0, 0, false); + if(Data.itemStackable[tradeItemsOur[i6]] == 0) + gameGraphics.drawString(String.valueOf(tradeItemOurCount[i6]), k6 + 1, i7 + 10, 1, 0xffff00); + if(super.mouseX > k6 && super.mouseX < k6 + 48 && super.mouseY > i7 && super.mouseY < i7 + 32) + gameGraphics.drawString(Data.itemName[tradeItemsOur[i6]] + ": @whi@" + Data.itemDescription[tradeItemsOur[i6]], byte0 + 8, byte1 + 273, 1, 0xffff00); + } + + for(int l6 = 0; l6 < tradeItemsOtherCount; l6++) { + int j7 = 9 + byte0 + (l6 % 4) * 49; + int k7 = 156 + byte1 + (l6 / 4) * 34; + gameGraphics.drawImage(j7, k7, 48, 32, baseItemPicture + Data.itemInventoryPicture[tradeItemsOther[l6]], Data.itemPictureMask[tradeItemsOther[l6]], 0, 0, false); + if(Data.itemStackable[tradeItemsOther[l6]] == 0) + gameGraphics.drawString(String.valueOf(tradeItemOtherCount[l6]), j7 + 1, k7 + 10, 1, 0xffff00); + if(super.mouseX > j7 && super.mouseX < j7 + 48 && super.mouseY > k7 && super.mouseY < k7 + 32) + gameGraphics.drawString(Data.itemName[tradeItemsOther[l6]] + ": @whi@" + Data.itemDescription[tradeItemsOther[l6]], byte0 + 8, byte1 + 273, 1, 0xffff00); + } + + } + + private final void autoRotateCamera() { + if((cameraAutoAngle & 1) == 1 && validCameraAngle(cameraAutoAngle)) + return; + if((cameraAutoAngle & 1) == 0 && validCameraAngle(cameraAutoAngle)) { + if(validCameraAngle(cameraAutoAngle + 1 & 7)) { + cameraAutoAngle = cameraAutoAngle + 1 & 7; + return; + } + if(validCameraAngle(cameraAutoAngle + 7 & 7)) + cameraAutoAngle = cameraAutoAngle + 7 & 7; + return; + } + int ai[] = { + 1, -1, 2, -2, 3, -3, 4 + }; + for(int l = 0; l < 7; l++) { + if(!validCameraAngle(cameraAutoAngle + ai[l] + 8 & 7)) + continue; + cameraAutoAngle = cameraAutoAngle + ai[l] + 8 & 7; + break; + } + + if((cameraAutoAngle & 1) == 0 && validCameraAngle(cameraAutoAngle)) { + if(validCameraAngle(cameraAutoAngle + 1 & 7)) { + cameraAutoAngle = cameraAutoAngle + 1 & 7; + return; + } + if(validCameraAngle(cameraAutoAngle + 7 & 7)) + cameraAutoAngle = cameraAutoAngle + 7 & 7; + return; + } else { + return; + } + } + + public final String getParameter(String s1) { + if(link.gameApplet != null) + return link.gameApplet.getParameter(s1); + else + return super.getParameter(s1); + } + + private final void drawLogoutBox() { + gameGraphics.drawBox(126, 137, 260, 60, 0); + gameGraphics.drawBoxEdge(126, 137, 260, 60, 0xffffff); + gameGraphics.drawText("Logging out...", 256, 173, 5, 0xffffff); + } + + private final void walkToGroundItem(int l, int i1, int j1, int k1, boolean flag) { + if(walkTo2(l, i1, j1, k1, j1, k1, false, flag)) { + return; + } else { + walkTo(l, i1, j1, k1, j1, k1, true, flag); + return; + } + } + + protected final void loginScreenPrint(String s1, String s2) { + if(loginScreen == 2 && loginMenuLogin != null) + loginMenuLogin.updateText(loginMenuStatusText, s1 + " " + s2); + drawLoginScreens(); + resetTimings(); + } + + final void drawTeleBubble(int l, int i1, int j1, int k1, int l1, int i2, int j2) { + int type = teleBubbleType[l1]; + int time = teleBubbleTime[l1]; + if(type == 0) { + int i3 = 255 + time * 5 * 256; + gameGraphics.drawCircle(l + j1 / 2, i1 + k1 / 2, 20 + time * 2, i3, 255 - time * 5); + } + if(type == 1) { + int j3 = 0xff0000 + time * 5 * 256; + gameGraphics.drawCircle(l + j1 / 2, i1 + k1 / 2, 10 + time, j3, 255 - time * 5); + } + } + + private final void checkLoginScreenInputs() { + if(super.socketTimeout > 0) + super.socketTimeout--; + if(loginScreen == 0) { + loginMenuFirst.mouseClick(super.mouseX, super.mouseY, super.lastMouseButton, super.mouseButton); + if(loginMenuFirst.isClicked(loginButtonNewUser)) + loginScreen = 1; + if(loginMenuFirst.isClicked(loginMenuLoginButton)) { + loginScreen = 2; + loginMenuLogin.updateText(loginMenuStatusText, "Please enter your username and password"); + loginMenuLogin.updateText(loginMenuUserText, ""); + loginMenuLogin.updateText(loginMenuPasswordText, ""); + loginMenuLogin.setFocus(loginMenuUserText); + return; + } + } else + if(loginScreen == 1) { + loginNewUser.mouseClick(super.mouseX, super.mouseY, super.lastMouseButton, super.mouseButton); + if(loginNewUser.isClicked(loginMenuOkButton)) { + loginScreen = 0; + return; + } + } else + if(loginScreen == 2) { + loginMenuLogin.mouseClick(super.mouseX, super.mouseY, super.lastMouseButton, super.mouseButton); + if(loginMenuLogin.isClicked(loginMenuCancelButton)) + loginScreen = 0; + if(loginMenuLogin.isClicked(loginMenuUserText)) + loginMenuLogin.setFocus(loginMenuPasswordText); + if(loginMenuLogin.isClicked(loginMenuPasswordText) || loginMenuLogin.isClicked(loginMenuOkLoginButton)) { + loginUsername = loginMenuLogin.getText(loginMenuUserText); + loginPassword = loginMenuLogin.getText(loginMenuPasswordText); + connect(loginUsername, loginPassword, false); + } + } + } + + private final boolean isItemEquipped(int arg0) { + for(int l = 0; l < inventoryItemsCount; l++) + if(inventoryItems[l] == arg0 && inventoryItemEquipped[l] == 1) + return true; + + return false; + } + + protected final void drawWindow() { + if(errorLoading) { + Graphics g1 = getGraphics(); + g1.setColor(Color.black); + g1.fillRect(0, 0, 512, 356); + g1.setFont(new Font("Helvetica", 1, 16)); + g1.setColor(Color.yellow); + int l = 35; + g1.drawString("Sorry, an error has occured whilst loading", 30, l); + l += 50; + g1.setColor(Color.white); + g1.drawString("To fix this try the following (in order):", 30, l); + l += 50; + g1.setColor(Color.white); + g1.setFont(new Font("Helvetica", 1, 12)); + g1.drawString("1: Try closing ALL open web-browser windows, and reloading", 30, l); + l += 30; + g1.drawString("2: Try clearing your web-browsers cache from tools->internet options", 30, l); + l += 30; + g1.drawString("3: Try using a different game-world", 30, l); + l += 30; + g1.drawString("4: Try rebooting your computer", 30, l); + l += 30; + g1.drawString("5: Try selecting a different version of Java from the play-game menu", 30, l); + setRefreshRate(1); + return; + } + if(memoryError) { + Graphics g3 = getGraphics(); + g3.setColor(Color.black); + g3.fillRect(0, 0, 512, 356); + g3.setFont(new Font("Helvetica", 1, 20)); + g3.setColor(Color.white); + g3.drawString("Error - out of memory!", 50, 50); + g3.drawString("Close ALL unnecessary programs", 50, 100); + g3.drawString("and windows before loading the game", 50, 150); + g3.drawString("this game needs about 48meg of spare RAM", 50, 200); + setRefreshRate(1); + return; + } + try { + if(loggedIn == 0) { + gameGraphics.loggedIn = false; + drawLoginScreens(); + } + if(loggedIn == 1) { + gameGraphics.loggedIn = true; + drawGame(); + return; + } + } + catch(OutOfMemoryError _ex) { + cleanUp(); + memoryError = true; + } + } + + private final void cleanUp() { + try { + if(gameGraphics != null) { + gameGraphics.cleanUp(); + gameGraphics.pixels = null; + gameGraphics = null; + } + if(gameCamera != null) { + gameCamera.cleanUp(); + gameCamera = null; + } + gameDataObjects = null; + objectArray = null; + wallObjectArray = null; + playerBufferArray = null; + playerArray = null; + npcAttackingArray = null; + npcArray = null; + ourPlayer = null; + if(engineHandle != null) { + engineHandle.ghn = null; + engineHandle.gim = null; + engineHandle.gih = null; + engineHandle.gia = null; + engineHandle = null; + } + System.gc(); + return; + } + catch(Exception _ex) { + return; + } + } + + private final void drawQuestionMenu() { + if(mouseButtonClick != 0) { + for(int l = 0; l < questionMenuCount; l++) { + if(super.mouseX >= gameGraphics.textWidth(questionMenuAnswer[l], 1) || super.mouseY <= l * 12 || super.mouseY >= 12 + l * 12) + continue; + super.streamClass.createPacket(154); + super.streamClass.addByte(l); + super.streamClass.formatPacket(); + break; + } + + mouseButtonClick = 0; + showQuestionMenu = false; + return; + } + for(int i1 = 0; i1 < questionMenuCount; i1++) { + int j1 = 65535; + if(super.mouseX < gameGraphics.textWidth(questionMenuAnswer[i1], 1) && super.mouseY > i1 * 12 && super.mouseY < 12 + i1 * 12) + j1 = 0xff0000; + gameGraphics.drawString(questionMenuAnswer[i1], 6, 12 + i1 * 12, 1, j1); + } + + } + + private final void drawTradeConfirmBox() { + byte byte0 = 22; + byte byte1 = 36; + gameGraphics.drawBox(byte0, byte1, 468, 16, 192); + int l = 0x989898; + gameGraphics.drawBoxAlpha(byte0, byte1 + 16, 468, 246, l, 160); + gameGraphics.drawText("Please confirm your trade with @yel@" + DataOperations.hashToName(tradeConfirmOtherNameLong), byte0 + 234, byte1 + 12, 1, 0xffffff); + gameGraphics.drawText("You are about to give:", byte0 + 117, byte1 + 30, 1, 0xffff00); + for(int i1 = 0; i1 < tradeConfigItemCount; i1++) { + String s1 = Data.itemName[tradeConfirmItems[i1]]; + if(Data.itemStackable[tradeConfirmItems[i1]] == 0) + s1 = s1 + " x " + formatItemCount(tradeConfigItemsCount[i1]); + gameGraphics.drawText(s1, byte0 + 117, byte1 + 42 + i1 * 12, 1, 0xffffff); + } + + if(tradeConfigItemCount == 0) + gameGraphics.drawText("Nothing!", byte0 + 117, byte1 + 42, 1, 0xffffff); + gameGraphics.drawText("In return you will receive:", byte0 + 351, byte1 + 30, 1, 0xffff00); + for(int j1 = 0; j1 < tradeConfirmOtherItemCount; j1++) { + String s2 = Data.itemName[tradeConfirmOtherItems[j1]]; + if(Data.itemStackable[tradeConfirmOtherItems[j1]] == 0) + s2 = s2 + " x " + formatItemCount(tradeConfirmOtherItemsCount[j1]); + gameGraphics.drawText(s2, byte0 + 351, byte1 + 42 + j1 * 12, 1, 0xffffff); + } + + if(tradeConfirmOtherItemCount == 0) + gameGraphics.drawText("Nothing!", byte0 + 351, byte1 + 42, 1, 0xffffff); + gameGraphics.drawText("Are you sure you want to do this?", byte0 + 234, byte1 + 200, 4, 65535); + gameGraphics.drawText("There is NO WAY to reverse a trade if you change your mind.", byte0 + 234, byte1 + 215, 1, 0xffffff); + gameGraphics.drawText("Remember that not all players are trustworthy", byte0 + 234, byte1 + 230, 1, 0xffffff); + if(!tradeConfirmAccepted) { + gameGraphics.drawPicture((byte0 + 118) - 35, byte1 + 238, baseInventoryPic + 25); + gameGraphics.drawPicture((byte0 + 352) - 35, byte1 + 238, baseInventoryPic + 26); + } else { + gameGraphics.drawText("Waiting for other player...", byte0 + 234, byte1 + 250, 1, 0xffff00); + } + if(mouseButtonClick == 1) { + if(super.mouseX < byte0 || super.mouseY < byte1 || super.mouseX > byte0 + 468 || super.mouseY > byte1 + 262) { + showTradeConfirmBox = false; + super.streamClass.createPacket(216); + super.streamClass.formatPacket(); + } + if(super.mouseX >= (byte0 + 118) - 35 && super.mouseX <= byte0 + 118 + 70 && super.mouseY >= byte1 + 238 && super.mouseY <= byte1 + 238 + 21) { + tradeConfirmAccepted = true; + super.streamClass.createPacket(53); + super.streamClass.formatPacket(); + } + if(super.mouseX >= (byte0 + 352) - 35 && super.mouseX <= byte0 + 353 + 70 && super.mouseY >= byte1 + 238 && super.mouseY <= byte1 + 238 + 21) { + showTradeConfirmBox = false; + super.streamClass.createPacket(216); + super.streamClass.formatPacket(); + } + mouseButtonClick = 0; + } + } + + private final void drawLoginScreens() { + loginScreenShown = false; + if(gameGraphics == null) + return; + gameGraphics.interlace = false; + gameGraphics.clearScreen(); + if(loginScreen == 0 || loginScreen == 1 || loginScreen == 2 || loginScreen == 3) { + int l = (tick * 2) % 3072; + if(l < 1024) { + gameGraphics.drawPicture(0, 10, baseLoginScreenBackgroundPic); + if(l > 768) + gameGraphics.ccd(0, 10, baseLoginScreenBackgroundPic + 1, l - 768); + } else + if(l < 2048) { + gameGraphics.drawPicture(0, 10, baseLoginScreenBackgroundPic + 1); + if(l > 1792) + gameGraphics.ccd(0, 10, baseInventoryPic + 10, l - 1792); + } else { + gameGraphics.drawPicture(0, 10, baseInventoryPic + 10); + if(l > 2816) + gameGraphics.ccd(0, 10, baseLoginScreenBackgroundPic, l - 2816); + } + } + if(loginScreen == 0) + loginMenuFirst.drawMenu(); + if(loginScreen == 1) + loginNewUser.drawMenu(); + if(loginScreen == 2) + loginMenuLogin.drawMenu(); + gameGraphics.drawPicture(0, windowHeight, baseInventoryPic + 22); + gameGraphics.drawImage(graphics, 0, 0); + } + + final void drawItem(int x, int y, int width, int height, int itemID, int i2, int j2) { + int picture = Data.itemInventoryPicture[itemID] + baseItemPicture; + int mask = Data.itemPictureMask[itemID]; + gameGraphics.drawImage(x, y, width, height, picture, mask, 0, 0, false); + } + + private final Mob makePlayer(int index, int x, int y, int sprite) { + if(playerBufferArray[index] == null) { + playerBufferArray[index] = new Mob(); + playerBufferArray[index].serverIndex = index; + playerBufferArray[index].serverID = 0; + } + Mob existingPlayer = playerBufferArray[index]; + boolean flag = false; + for(int l = 0; l < lastPlayerCount; l++) { + if(lastPlayerArray[l].serverIndex != index) + continue; + flag = true; + break; + } + + if(flag) { + existingPlayer.nextSprite = sprite; + int i1 = existingPlayer.waypointCurrent; + if(x != existingPlayer.waypointsX[i1] || y != existingPlayer.waypointsY[i1]) { + existingPlayer.waypointCurrent = i1 = (i1 + 1) % 10; + existingPlayer.waypointsX[i1] = x; + existingPlayer.waypointsY[i1] = y; + } + } else { + existingPlayer.serverIndex = index; + existingPlayer.waypointsEndSprite = 0; + existingPlayer.waypointCurrent = 0; + existingPlayer.waypointsX[0] = existingPlayer.currentX = x; + existingPlayer.waypointsY[0] = existingPlayer.currentY = y; + existingPlayer.nextSprite = existingPlayer.currentSprite = sprite; + existingPlayer.stepCount = 0; + } + playerArray[playerCount++] = existingPlayer; + return existingPlayer; + } + + private final void walkTo1Tile(int l, int i1, int j1, int k1, boolean flag) { + walkTo(l, i1, j1, k1, j1, k1, false, flag); + } + + private final void loadConfig() { + byte abyte0[] = unpackData("config.jag", "Configuration", 10); + if(abyte0 == null) { + errorLoading = true; + return; + } + Data.load(abyte0); + byte abyte1[] = unpackData("filter.jag", "Chat system", 15); + if(abyte1 == null) { + errorLoading = true; + return; + } else { + byte abyte2[] = DataOperations.loadData("fragmentsenc.txt", 0, abyte1); + byte abyte3[] = DataOperations.loadData("badenc.txt", 0, abyte1); + byte abyte4[] = DataOperations.loadData("hostenc.txt", 0, abyte1); + byte abyte5[] = DataOperations.loadData("tldlist.txt", 0, abyte1); + ChatFilter.addFilterData(new DataEncryption(abyte2), new DataEncryption(abyte3), new DataEncryption(abyte4), new DataEncryption(abyte5)); + return; + } + } + + protected final void handleMouseDown(int arg0, int arg1, int arg2) { + mouseTrailX[mouseTrailIndex] = arg1; + mouseTrailY[mouseTrailIndex] = arg2; + mouseTrailIndex = mouseTrailIndex + 1 & 0x1fff; + for(int l = 10; l < 4000; l++) { + int lastMouseTrailIndex = mouseTrailIndex - l & 0x1fff; + if(mouseTrailX[lastMouseTrailIndex] == arg1 && mouseTrailY[lastMouseTrailIndex] == arg2) { + boolean flag = false; + for(int j1 = 1; j1 < l; j1++) { + int mouseNew = mouseTrailIndex - j1 & 0x1fff; + int mouseOld = lastMouseTrailIndex - j1 & 0x1fff; + if(mouseTrailX[mouseOld] != arg1 || mouseTrailY[mouseOld] != arg2) + flag = true; + if(mouseTrailX[mouseNew] != mouseTrailX[mouseOld] || mouseTrailY[mouseNew] != mouseTrailY[mouseOld]) + break; + if(j1 == l - 1 && flag && combatTimeout == 0 && logoutTimer == 0) { + sendLogout(); + return; + } + } + + } + } + + } + + private final void drawFriendsMenu(boolean canClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 199; + int i1 = 36; + gameGraphics.drawPicture(l - 49, 3, baseInventoryPic + 5); + char c1 = '\304'; + char c2 = '\266'; + int k1; + int j1 = k1 = GameImage.rgbToInt(160, 160, 160); + if(friendsIgnoreMenuSelected == 0) + j1 = GameImage.rgbToInt(220, 220, 220); + else + k1 = GameImage.rgbToInt(220, 220, 220); + gameGraphics.drawBoxAlpha(l, i1, c1 / 2, 24, j1, 128); + gameGraphics.drawBoxAlpha(l + c1 / 2, i1, c1 / 2, 24, k1, 128); + gameGraphics.drawBoxAlpha(l, i1 + 24, c1, c2 - 24, GameImage.rgbToInt(220, 220, 220), 128); + gameGraphics.drawLineX(l, i1 + 24, c1, 0); + gameGraphics.drawLineY(l + c1 / 2, i1, 24, 0); + gameGraphics.drawLineX(l, (i1 + c2) - 16, c1, 0); + gameGraphics.drawText("Friends", l + c1 / 4, i1 + 16, 4, 0); + gameGraphics.drawText("Ignore", l + c1 / 4 + c1 / 2, i1 + 16, 4, 0); + friendsLastShownEntries = spellMenu.listShownEntries; + friendsMenu.clearList(friendsMenuHandle); + if(friendsIgnoreMenuSelected == 0) { + for(int l1 = 0; l1 < super.friendsCount; l1++) { + String s1; + if(super.friendsWorld[l1] == 99) + s1 = "@gre@"; + else + if(super.friendsWorld[l1] > 0) + s1 = "@yel@"; + else + s1 = "@red@"; + friendsMenu.addListItem(friendsMenuHandle, l1, s1 + DataOperations.hashToName(super.friendsList[l1]) + "~439~@whi@Remove WWWWWWWWWW"); + } + + } + if(friendsIgnoreMenuSelected == 1) { + for(int i2 = 0; i2 < super.ignoresCount; i2++) + friendsMenu.addListItem(friendsMenuHandle, i2, "@yel@" + DataOperations.hashToName(super.ignoresList[i2]) + "~439~@whi@Remove WWWWWWWWWW"); + + } + friendsMenu.listShownEntries = friendsLastShownEntries; + friendsMenu.drawMenu(); + if(friendsIgnoreMenuSelected == 0) { + int j2 = friendsMenu.getEntryHighlighted(friendsMenuHandle); + if(j2 >= 0 && super.mouseX < 489) { + if(super.mouseX > 429) + gameGraphics.drawText("Click to remove " + DataOperations.hashToName(super.friendsList[j2]), l + c1 / 2, i1 + 35, 1, 0xffffff); + else + if(super.friendsWorld[j2] == 99) + gameGraphics.drawText("Click to message " + DataOperations.hashToName(super.friendsList[j2]), l + c1 / 2, i1 + 35, 1, 0xffffff); + else + if(super.friendsWorld[j2] > 0) + gameGraphics.drawText(DataOperations.hashToName(super.friendsList[j2]) + " is on world " + super.friendsWorld[j2], l + c1 / 2, i1 + 35, 1, 0xffffff); + else + gameGraphics.drawText(DataOperations.hashToName(super.friendsList[j2]) + " is offline", l + c1 / 2, i1 + 35, 1, 0xffffff); + } else { + gameGraphics.drawText("Click a name to send a message", l + c1 / 2, i1 + 35, 1, 0xffffff); + } + int j3; + if(super.mouseX > l && super.mouseX < l + c1 && super.mouseY > (i1 + c2) - 16 && super.mouseY < i1 + c2) + j3 = 0xffff00; + else + j3 = 0xffffff; + gameGraphics.drawText("Click here to add a friend", l + c1 / 2, (i1 + c2) - 3, 1, j3); + } + if(friendsIgnoreMenuSelected == 1) { + int k2 = friendsMenu.getEntryHighlighted(friendsMenuHandle); + if(k2 >= 0 && super.mouseX < 489 && super.mouseX > 429) { + if(super.mouseX > 429) + gameGraphics.drawText("Click to remove " + DataOperations.hashToName(super.ignoresList[k2]), l + c1 / 2, i1 + 35, 1, 0xffffff); + } else { + gameGraphics.drawText("Blocking messages from:", l + c1 / 2, i1 + 35, 1, 0xffffff); + } + int k3; + if(super.mouseX > l && super.mouseX < l + c1 && super.mouseY > (i1 + c2) - 16 && super.mouseY < i1 + c2) + k3 = 0xffff00; + else + k3 = 0xffffff; + gameGraphics.drawText("Click here to add a name", l + c1 / 2, (i1 + c2) - 3, 1, k3); + } + if(!canClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 199); + i1 = super.mouseY - 36; + if(l >= 0 && i1 >= 0 && l < 196 && i1 < 182) { + friendsMenu.mouseClick(l + (((GameImage) (gameGraphics)).gameWidth - 199), i1 + 36, super.lastMouseButton, super.mouseButton); + if(i1 <= 24 && mouseButtonClick == 1) + if(l < 98 && friendsIgnoreMenuSelected == 1) { + friendsIgnoreMenuSelected = 0; + friendsMenu.switchList(friendsMenuHandle); + } else + if(l > 98 && friendsIgnoreMenuSelected == 0) { + friendsIgnoreMenuSelected = 1; + friendsMenu.switchList(friendsMenuHandle); + } + if(mouseButtonClick == 1 && friendsIgnoreMenuSelected == 0) { + int l2 = friendsMenu.getEntryHighlighted(friendsMenuHandle); + if(l2 >= 0 && super.mouseX < 489) + if(super.mouseX > 429) + removeFriend(super.friendsList[l2]); + else + if(super.friendsWorld[l2] != 0) { + showFriendsBox = 2; + pmTarget = super.friendsList[l2]; + super.pmText = ""; + super.enteredPMText = ""; + } + } + if(mouseButtonClick == 1 && friendsIgnoreMenuSelected == 1) { + int i3 = friendsMenu.getEntryHighlighted(friendsMenuHandle); + if(i3 >= 0 && super.mouseX < 489 && super.mouseX > 429) + removeIgnore(super.ignoresList[i3]); + } + if(i1 > 166 && mouseButtonClick == 1 && friendsIgnoreMenuSelected == 0) { + showFriendsBox = 1; + super.inputText = ""; + super.enteredInputText = ""; + } + if(i1 > 166 && mouseButtonClick == 1 && friendsIgnoreMenuSelected == 1) { + showFriendsBox = 3; + super.inputText = ""; + super.enteredInputText = ""; + } + mouseButtonClick = 0; + } + } + + private final void drawPrayerMagicMenu(boolean canClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 199; + int i1 = 36; + gameGraphics.drawPicture(l - 49, 3, baseInventoryPic + 4); + char c1 = '\304'; + char c2 = '\266'; + int k1; + int j1 = k1 = GameImage.rgbToInt(160, 160, 160); + if(menuMagicPrayersSelected == 0) + j1 = GameImage.rgbToInt(220, 220, 220); + else + k1 = GameImage.rgbToInt(220, 220, 220); + gameGraphics.drawBoxAlpha(l, i1, c1 / 2, 24, j1, 128); + gameGraphics.drawBoxAlpha(l + c1 / 2, i1, c1 / 2, 24, k1, 128); + gameGraphics.drawBoxAlpha(l, i1 + 24, c1, 90, GameImage.rgbToInt(220, 220, 220), 128); + gameGraphics.drawBoxAlpha(l, i1 + 24 + 90, c1, c2 - 90 - 24, GameImage.rgbToInt(160, 160, 160), 128); + gameGraphics.drawLineX(l, i1 + 24, c1, 0); + gameGraphics.drawLineY(l + c1 / 2, i1, 24, 0); + gameGraphics.drawLineX(l, i1 + 113, c1, 0); + gameGraphics.drawText("Magic", l + c1 / 4, i1 + 16, 4, 0); + gameGraphics.drawText("Prayers", l + c1 / 4 + c1 / 2, i1 + 16, 4, 0); + if(menuMagicPrayersSelected == 0) { + spellsLastShownEntries = spellMenu.listShownEntries; + spellMenu.clearList(spellMenuHandle); + int l1 = 0; + for(int l2 = 0; l2 < Data.spellCount; l2++) { + String s1 = "@yel@"; + for(int k4 = 0; k4 < Data.spellDifferentRuneCount[l2]; k4++) { + int j5 = Data.spelRequiredRuneID[l2][k4]; + if(hasRequiredRunes(j5, Data.spellRequiredRuneCount[l2][k4])) + continue; + s1 = "@whi@"; + break; + } + + int k5 = playerStatCurrent[6]; + if(Data.spellRequiredLevel[l2] > k5) + s1 = "@bla@"; + spellMenu.addListItem(spellMenuHandle, l1++, s1 + "Level " + Data.spellRequiredLevel[l2] + ": " + Data.spellName[l2]); + } + + spellMenu.listShownEntries = spellsLastShownEntries; + spellMenu.drawMenu(); + int l3 = spellMenu.getEntryHighlighted(spellMenuHandle); + if(l3 != -1) { + gameGraphics.drawString("Level " + Data.spellRequiredLevel[l3] + ": " + Data.spellName[l3], l + 2, i1 + 124, 1, 0xffff00); + gameGraphics.drawString(Data.spellDescription[l3], l + 2, i1 + 136, 0, 0xffffff); + for(int l4 = 0; l4 < Data.spellDifferentRuneCount[l3]; l4++) { + int l5 = Data.spelRequiredRuneID[l3][l4]; + gameGraphics.drawPicture(l + 2 + l4 * 44, i1 + 150, baseItemPicture + Data.itemInventoryPicture[l5]); + int i6 = getInventoryItemTotalCount(l5); + int j6 = Data.spellRequiredRuneCount[l3][l4]; + String s3 = "@red@"; + if(hasRequiredRunes(l5, j6)) + s3 = "@gre@"; + gameGraphics.drawString(s3 + i6 + "/" + j6, l + 2 + l4 * 44, i1 + 150, 1, 0xffffff); + } + + } else { + gameGraphics.drawString("Point at a spell for a description", l + 2, i1 + 124, 1, 0); + } + } + if(menuMagicPrayersSelected == 1) { + prayersLastShownEntries = spellMenu.listShownEntries; + spellMenu.clearList(spellMenuHandle); + int i2 = 0; + for(int i3 = 0; i3 < Data.prayerCount; i3++) { + String s2 = "@whi@"; + if(Data.prayerRequiredLevel[i3] > playerStatBase[5]) + s2 = "@bla@"; + if(prayerOn[i3]) + s2 = "@gre@"; + spellMenu.addListItem(spellMenuHandle, i2++, s2 + "Level " + Data.prayerRequiredLevel[i3] + ": " + Data.prayerName[i3]); + } + + spellMenu.listShownEntries = prayersLastShownEntries; + spellMenu.drawMenu(); + int i4 = spellMenu.getEntryHighlighted(spellMenuHandle); + if(i4 != -1) { + gameGraphics.drawText("Level " + Data.prayerRequiredLevel[i4] + ": " + Data.prayerName[i4], l + c1 / 2, i1 + 130, 1, 0xffff00); + gameGraphics.drawText(Data.prayerDescription[i4], l + c1 / 2, i1 + 145, 0, 0xffffff); + gameGraphics.drawText("Drain rate: " + Data.prayerDrainRate[i4], l + c1 / 2, i1 + 160, 1, 0); + } else { + gameGraphics.drawString("Point at a prayer for a description", l + 2, i1 + 124, 1, 0); + } + } + if(!canClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 199); + i1 = super.mouseY - 36; + if(l >= 0 && i1 >= 0 && l < 196 && i1 < 182) { + spellMenu.mouseClick(l + (((GameImage) (gameGraphics)).gameWidth - 199), i1 + 36, super.lastMouseButton, super.mouseButton); + if(i1 <= 24 && mouseButtonClick == 1) + if(l < 98 && menuMagicPrayersSelected == 1) { + menuMagicPrayersSelected = 0; + spellMenu.switchList(spellMenuHandle); + } else + if(l > 98 && menuMagicPrayersSelected == 0) { + menuMagicPrayersSelected = 1; + spellMenu.switchList(spellMenuHandle); + } + if(mouseButtonClick == 1 && menuMagicPrayersSelected == 0) { + int j2 = spellMenu.getEntryHighlighted(spellMenuHandle); + if(j2 != -1) { + int j3 = playerStatCurrent[6]; + if(Data.spellRequiredLevel[j2] > j3) { + displayMessage("Your magic ability is not high enough for this spell", 3); + } else { + int j4; + for(j4 = 0; j4 < Data.spellDifferentRuneCount[j2]; j4++) { + int i5 = Data.spelRequiredRuneID[j2][j4]; + if(hasRequiredRunes(i5, Data.spellRequiredRuneCount[j2][j4])) + continue; + displayMessage("You don't have all the reagents you need for this spell", 3); + j4 = -1; + break; + } + + if(j4 == Data.spellDifferentRuneCount[j2]) { + selectedSpell = j2; + selectedItem = -1; + } + } + } + } + if(mouseButtonClick == 1 && menuMagicPrayersSelected == 1) { + int k2 = spellMenu.getEntryHighlighted(spellMenuHandle); + if(k2 != -1) { + int k3 = playerStatBase[5]; + if(Data.prayerRequiredLevel[k2] > k3) + displayMessage("Your prayer ability is not high enough for this prayer", 3); + else + if(playerStatCurrent[5] == 0) + displayMessage("You have run out of prayer points. Return to a church to recharge", 3); + else + if(prayerOn[k2]) { + super.streamClass.createPacket(248); + super.streamClass.addByte(k2); + super.streamClass.formatPacket(); + prayerOn[k2] = false; + playSound("prayeroff"); + } else { + super.streamClass.createPacket(56); + super.streamClass.addByte(k2); + super.streamClass.formatPacket(); + prayerOn[k2] = true; + playSound("prayeron"); + } + } + } + mouseButtonClick = 0; + } + } + + protected final byte[] unpackData(String arg0, String arg1, int arg2) { + byte abyte0[] = link.getFile(arg0); + if(abyte0 != null) { + int l = ((abyte0[0] & 0xff) << 16) + ((abyte0[1] & 0xff) << 8) + (abyte0[2] & 0xff); + int i1 = ((abyte0[3] & 0xff) << 16) + ((abyte0[4] & 0xff) << 8) + (abyte0[5] & 0xff); + byte abyte1[] = new byte[abyte0.length - 6]; + for(int j1 = 0; j1 < abyte0.length - 6; j1++) + abyte1[j1] = abyte0[j1 + 6]; + + drawLoadingBarText(arg2, "Unpacking " + arg1); + if(i1 != l) { + byte abyte2[] = new byte[l]; + DataFileDecrypter.unpackData(abyte2, l, abyte1, i1, 0); + return abyte2; + } else { + return abyte1; + } + } else { + return super.unpackData(arg0, arg1, arg2); + } + } + + private final void drawChatMessageTabs() { + gameGraphics.drawPicture(0, windowHeight - 4, baseInventoryPic + 23); + int l = GameImage.rgbToInt(200, 200, 255); + if(messagesTab == 0) + l = GameImage.rgbToInt(255, 200, 50); + if(chatTabAllMsgFlash % 30 > 15) + l = GameImage.rgbToInt(255, 50, 50); + gameGraphics.drawText("All messages", 54, windowHeight + 6, 0, l); + l = GameImage.rgbToInt(200, 200, 255); + if(messagesTab == 1) + l = GameImage.rgbToInt(255, 200, 50); + if(chatTabHistoryFlash % 30 > 15) + l = GameImage.rgbToInt(255, 50, 50); + gameGraphics.drawText("Chat history", 155, windowHeight + 6, 0, l); + l = GameImage.rgbToInt(200, 200, 255); + if(messagesTab == 2) + l = GameImage.rgbToInt(255, 200, 50); + if(chatTabQuestFlash % 30 > 15) + l = GameImage.rgbToInt(255, 50, 50); + gameGraphics.drawText("Quest history", 255, windowHeight + 6, 0, l); + l = GameImage.rgbToInt(200, 200, 255); + if(messagesTab == 3) + l = GameImage.rgbToInt(255, 200, 50); + if(chatTabPrivateFlash % 30 > 15) + l = GameImage.rgbToInt(255, 50, 50); + gameGraphics.drawText("Private history", 355, windowHeight + 6, 0, l); + gameGraphics.drawText("Report abuse", 457, windowHeight + 6, 0, 0xffffff); + } + + public final URL getDocumentBase() { + if(link.gameApplet != null) + return link.gameApplet.getDocumentBase(); + else + return super.getDocumentBase(); + } + + private final void checkGameInputs() { + if(systemUpdate > 1) + systemUpdate--; + sendPingPacket(); + if(logoutTimer > 0) + logoutTimer--; + if(ourPlayer.currentSprite == 8 || ourPlayer.currentSprite == 9) + combatTimeout = 500; + if(combatTimeout > 0) + combatTimeout--; + if(showAppearanceWindow) { + updateAppearanceWindow(); + return; + } + for(int l = 0; l < playerCount; l++) { + Mob player = playerArray[l]; + int j1 = (player.waypointCurrent + 1) % 10; + if(player.waypointsEndSprite != j1) { + int l1 = -1; + int k3 = player.waypointsEndSprite; + int i5; + if(k3 < j1) + i5 = j1 - k3; + else + i5 = (10 + j1) - k3; + int i6 = 4; + if(i5 > 2) + i6 = (i5 - 1) * 4; + if(player.waypointsX[k3] - player.currentX > magicLoc * 3 || player.waypointsY[k3] - player.currentY > magicLoc * 3 || player.waypointsX[k3] - player.currentX < -magicLoc * 3 || player.waypointsY[k3] - player.currentY < -magicLoc * 3 || i5 > 8) { + player.currentX = player.waypointsX[k3]; + player.currentY = player.waypointsY[k3]; + } else { + if(player.currentX < player.waypointsX[k3]) { + player.currentX += i6; + player.stepCount++; + l1 = 2; + } else + if(player.currentX > player.waypointsX[k3]) { + player.currentX -= i6; + player.stepCount++; + l1 = 6; + } + if(player.currentX - player.waypointsX[k3] < i6 && player.currentX - player.waypointsX[k3] > -i6) + player.currentX = player.waypointsX[k3]; + if(player.currentY < player.waypointsY[k3]) { + player.currentY += i6; + player.stepCount++; + if(l1 == -1) + l1 = 4; + else + if(l1 == 2) + l1 = 3; + else + l1 = 5; + } else + if(player.currentY > player.waypointsY[k3]) { + player.currentY -= i6; + player.stepCount++; + if(l1 == -1) + l1 = 0; + else + if(l1 == 2) + l1 = 1; + else + l1 = 7; + } + if(player.currentY - player.waypointsY[k3] < i6 && player.currentY - player.waypointsY[k3] > -i6) + player.currentY = player.waypointsY[k3]; + } + if(l1 != -1) + player.currentSprite = l1; + if(player.currentX == player.waypointsX[k3] && player.currentY == player.waypointsY[k3]) + player.waypointsEndSprite = (k3 + 1) % 10; + } else { + player.currentSprite = player.nextSprite; + } + if(player.lastMessageTimeout > 0) + player.lastMessageTimeout--; + if(player.playerSkullTimeout > 0) + player.playerSkullTimeout--; + if(player.combatTimer > 0) + player.combatTimer--; + if(playerAliveTimeout > 0) { + playerAliveTimeout--; + if(playerAliveTimeout == 0) + displayMessage("You have been granted another life. Be more careful this time!", 3); + if(playerAliveTimeout == 0) + displayMessage("You retain your skills. Your objects land where you died", 3); + } + } + + for(int i1 = 0; i1 < npcCount; i1++) { + Mob f2 = npcArray[i1]; + int i2 = (f2.waypointCurrent + 1) % 10; + if(f2.waypointsEndSprite != i2) { + int l3 = -1; + int j5 = f2.waypointsEndSprite; + int j6; + if(j5 < i2) + j6 = i2 - j5; + else + j6 = (10 + i2) - j5; + int k6 = 4; + if(j6 > 2) + k6 = (j6 - 1) * 4; + if(f2.waypointsX[j5] - f2.currentX > magicLoc * 3 || f2.waypointsY[j5] - f2.currentY > magicLoc * 3 || f2.waypointsX[j5] - f2.currentX < -magicLoc * 3 || f2.waypointsY[j5] - f2.currentY < -magicLoc * 3 || j6 > 8) { + f2.currentX = f2.waypointsX[j5]; + f2.currentY = f2.waypointsY[j5]; + } else { + if(f2.currentX < f2.waypointsX[j5]) { + f2.currentX += k6; + f2.stepCount++; + l3 = 2; + } else + if(f2.currentX > f2.waypointsX[j5]) { + f2.currentX -= k6; + f2.stepCount++; + l3 = 6; + } + if(f2.currentX - f2.waypointsX[j5] < k6 && f2.currentX - f2.waypointsX[j5] > -k6) + f2.currentX = f2.waypointsX[j5]; + if(f2.currentY < f2.waypointsY[j5]) { + f2.currentY += k6; + f2.stepCount++; + if(l3 == -1) + l3 = 4; + else + if(l3 == 2) + l3 = 3; + else + l3 = 5; + } else + if(f2.currentY > f2.waypointsY[j5]) { + f2.currentY -= k6; + f2.stepCount++; + if(l3 == -1) + l3 = 0; + else + if(l3 == 2) + l3 = 1; + else + l3 = 7; + } + if(f2.currentY - f2.waypointsY[j5] < k6 && f2.currentY - f2.waypointsY[j5] > -k6) + f2.currentY = f2.waypointsY[j5]; + } + if(l3 != -1) + f2.currentSprite = l3; + if(f2.currentX == f2.waypointsX[j5] && f2.currentY == f2.waypointsY[j5]) + f2.waypointsEndSprite = (j5 + 1) % 10; + } else { + f2.currentSprite = f2.nextSprite; + if(f2.npcId == 43) + f2.stepCount++; + } + if(f2.lastMessageTimeout > 0) + f2.lastMessageTimeout--; + if(f2.playerSkullTimeout > 0) + f2.playerSkullTimeout--; + if(f2.combatTimer > 0) + f2.combatTimer--; + } + + if(drawMenuTab != 2) { + if(GameImage.bnn > 0) + sleepWordDelayTimer++; + if(GameImage.caa > 0) + sleepWordDelayTimer = 0; + GameImage.bnn = 0; + GameImage.caa = 0; + } + for(int k1 = 0; k1 < playerCount; k1++) { + Mob f3 = playerArray[k1]; + if(f3.projectileDistance > 0) + f3.projectileDistance--; + } + + if(cameraAutoAngleDebug) { + if(cameraAutoRotatePlayerX - ourPlayer.currentX < -500 || cameraAutoRotatePlayerX - ourPlayer.currentX > 500 || cameraAutoRotatePlayerY - ourPlayer.currentY < -500 || cameraAutoRotatePlayerY - ourPlayer.currentY > 500) { + cameraAutoRotatePlayerX = ourPlayer.currentX; + cameraAutoRotatePlayerY = ourPlayer.currentY; + } + } else { + if(cameraAutoRotatePlayerX - ourPlayer.currentX < -500 || cameraAutoRotatePlayerX - ourPlayer.currentX > 500 || cameraAutoRotatePlayerY - ourPlayer.currentY < -500 || cameraAutoRotatePlayerY - ourPlayer.currentY > 500) { + cameraAutoRotatePlayerX = ourPlayer.currentX; + cameraAutoRotatePlayerY = ourPlayer.currentY; + } + if(cameraAutoRotatePlayerX != ourPlayer.currentX) + cameraAutoRotatePlayerX += (ourPlayer.currentX - cameraAutoRotatePlayerX) / (16 + (cameraDistance - 500) / 15); + if(cameraAutoRotatePlayerY != ourPlayer.currentY) + cameraAutoRotatePlayerY += (ourPlayer.currentY - cameraAutoRotatePlayerY) / (16 + (cameraDistance - 500) / 15); + if(configCameraAutoAngle) { + int j2 = cameraAutoAngle * 32; + int i4 = j2 - cameraRotation; + byte byte0 = 1; + if(i4 != 0) { + cameraAutoRotationAmount++; + if(i4 > 128) { + byte0 = -1; + i4 = 256 - i4; + } else + if(i4 > 0) + byte0 = 1; + else + if(i4 < -128) { + byte0 = 1; + i4 = 256 + i4; + } else + if(i4 < 0) { + byte0 = -1; + i4 = -i4; + } + cameraRotation += ((cameraAutoRotationAmount * i4 + 255) / 256) * byte0; + cameraRotation &= 0xff; + } else { + cameraAutoRotationAmount = 0; + } + } + } + if(sleepWordDelayTimer > 20) { + sleepWordDelay = false; + sleepWordDelayTimer = 0; + } + if(isSleeping) { + if(super.enteredInputText.length() > 0) + if(super.enteredInputText.equalsIgnoreCase("::lostcon")) + super.streamClass.closeStream(); + else + if(super.enteredInputText.equalsIgnoreCase("::closecon")) { + requestLogout(); + } else { + super.streamClass.createPacket(200); + super.streamClass.addString(super.enteredInputText); + if(!sleepWordDelay) { + super.streamClass.addByte(0); + sleepWordDelay = true; + } + super.streamClass.formatPacket(); + super.inputText = ""; + super.enteredInputText = ""; + sleepingStatusText = "Please wait..."; + } + if(super.lastMouseButton == 1 && super.mouseY > 275 && super.mouseY < 310 && super.mouseX > 56 && super.mouseX < 456) { + super.streamClass.createPacket(200); + super.streamClass.addString("-null-"); + if(!sleepWordDelay) { + super.streamClass.addByte(0); + sleepWordDelay = true; + } + super.streamClass.formatPacket(); + super.inputText = ""; + super.enteredInputText = ""; + sleepingStatusText = "Please wait..."; + } + super.lastMouseButton = 0; + return; + } + if(super.mouseY > windowHeight - 4) { + if(super.mouseX > 15 && super.mouseX < 96 && super.lastMouseButton == 1) + messagesTab = 0; + if(super.mouseX > 110 && super.mouseX < 194 && super.lastMouseButton == 1) { + messagesTab = 1; + chatInputMenu.listShownEntries[messagesHandleType2] = 0xf423f; + } + if(super.mouseX > 215 && super.mouseX < 295 && super.lastMouseButton == 1) { + messagesTab = 2; + chatInputMenu.listShownEntries[messagesHandleType5] = 0xf423f; + } + if(super.mouseX > 315 && super.mouseX < 395 && super.lastMouseButton == 1) { + messagesTab = 3; + chatInputMenu.listShownEntries[messagesHandleType6] = 0xf423f; + } + if(super.mouseX > 417 && super.mouseX < 497 && super.lastMouseButton == 1) { + showAbuseBox = 1; + reportAbuseOptionSelected = 0; + super.inputText = ""; + super.enteredInputText = ""; + } + super.lastMouseButton = 0; + super.mouseButton = 0; + } + chatInputMenu.mouseClick(super.mouseX, super.mouseY, super.lastMouseButton, super.mouseButton); + if(messagesTab > 0 && super.mouseX >= 494 && super.mouseY >= windowHeight - 66) + super.lastMouseButton = 0; + if(chatInputMenu.isClicked(chatInputBox)) { + String input = chatInputMenu.getText(chatInputBox); + chatInputMenu.updateText(chatInputBox, ""); + if(input.startsWith("::")) { + if(!handleCommand(input.substring(2))) + sendCommand(input.substring(2)); + } else { + int len = ChatMessage.stringToBytes(input); + sendChatMessage(ChatMessage.lastChat, len); + input = ChatMessage.bytesToString(ChatMessage.lastChat, 0, len); + if(useChatFilter) + input = ChatFilter.filterChat(input); + ourPlayer.lastMessageTimeout = 150; + ourPlayer.lastMessage = input; + displayMessage(ourPlayer.username + ": " + input, 2); + } + } + if(messagesTab == 0) { + for(int k2 = 0; k2 < 5; k2++) + if(messagesTimeout[k2] > 0) + messagesTimeout[k2]--; + + } + if(playerAliveTimeout != 0) + super.lastMouseButton = 0; + if(showTradeBox || showDuelBox) { + if(super.mouseButton != 0) + mouseButtonHeldTime++; + else + mouseButtonHeldTime = 0; + if(mouseButtonHeldTime > 500) + mouseClickedHeldInTradeDuelBox += 100000; + else + if(mouseButtonHeldTime > 350) + mouseClickedHeldInTradeDuelBox += 10000; + else + if(mouseButtonHeldTime > 250) + mouseClickedHeldInTradeDuelBox += 1000; + else + if(mouseButtonHeldTime > 150) + mouseClickedHeldInTradeDuelBox += 100; + else + if(mouseButtonHeldTime > 100) + mouseClickedHeldInTradeDuelBox += 10; + else + if(mouseButtonHeldTime > 50) + mouseClickedHeldInTradeDuelBox++; + else + if(mouseButtonHeldTime > 20 && (mouseButtonHeldTime & 5) == 0) + mouseClickedHeldInTradeDuelBox++; + } else { + mouseButtonHeldTime = 0; + mouseClickedHeldInTradeDuelBox = 0; + } + if(super.lastMouseButton == 1) + mouseButtonClick = 1; + else + if(super.lastMouseButton == 2) + mouseButtonClick = 2; + gameCamera.setMousePosition(super.mouseX, super.mouseY); + super.lastMouseButton = 0; + if(configCameraAutoAngle) { + if(cameraAutoRotationAmount == 0 || cameraAutoAngleDebug) { + if(super.keyLeftDown) { + cameraAutoAngle = cameraAutoAngle + 1 & 7; + super.keyLeftDown = false; + if(!cameraZoom) { + if((cameraAutoAngle & 1) == 0) + cameraAutoAngle = cameraAutoAngle + 1 & 7; + for(int l2 = 0; l2 < 8; l2++) { + if(validCameraAngle(cameraAutoAngle)) + break; + cameraAutoAngle = cameraAutoAngle + 1 & 7; + } + } + } + if(super.keyRightDown) { + cameraAutoAngle = cameraAutoAngle + 7 & 7; + super.keyRightDown = false; + if(!cameraZoom) { + if((cameraAutoAngle & 1) == 0) + cameraAutoAngle = cameraAutoAngle + 7 & 7; + for(int i3 = 0; i3 < 8; i3++) { + if(validCameraAngle(cameraAutoAngle)) + break; + cameraAutoAngle = cameraAutoAngle + 7 & 7; + } + } + } + } + } else + if(super.keyLeftDown) + cameraRotation = cameraRotation + 2 & 0xff; + else + if(super.keyRightDown) + cameraRotation = cameraRotation - 2 & 0xff; + if(super.keyUpDown && cameraDistance > 550) + cameraDistance -= 4; + else if(super.keyDownDown && cameraDistance < 1250) + cameraDistance += 4; + if(fogOfWar) { + if((cameraZoom && cameraDistance > 550) || cameraDistance > 750) + cameraDistance -= 4; + if(!cameraZoom && cameraDistance < 750) + cameraDistance += 4; + } + if(actionPictureType > 0) + actionPictureType--; + else + if(actionPictureType < 0) + actionPictureType++; + gameCamera.bji(17); + modelUpdatingTimer++; + if(modelUpdatingTimer > 5) { + modelUpdatingTimer = 0; + modelFireLightningSpellNumber = (modelFireLightningSpellNumber + 1) % 3; + modelTorchNumber = (modelTorchNumber + 1) % 4; + modelClawSpellNumber = (modelClawSpellNumber + 1) % 5; + } + for(int j3 = 0; j3 < objectCount; j3++) { + int k4 = objectX[j3]; + int k5 = objectY[j3]; + if(k4 >= 0 && k5 >= 0 && k4 < 96 && k5 < 96 && objectType[j3] == 74) + objectArray[j3].cmi(1, 0, 0); + } + + for(int l4 = 0; l4 < teleBubbleCount; l4++) { + teleBubbleTime[l4]++; + if(teleBubbleTime[l4] > 50) { + teleBubbleCount--; + for(int l5 = l4; l5 < teleBubbleCount; l5++) { + teleBubbleX[l5] = teleBubbleX[l5 + 1]; + teleBubbleY[l5] = teleBubbleY[l5 + 1]; + teleBubbleTime[l5] = teleBubbleTime[l5 + 1]; + teleBubbleType[l5] = teleBubbleType[l5 + 1]; + } + + } + } + + } + + private final void createAppearanceWindow() { + appearanceMenu = new Menu(gameGraphics, 100); + appearanceMenu.drawText(256, 10, "Please design Your Character", 4, true); + int l = 140; + int i1 = 34; + l += 116; + i1 -= 10; + appearanceMenu.drawText(l - 55, i1 + 110, "Front", 3, true); + appearanceMenu.drawText(l, i1 + 110, "Side", 3, true); + appearanceMenu.drawText(l + 55, i1 + 110, "Back", 3, true); + byte byte0 = 54; + i1 += 145; + appearanceMenu.drawCurvedBox(l - byte0, i1, 53, 41); + appearanceMenu.drawText(l - byte0, i1 - 8, "Head", 1, true); + appearanceMenu.drawText(l - byte0, i1 + 8, "Type", 1, true); + appearanceMenu.drawArrow(l - byte0 - 40, i1, Menu.baseScrollPic + 7); + appearanceHeadLeftArrow = appearanceMenu.createButton(l - byte0 - 40, i1, 20, 20); + appearanceMenu.drawArrow((l - byte0) + 40, i1, Menu.baseScrollPic + 6); + appearanceHeadRightArrow = appearanceMenu.createButton((l - byte0) + 40, i1, 20, 20); + appearanceMenu.drawCurvedBox(l + byte0, i1, 53, 41); + appearanceMenu.drawText(l + byte0, i1 - 8, "Hair", 1, true); + appearanceMenu.drawText(l + byte0, i1 + 8, "Color", 1, true); + appearanceMenu.drawArrow((l + byte0) - 40, i1, Menu.baseScrollPic + 7); + appearanceHairLeftArrow = appearanceMenu.createButton((l + byte0) - 40, i1, 20, 20); + appearanceMenu.drawArrow(l + byte0 + 40, i1, Menu.baseScrollPic + 6); + appearanceHairRightArrow = appearanceMenu.createButton(l + byte0 + 40, i1, 20, 20); + i1 += 50; + appearanceMenu.drawCurvedBox(l - byte0, i1, 53, 41); + appearanceMenu.drawText(l - byte0, i1, "Gender", 1, true); + appearanceMenu.drawArrow(l - byte0 - 40, i1, Menu.baseScrollPic + 7); + appearanceGenderLeftArrow = appearanceMenu.createButton(l - byte0 - 40, i1, 20, 20); + appearanceMenu.drawArrow((l - byte0) + 40, i1, Menu.baseScrollPic + 6); + appearanceGenderRightArrow = appearanceMenu.createButton((l - byte0) + 40, i1, 20, 20); + appearanceMenu.drawCurvedBox(l + byte0, i1, 53, 41); + appearanceMenu.drawText(l + byte0, i1 - 8, "Top", 1, true); + appearanceMenu.drawText(l + byte0, i1 + 8, "Color", 1, true); + appearanceMenu.drawArrow((l + byte0) - 40, i1, Menu.baseScrollPic + 7); + appearanceTopLeftArrow = appearanceMenu.createButton((l + byte0) - 40, i1, 20, 20); + appearanceMenu.drawArrow(l + byte0 + 40, i1, Menu.baseScrollPic + 6); + appearanceTopRightArrow = appearanceMenu.createButton(l + byte0 + 40, i1, 20, 20); + i1 += 50; + appearanceMenu.drawCurvedBox(l - byte0, i1, 53, 41); + appearanceMenu.drawText(l - byte0, i1 - 8, "Skin", 1, true); + appearanceMenu.drawText(l - byte0, i1 + 8, "Color", 1, true); + appearanceMenu.drawArrow(l - byte0 - 40, i1, Menu.baseScrollPic + 7); + appearanceSkinLeftArrow = appearanceMenu.createButton(l - byte0 - 40, i1, 20, 20); + appearanceMenu.drawArrow((l - byte0) + 40, i1, Menu.baseScrollPic + 6); + appearanceSkingRightArrow = appearanceMenu.createButton((l - byte0) + 40, i1, 20, 20); + appearanceMenu.drawCurvedBox(l + byte0, i1, 53, 41); + appearanceMenu.drawText(l + byte0, i1 - 8, "Bottom", 1, true); + appearanceMenu.drawText(l + byte0, i1 + 8, "Color", 1, true); + appearanceMenu.drawArrow((l + byte0) - 40, i1, Menu.baseScrollPic + 7); + appearanceBottomLeftArrow = appearanceMenu.createButton((l + byte0) - 40, i1, 20, 20); + appearanceMenu.drawArrow(l + byte0 + 40, i1, Menu.baseScrollPic + 6); + appearanceBottomRightArrow = appearanceMenu.createButton(l + byte0 + 40, i1, 20, 20); + i1 += 82; + i1 -= 35; + appearanceMenu.drawButton(l, i1, 200, 30); + appearanceMenu.drawText(l, i1, "Accept", 4, false); + appearanceAcceptButton = appearanceMenu.createButton(l, i1, 200, 30); + } + + protected final void handleKeyDown(int key, char c) { + if(loggedIn == 0) { + if(loginScreen == 0 && loginMenuFirst != null) + loginMenuFirst.keyPress(key, c); + if(loginScreen == 1 && loginNewUser != null) + loginNewUser.keyPress(key, c); + if(loginScreen == 2 && loginMenuLogin != null) + loginMenuLogin.keyPress(key, c); + } + if(loggedIn == 1) { + if(key == KeyEvent.VK_F12) + takeScreenshot(true); + else if(showAppearanceWindow && appearanceMenu != null) + appearanceMenu.keyPress(key, c); + else if(showFriendsBox == 0 && showAbuseBox == 0 && !isSleeping && chatInputMenu != null) + chatInputMenu.keyPress(key, c); + } + } + + private final void generateWorldRightClickMenu() { + int l = 2203 - (sectionY + wildY + areaY); + if(sectionX + wildX + areaX >= 2640) + l = -50; + int ground = -1; + for(int j1 = 0; j1 < objectCount; j1++) + objectAlreadyInMenu[j1] = false; + + for(int k1 = 0; k1 < wallObjectCount; k1++) + wallObjectAlreadyInMenu[k1] = false; + + int optionCount = gameCamera.getOptionCount(); + GameObject objects[] = gameCamera.getHighlightedObjects(); + int players[] = gameCamera.getHighlightedPlayers(); + for(int i2 = 0; i2 < optionCount; i2++) { + if(menuOptionsCount > 200) + break; + int player = players[i2]; + GameObject object = objects[i2]; + if(object.entityType[player] <= 65535 || object.entityType[player] >= 0x30d40 && object.entityType[player] <= 0x493e0) + if(object == gameCamera.highlightedObject) { + int index = object.entityType[player] % 10000; + int type = object.entityType[player] / 10000; + if(type == 1) { + String s1 = ""; + int k4 = 0; + if(ourPlayer.level > 0 && playerArray[index].level > 0) + k4 = ourPlayer.level - playerArray[index].level; + if(k4 < 0) + s1 = "@or1@"; + if(k4 < -3) + s1 = "@or2@"; + if(k4 < -6) + s1 = "@or3@"; + if(k4 < -9) + s1 = "@red@"; + if(k4 > 0) + s1 = "@gr1@"; + if(k4 > 3) + s1 = "@gr2@"; + if(k4 > 6) + s1 = "@gr3@"; + if(k4 > 9) + s1 = "@gre@"; + s1 = " " + s1 + "(level-" + playerArray[index].level + ")"; + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 1 || Data.spellType[selectedSpell] == 2) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + menuActionID[menuOptionsCount] = 800; + menuActionX[menuOptionsCount] = playerArray[index].currentX; + menuActionY[menuOptionsCount] = playerArray[index].currentY; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuActionVar1[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + } else + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + menuActionID[menuOptionsCount] = 810; + menuActionX[menuOptionsCount] = playerArray[index].currentX; + menuActionY[menuOptionsCount] = playerArray[index].currentY; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuActionVar1[menuOptionsCount] = selectedItem; + menuOptionsCount++; + } else { + if(l > 0 && (playerArray[index].currentY - 64) / magicLoc + wildY + areaY < 2203) { + menuText1[menuOptionsCount] = "Attack"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + if(k4 >= 0 && k4 < 5) + menuActionID[menuOptionsCount] = 805; + else + menuActionID[menuOptionsCount] = 2805; + menuActionX[menuOptionsCount] = playerArray[index].currentX; + menuActionY[menuOptionsCount] = playerArray[index].currentY; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuOptionsCount++; + } else + if(Config.MEMBERS_FEATURES) { + menuText1[menuOptionsCount] = "Duel with"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + menuActionX[menuOptionsCount] = playerArray[index].currentX; + menuActionY[menuOptionsCount] = playerArray[index].currentY; + menuActionID[menuOptionsCount] = 2806; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Trade with"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + menuActionID[menuOptionsCount] = 2810; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuOptionsCount++; + menuText1[menuOptionsCount] = "Follow"; + menuText2[menuOptionsCount] = "@whi@" + playerArray[index].username + s1; + menuActionID[menuOptionsCount] = 2820; + menuActionType[menuOptionsCount] = playerArray[index].serverIndex; + menuOptionsCount++; + } + } else + if(type == 2) { + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 3) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[groundItemID[index]]; + menuActionID[menuOptionsCount] = 200; + menuActionX[menuOptionsCount] = groundItemX[index]; + menuActionY[menuOptionsCount] = groundItemY[index]; + menuActionType[menuOptionsCount] = groundItemID[index]; + menuActionVar1[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + } else + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[groundItemID[index]]; + menuActionID[menuOptionsCount] = 210; + menuActionX[menuOptionsCount] = groundItemX[index]; + menuActionY[menuOptionsCount] = groundItemY[index]; + menuActionType[menuOptionsCount] = groundItemID[index]; + menuActionVar1[menuOptionsCount] = selectedItem; + menuOptionsCount++; + } else { + menuText1[menuOptionsCount] = "Take"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[groundItemID[index]]; + menuActionID[menuOptionsCount] = 220; + menuActionX[menuOptionsCount] = groundItemX[index]; + menuActionY[menuOptionsCount] = groundItemY[index]; + menuActionType[menuOptionsCount] = groundItemID[index]; + menuOptionsCount++; + menuText1[menuOptionsCount] = "Examine"; + menuText2[menuOptionsCount] = "@lre@" + Data.itemName[groundItemID[index]]; + menuActionID[menuOptionsCount] = 3200; + menuActionType[menuOptionsCount] = groundItemID[index]; + menuOptionsCount++; + } + } else + if(type == 3) { + String s2 = ""; + int l4 = -1; + int id = npcArray[index].npcId; + if(Data.npcAttackable[id] > 0) { + int j5 = (Data.npcAttack[id] + Data.npcDefense[id] + Data.npcStrength[id] + Data.npcHits[id]) / 4; + int k5 = (playerStatBase[0] + playerStatBase[1] + playerStatBase[2] + playerStatBase[3] + 27) / 4; + l4 = k5 - j5; + s2 = "@yel@"; + if(l4 < 0) + s2 = "@or1@"; + if(l4 < -3) + s2 = "@or2@"; + if(l4 < -6) + s2 = "@or3@"; + if(l4 < -9) + s2 = "@red@"; + if(l4 > 0) + s2 = "@gr1@"; + if(l4 > 3) + s2 = "@gr2@"; + if(l4 > 6) + s2 = "@gr3@"; + if(l4 > 9) + s2 = "@gre@"; + s2 = " " + s2 + "(level-" + j5 + ")"; + } + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 2) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId]; + menuActionID[menuOptionsCount] = 700; + menuActionX[menuOptionsCount] = npcArray[index].currentX; + menuActionY[menuOptionsCount] = npcArray[index].currentY; + menuActionType[menuOptionsCount] = npcArray[index].serverIndex; + menuActionVar1[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + } else + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId]; + menuActionID[menuOptionsCount] = 710; + menuActionX[menuOptionsCount] = npcArray[index].currentX; + menuActionY[menuOptionsCount] = npcArray[index].currentY; + menuActionType[menuOptionsCount] = npcArray[index].serverIndex; + menuActionVar1[menuOptionsCount] = selectedItem; + menuOptionsCount++; + } else { + if(Data.npcAttackable[id] > 0) { + menuText1[menuOptionsCount] = "Attack"; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId] + s2; + if(l4 >= 0) + menuActionID[menuOptionsCount] = 715; + else + menuActionID[menuOptionsCount] = 2715; + menuActionX[menuOptionsCount] = npcArray[index].currentX; + menuActionY[menuOptionsCount] = npcArray[index].currentY; + menuActionType[menuOptionsCount] = npcArray[index].serverIndex; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Talk-to"; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId]; + menuActionID[menuOptionsCount] = 720; + menuActionX[menuOptionsCount] = npcArray[index].currentX; + menuActionY[menuOptionsCount] = npcArray[index].currentY; + menuActionType[menuOptionsCount] = npcArray[index].serverIndex; + menuOptionsCount++; + if(!Data.npcCommand[id].equals("")) { + menuText1[menuOptionsCount] = Data.npcCommand[id]; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId]; + menuActionID[menuOptionsCount] = 725; + menuActionX[menuOptionsCount] = npcArray[index].currentX; + menuActionY[menuOptionsCount] = npcArray[index].currentY; + menuActionType[menuOptionsCount] = npcArray[index].serverIndex; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Examine"; + menuText2[menuOptionsCount] = "@yel@" + Data.npcName[npcArray[index].npcId]; + menuActionID[menuOptionsCount] = 3700; + menuActionType[menuOptionsCount] = npcArray[index].npcId; + menuOptionsCount++; + } + } + } else + if(object != null && object.index >= 10000) { + int j3 = object.index - 10000; + int i4 = wallObjectID[j3]; + if(!wallObjectAlreadyInMenu[j3]) { + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 4) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@cya@" + Data.wallObjectName[i4]; + menuActionID[menuOptionsCount] = 300; + menuActionX[menuOptionsCount] = wallObjectX[j3]; + menuActionY[menuOptionsCount] = wallObjectY[j3]; + menuActionType[menuOptionsCount] = wallObjectDirection[j3]; + menuActionVar1[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + } else + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@cya@" + Data.wallObjectName[i4]; + menuActionID[menuOptionsCount] = 310; + menuActionX[menuOptionsCount] = wallObjectX[j3]; + menuActionY[menuOptionsCount] = wallObjectY[j3]; + menuActionType[menuOptionsCount] = wallObjectDirection[j3]; + menuActionVar1[menuOptionsCount] = selectedItem; + menuOptionsCount++; + } else { + if(!Data.wallObjectCommand1[i4].equalsIgnoreCase("WalkTo")) { + menuText1[menuOptionsCount] = Data.wallObjectCommand1[i4]; + menuText2[menuOptionsCount] = "@cya@" + Data.wallObjectName[i4]; + menuActionID[menuOptionsCount] = 320; + menuActionX[menuOptionsCount] = wallObjectX[j3]; + menuActionY[menuOptionsCount] = wallObjectY[j3]; + menuActionType[menuOptionsCount] = wallObjectDirection[j3]; + menuOptionsCount++; + } + if(!Data.wallObjectCommand2[i4].equalsIgnoreCase("Examine")) { + menuText1[menuOptionsCount] = Data.wallObjectCommand2[i4]; + menuText2[menuOptionsCount] = "@cya@" + Data.wallObjectName[i4]; + menuActionID[menuOptionsCount] = 2300; + menuActionX[menuOptionsCount] = wallObjectX[j3]; + menuActionY[menuOptionsCount] = wallObjectY[j3]; + menuActionType[menuOptionsCount] = wallObjectDirection[j3]; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Examine"; + menuText2[menuOptionsCount] = "@cya@" + Data.wallObjectName[i4]; + menuActionID[menuOptionsCount] = 3300; + menuActionType[menuOptionsCount] = i4; + menuOptionsCount++; + } + wallObjectAlreadyInMenu[j3] = true; + } + } else + if(object != null && object.index >= 0) { + int k3 = object.index; + int j4 = objectType[k3]; + if(!objectAlreadyInMenu[k3]) { + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 5) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on"; + menuText2[menuOptionsCount] = "@cya@" + Data.objectName[j4]; + menuActionID[menuOptionsCount] = 400; + menuActionX[menuOptionsCount] = objectX[k3]; + menuActionY[menuOptionsCount] = objectY[k3]; + menuActionType[menuOptionsCount] = objectRotation[k3]; + menuActionVar1[menuOptionsCount] = objectType[k3]; + menuActionVar2[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + } else + if(selectedItem >= 0) { + menuText1[menuOptionsCount] = "Use " + selectedItemName + " with"; + menuText2[menuOptionsCount] = "@cya@" + Data.objectName[j4]; + menuActionID[menuOptionsCount] = 410; + menuActionX[menuOptionsCount] = objectX[k3]; + menuActionY[menuOptionsCount] = objectY[k3]; + menuActionType[menuOptionsCount] = objectRotation[k3]; + menuActionVar1[menuOptionsCount] = objectType[k3]; + menuActionVar2[menuOptionsCount] = selectedItem; + menuOptionsCount++; + } else { + if(!Data.objectCommand1[j4].equalsIgnoreCase("WalkTo")) { + menuText1[menuOptionsCount] = Data.objectCommand1[j4]; + menuText2[menuOptionsCount] = "@cya@" + Data.objectName[j4]; + menuActionID[menuOptionsCount] = 420; + menuActionX[menuOptionsCount] = objectX[k3]; + menuActionY[menuOptionsCount] = objectY[k3]; + menuActionType[menuOptionsCount] = objectRotation[k3]; + menuActionVar1[menuOptionsCount] = objectType[k3]; + menuOptionsCount++; + } + if(!Data.objectCommand2[j4].equalsIgnoreCase("Examine")) { + menuText1[menuOptionsCount] = Data.objectCommand2[j4]; + menuText2[menuOptionsCount] = "@cya@" + Data.objectName[j4]; + menuActionID[menuOptionsCount] = 2400; + menuActionX[menuOptionsCount] = objectX[k3]; + menuActionY[menuOptionsCount] = objectY[k3]; + menuActionType[menuOptionsCount] = objectRotation[k3]; + menuActionVar1[menuOptionsCount] = objectType[k3]; + menuOptionsCount++; + } + menuText1[menuOptionsCount] = "Examine"; + menuText2[menuOptionsCount] = "@cya@" + Data.objectName[j4]; + menuActionID[menuOptionsCount] = 3400; + menuActionType[menuOptionsCount] = j4; + menuOptionsCount++; + } + objectAlreadyInMenu[k3] = true; + } + } else { + if(player >= 0) + player = object.entityType[player] - 0x30d40; + if(player >= 0) + ground = player; + } + } + + if(selectedSpell >= 0 && Data.spellType[selectedSpell] <= 1) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on self"; + menuText2[menuOptionsCount] = ""; + menuActionID[menuOptionsCount] = 1000; + menuActionType[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + } + if(ground != -1) { + if(selectedSpell >= 0) { + if(Data.spellType[selectedSpell] == 6) { + menuText1[menuOptionsCount] = "Cast " + Data.spellName[selectedSpell] + " on ground"; + menuText2[menuOptionsCount] = ""; + menuActionID[menuOptionsCount] = 900; + menuActionX[menuOptionsCount] = engineHandle.selectedX[ground]; + menuActionY[menuOptionsCount] = engineHandle.selectedY[ground]; + menuActionType[menuOptionsCount] = selectedSpell; + menuOptionsCount++; + return; + } + } else + if(selectedItem < 0) { + menuText1[menuOptionsCount] = "Walk here"; + menuText2[menuOptionsCount] = ""; + menuActionID[menuOptionsCount] = 920; + menuActionX[menuOptionsCount] = engineHandle.selectedX[ground]; + menuActionY[menuOptionsCount] = engineHandle.selectedY[ground]; + menuOptionsCount++; + } + } + } + + private final void drawShopBox() { + if(mouseButtonClick != 0) { + mouseButtonClick = 0; + int l = super.mouseX - 52; + int i1 = super.mouseY - 44; + if(l >= 0 && i1 >= 12 && l < 408 && i1 < 246) { + int j1 = 0; + for(int l1 = 0; l1 < 5; l1++) { + for(int l2 = 0; l2 < 8; l2++) { + int k3 = 7 + l2 * 49; + int k4 = 28 + l1 * 34; + if(l > k3 && l < k3 + 49 && i1 > k4 && i1 < k4 + 34 && shopItems[j1] != -1) { + selectedShopItemIndex = j1; + selectedShopItemType = shopItems[j1]; + } + j1++; + } + + } + + if(selectedShopItemIndex >= 0) { + int i3 = shopItems[selectedShopItemIndex]; + if(i3 != -1) { + if(shopItemCount[selectedShopItemIndex] > 0 && l > 298 && i1 >= 204 && l < 408 && i1 <= 215) { + super.streamClass.createPacket(128); + super.streamClass.addShort(shopItems[selectedShopItemIndex]); + super.streamClass.addInt(shopItemBuyPrice[selectedShopItemIndex]); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(i3) > 0 && l > 2 && i1 >= 229 && l < 112 && i1 <= 240) { + super.streamClass.createPacket(255); + super.streamClass.addShort(shopItems[selectedShopItemIndex]); + super.streamClass.addInt(shopItemSellPrice[selectedShopItemIndex]); + super.streamClass.formatPacket(); + } + } + } + } else { + super.streamClass.createPacket(253); + super.streamClass.formatPacket(); + showShopBox = false; + return; + } + } + byte byte0 = 52; + byte byte1 = 44; + gameGraphics.drawBox(byte0, byte1, 408, 12, 192); + int k1 = 0x989898; + gameGraphics.drawBoxAlpha(byte0, byte1 + 12, 408, 17, k1, 160); + gameGraphics.drawBoxAlpha(byte0, byte1 + 29, 8, 170, k1, 160); + gameGraphics.drawBoxAlpha(byte0 + 399, byte1 + 29, 9, 170, k1, 160); + gameGraphics.drawBoxAlpha(byte0, byte1 + 199, 408, 47, k1, 160); + gameGraphics.drawString("Buying and selling items", byte0 + 1, byte1 + 10, 1, 0xffffff); + int i2 = 0xffffff; + if(super.mouseX > byte0 + 320 && super.mouseY >= byte1 && super.mouseX < byte0 + 408 && super.mouseY < byte1 + 12) + i2 = 0xff0000; + gameGraphics.cdk("Close window", byte0 + 406, byte1 + 10, 1, i2); + gameGraphics.drawString("Shops stock in green", byte0 + 2, byte1 + 24, 1, 65280); + gameGraphics.drawString("Number you own in blue", byte0 + 135, byte1 + 24, 1, 65535); + gameGraphics.drawString("Your money: " + getInventoryItemTotalCount(10) + "gp", byte0 + 280, byte1 + 24, 1, 0xffff00); + int j3 = 0xd0d0d0; + int j4 = 0; + for(int j5 = 0; j5 < 5; j5++) { + for(int k5 = 0; k5 < 8; k5++) { + int i6 = byte0 + 7 + k5 * 49; + int l6 = byte1 + 28 + j5 * 34; + if(selectedShopItemIndex == j4) + gameGraphics.drawBoxAlpha(i6, l6, 49, 34, 0xff0000, 160); + else + gameGraphics.drawBoxAlpha(i6, l6, 49, 34, j3, 160); + gameGraphics.drawBoxEdge(i6, l6, 50, 35, 0); + if(shopItems[j4] != -1) { + gameGraphics.drawImage(i6, l6, 48, 32, baseItemPicture + Data.itemInventoryPicture[shopItems[j4]], Data.itemPictureMask[shopItems[j4]], 0, 0, false); + gameGraphics.drawString(String.valueOf(shopItemCount[j4]), i6 + 1, l6 + 10, 1, 65280); + gameGraphics.cdk(String.valueOf(getInventoryItemTotalCount(shopItems[j4])), i6 + 47, l6 + 10, 1, 65535); + } + j4++; + } + + } + + gameGraphics.drawLineX(byte0 + 5, byte1 + 222, 398, 0); + if(selectedShopItemIndex == -1) { + gameGraphics.drawText("Select an object to buy or sell", byte0 + 204, byte1 + 214, 3, 0xffff00); + return; + } + int l5 = shopItems[selectedShopItemIndex]; + if(l5 != -1) { + if(shopItemCount[selectedShopItemIndex] > 0) { + int j6 = shopItemBuyPriceModifier + shopItemBasePriceModifier[selectedShopItemIndex]; + if(j6 < 10) + j6 = 10; + int i7 = (j6 * Data.itemBasePrice[l5]) / 100; + gameGraphics.drawString("Buy a new " + Data.itemName[l5] + " for " + i7 + "gp", byte0 + 2, byte1 + 214, 1, 0xffff00); + int j2 = 0xffffff; + if(super.mouseX > byte0 + 298 && super.mouseY >= byte1 + 204 && super.mouseX < byte0 + 408 && super.mouseY <= byte1 + 215) + j2 = 0xff0000; + gameGraphics.cdk("Click here to buy", byte0 + 405, byte1 + 214, 3, j2); + } else { + gameGraphics.drawText("This item is not currently available to buy", byte0 + 204, byte1 + 214, 3, 0xffff00); + } + if(getInventoryItemTotalCount(l5) > 0) { + int k6 = shopItemSellPriceModifier + shopItemBasePriceModifier[selectedShopItemIndex]; + if(k6 < 10) + k6 = 10; + int j7 = (k6 * Data.itemBasePrice[l5]) / 100; + gameGraphics.cdk("Sell your " + Data.itemName[l5] + " for " + j7 + "gp", byte0 + 405, byte1 + 239, 1, 0xffff00); + int k2 = 0xffffff; + if(super.mouseX > byte0 + 2 && super.mouseY >= byte1 + 229 && super.mouseX < byte0 + 112 && super.mouseY <= byte1 + 240) + k2 = 0xff0000; + gameGraphics.drawString("Click here to sell", byte0 + 2, byte1 + 239, 3, k2); + return; + } + gameGraphics.drawText("You do not have any of this item to sell", byte0 + 204, byte1 + 239, 3, 0xffff00); + } + } + + private final void loadTextures() { + byte abyte0[] = unpackData("textures.jag", "Textures", 50); + if(abyte0 == null) { + errorLoading = true; + return; + } + byte abyte1[] = DataOperations.loadData("index.dat", 0, abyte0); + gameCamera.createPictures(Data.textureCount, 7, 11); + for(int l = 0; l < Data.textureCount; l++) { + String s1 = Data.textureName[l]; + byte abyte2[] = DataOperations.loadData(s1 + ".dat", 0, abyte0); + gameGraphics.unpackImageData(baseTexturePic, abyte2, abyte1, 1); + gameGraphics.drawBox(0, 0, 128, 128, 0xff00ff); + gameGraphics.drawPicture(0, 0, baseTexturePic); + int i1 = ((GameImage) (gameGraphics)).pictureAssumedWidth[baseTexturePic]; + String s2 = Data.textureSubName[l]; + if(s2 != null && s2.length() > 0) { + byte abyte3[] = DataOperations.loadData(s2 + ".dat", 0, abyte0); + gameGraphics.unpackImageData(baseTexturePic, abyte3, abyte1, 1); + gameGraphics.drawPicture(0, 0, baseTexturePic); + } + gameGraphics.cca(subTexturePic + l, 0, 0, i1, i1); + int j1 = i1 * i1; + for(int k1 = 0; k1 < j1; k1++) + if(((GameImage) (gameGraphics)).pictureColors[subTexturePic + l][k1] == 65280) + ((GameImage) (gameGraphics)).pictureColors[subTexturePic + l][k1] = 0xff00ff; + + gameGraphics.cbl(subTexturePic + l); + gameCamera.bjf(l, ((GameImage) (gameGraphics)).bmd[subTexturePic + l], ((GameImage) (gameGraphics)).bme[subTexturePic + l], i1 / 64 - 1); + } + } + + private final void drawAppearanceWindow() { + gameGraphics.interlace = false; + gameGraphics.clearScreen(); + appearanceMenu.drawMenu(); + int l = 140; + int i1 = 50; + l += 116; + i1 -= 25; + gameGraphics.drawCharacterLegs(l - 32 - 55, i1, 64, 102, Data.animationNumber[appearance2Colour], appearanceTopBottomColours[appearanceBottomColour]); + gameGraphics.drawImage(l - 32 - 55, i1, 64, 102, Data.animationNumber[appearanceBodyGender], appearanceTopBottomColours[appearanceTopColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawImage(l - 32 - 55, i1, 64, 102, Data.animationNumber[appearanceHeadType], appearanceHairColours[appearanceHairColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawCharacterLegs(l - 32, i1, 64, 102, Data.animationNumber[appearance2Colour] + 6, appearanceTopBottomColours[appearanceBottomColour]); + gameGraphics.drawImage(l - 32, i1, 64, 102, Data.animationNumber[appearanceBodyGender] + 6, appearanceTopBottomColours[appearanceTopColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawImage(l - 32, i1, 64, 102, Data.animationNumber[appearanceHeadType] + 6, appearanceHairColours[appearanceHairColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawCharacterLegs((l - 32) + 55, i1, 64, 102, Data.animationNumber[appearance2Colour] + 12, appearanceTopBottomColours[appearanceBottomColour]); + gameGraphics.drawImage((l - 32) + 55, i1, 64, 102, Data.animationNumber[appearanceBodyGender] + 12, appearanceTopBottomColours[appearanceTopColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawImage((l - 32) + 55, i1, 64, 102, Data.animationNumber[appearanceHeadType] + 12, appearanceHairColours[appearanceHairColour], appearanceSkinColours[appearanceSkinColour], 0, false); + gameGraphics.drawPicture(0, windowHeight, baseInventoryPic + 22); + gameGraphics.drawImage(graphics, 0, 0); + } + + private final void checkMouseStatus() { + if(selectedSpell >= 0 || selectedItem >= 0) { + menuText1[menuOptionsCount] = "Cancel"; + menuText2[menuOptionsCount] = ""; + menuActionID[menuOptionsCount] = 4000; + menuOptionsCount++; + } + for(int l = 0; l < menuOptionsCount; l++) + menuIndexes[l] = l; + + for(boolean flag = false; !flag;) { + flag = true; + for(int i1 = 0; i1 < menuOptionsCount - 1; i1++) { + int k1 = menuIndexes[i1]; + int i2 = menuIndexes[i1 + 1]; + if(menuActionID[k1] > menuActionID[i2]) { + menuIndexes[i1] = i2; + menuIndexes[i1 + 1] = k1; + flag = false; + } + } + + } + + if(menuOptionsCount > 20) + menuOptionsCount = 20; + if(menuOptionsCount > 0) { + int j1 = -1; + for(int l1 = 0; l1 < menuOptionsCount; l1++) { + if(menuText2[menuIndexes[l1]] == null || menuText2[menuIndexes[l1]].length() <= 0) + continue; + j1 = l1; + break; + } + + String s1 = null; + if((selectedItem >= 0 || selectedSpell >= 0) && menuOptionsCount == 1) + s1 = "Choose a target"; + else + if((selectedItem >= 0 || selectedSpell >= 0) && menuOptionsCount > 1) + s1 = "@whi@" + menuText1[menuIndexes[0]] + " " + menuText2[menuIndexes[0]]; + else + if(j1 != -1) + s1 = menuText2[menuIndexes[j1]] + ": @whi@" + menuText1[menuIndexes[0]]; + if(menuOptionsCount == 2 && s1 != null) + s1 = s1 + "@whi@ / 1 more option"; + if(menuOptionsCount > 2 && s1 != null) + s1 = s1 + "@whi@ / " + (menuOptionsCount - 1) + " more options"; + if(s1 != null) + gameGraphics.drawString(s1, 6, 14, 1, 0xffff00); + if(!configOneMouseButton && mouseButtonClick == 1 || configOneMouseButton && mouseButtonClick == 1 && menuOptionsCount == 1) { + menuClick(menuIndexes[0]); + mouseButtonClick = 0; + return; + } + if(!configOneMouseButton && mouseButtonClick == 2 || configOneMouseButton && mouseButtonClick == 1) { + menuHeight = (menuOptionsCount + 1) * 15; + menuWidth = gameGraphics.textWidth("Choose option", 1) + 5; + for(int j2 = 0; j2 < menuOptionsCount; j2++) { + int k2 = gameGraphics.textWidth(menuText1[j2] + " " + menuText2[j2], 1) + 5; + if(k2 > menuWidth) + menuWidth = k2; + } + + menuX = super.mouseX - menuWidth / 2; + menuY = super.mouseY - 7; + menuShow = true; + if(menuX < 0) + menuX = 0; + if(menuY < 0) + menuY = 0; + if(menuX + menuWidth > 510) + menuX = 510 - menuWidth; + if(menuY + menuHeight > 315) + menuY = 315 - menuHeight; + mouseButtonClick = 0; + } + } + } + + private final void drawGame() { + if(playerAliveTimeout != 0) { + gameGraphics.screenFadeToBlack(); + gameGraphics.drawText("Oh dear! You are dead...", windowWidth / 2, windowHeight / 2, 7, 0xff0000); + drawChatMessageTabs(); + gameGraphics.drawImage(graphics, 0, 0); + return; + } + if(showAppearanceWindow) { + drawAppearanceWindow(); + return; + } + if(isSleeping) { + gameGraphics.screenFadeToBlack(); + if(Math.random() < 0.14999999999999999D) + gameGraphics.drawText("ZZZ", (int)(Math.random() * 80D), (int)(Math.random() * 334D), 5, (int)(Math.random() * 16777215D)); + if(Math.random() < 0.14999999999999999D) + gameGraphics.drawText("ZZZ", 512 - (int)(Math.random() * 80D), (int)(Math.random() * 334D), 5, (int)(Math.random() * 16777215D)); + gameGraphics.drawBox(windowWidth / 2 - 100, 160, 200, 40, 0); + gameGraphics.drawText("You are sleeping", windowWidth / 2, 50, 7, 0xffff00); + gameGraphics.drawText("Fatigue: " + (fatigue * 100) / 750 + "%", windowWidth / 2, 90, 7, 0xffff00); + gameGraphics.drawText("When you want to wake up just use your", windowWidth / 2, 140, 5, 0xffffff); + gameGraphics.drawText("keyboard to type the word in the box below", windowWidth / 2, 160, 5, 0xffffff); + gameGraphics.drawText(super.inputText + "*", windowWidth / 2, 180, 5, 65535); + if(sleepingStatusText == null) { + gameGraphics.drawPixels(captchaPixels, windowWidth / 2 - 127, 230, captchaWidth, captchaHeight); + } + else + gameGraphics.drawText(sleepingStatusText, windowWidth / 2, 260, 5, 0xff0000); + gameGraphics.drawBoxEdge(windowWidth / 2 - 128, 229, 257, 42, 0xffffff); + drawChatMessageTabs(); + gameGraphics.drawText("If you can't read the word", windowWidth / 2, 290, 1, 0xffffff); + gameGraphics.drawText("@yel@click here@whi@ to get a different one", windowWidth / 2, 305, 1, 0xffffff); + gameGraphics.drawImage(graphics, 0, 0); + return; + } + if(!engineHandle.playerIsAlive) + return; + for(int l = 0; l < 64; l++) { + gameCamera.removeModel(engineHandle.gih[lastLayerIndex][l]); + if(lastLayerIndex == 0) { + gameCamera.removeModel(engineHandle.gim[1][l]); + gameCamera.removeModel(engineHandle.gih[1][l]); + gameCamera.removeModel(engineHandle.gim[2][l]); + gameCamera.removeModel(engineHandle.gih[2][l]); + } + cameraZoom = true; + if(lastLayerIndex == 0 && (engineHandle.tiles[ourPlayer.currentX / 128][ourPlayer.currentY / 128] & 0x80) == 0) { + if(showRoofs) { + gameCamera.addModel(engineHandle.gih[lastLayerIndex][l]); + if(lastLayerIndex == 0) { + gameCamera.addModel(engineHandle.gim[1][l]); + gameCamera.addModel(engineHandle.gih[1][l]); + gameCamera.addModel(engineHandle.gim[2][l]); + gameCamera.addModel(engineHandle.gih[2][l]); + } + } + cameraZoom = false; + } + } + + if(modelFireLightningSpellNumber != lastModelFireLightningSpellNumber) { + lastModelFireLightningSpellNumber = modelFireLightningSpellNumber; + for(int i1 = 0; i1 < objectCount; i1++) { + if(objectType[i1] == 97) + drawModel(i1, "firea" + (modelFireLightningSpellNumber + 1)); + if(objectType[i1] == 274) + drawModel(i1, "fireplacea" + (modelFireLightningSpellNumber + 1)); + if(objectType[i1] == 1031) + drawModel(i1, "lightning" + (modelFireLightningSpellNumber + 1)); + if(objectType[i1] == 1036) + drawModel(i1, "firespell" + (modelFireLightningSpellNumber + 1)); + if(objectType[i1] == 1147) + drawModel(i1, "spellcharge" + (modelFireLightningSpellNumber + 1)); + } + + } + if(modelTorchNumber != lastModelTorchNumber) { + lastModelTorchNumber = modelTorchNumber; + for(int j1 = 0; j1 < objectCount; j1++) { + if(objectType[j1] == 51) + drawModel(j1, "torcha" + (modelTorchNumber + 1)); + if(objectType[j1] == 143) + drawModel(j1, "skulltorcha" + (modelTorchNumber + 1)); + } + + } + if(modelClawSpellNumber != lastModelClawSpellNumber) { + lastModelClawSpellNumber = modelClawSpellNumber; + for(int k1 = 0; k1 < objectCount; k1++) + if(objectType[k1] == 1142) + drawModel(k1, "clawspell" + (modelClawSpellNumber + 1)); + + } + gameCamera.removeLastUpdates(drawUpdatesPerformed); + drawUpdatesPerformed = 0; + for(int l1 = 0; l1 < playerCount; l1++) { + Mob player = playerArray[l1]; + if(player.bottomColour != 255) { + int j2 = player.currentX; + int l2 = player.currentY; + int j3 = -engineHandle.getAveragedElevation(j2, l2); + int k4 = gameCamera.bhd(5000 + l1, j2, j3, l2, 145, 220, l1 + 10000); + drawUpdatesPerformed++; + if(player == ourPlayer) + gameCamera.bhe(k4); + if(player.currentSprite == 8) + gameCamera.bhf(k4, -30); + if(player.currentSprite == 9) + gameCamera.bhf(k4, 30); + } + } + + for(int i2 = 0; i2 < playerCount; i2++) { + Mob player = playerArray[i2]; + if(player.projectileDistance > 0) { + Mob f3 = null; + if(player.attackingNpcIndex != -1) + f3 = npcAttackingArray[player.attackingNpcIndex]; + else + if(player.attackingPlayerIndex != -1) + f3 = playerBufferArray[player.attackingPlayerIndex]; + if(f3 != null) { + int k3 = player.currentX; + int l4 = player.currentY; + int k7 = -engineHandle.getAveragedElevation(k3, l4) - 110; + int k9 = f3.currentX; + int j10 = f3.currentY; + int k10 = -engineHandle.getAveragedElevation(k9, j10) - Data.npcCameraArray2[f3.npcId] / 2; + int l10 = (k3 * player.projectileDistance + k9 * (projectileRange - player.projectileDistance)) / projectileRange; + int i11 = (k7 * player.projectileDistance + k10 * (projectileRange - player.projectileDistance)) / projectileRange; + int j11 = (l4 * player.projectileDistance + j10 * (projectileRange - player.projectileDistance)) / projectileRange; + gameCamera.bhd(baseProjectilePic + player.projectileType, l10, i11, j11, 32, 32, 0); + drawUpdatesPerformed++; + } + } + } + + for(int k2 = 0; k2 < npcCount; k2++) { + Mob npc = npcArray[k2]; + int l3 = npc.currentX; + int i5 = npc.currentY; + int l7 = -engineHandle.getAveragedElevation(l3, i5); + int l9 = gameCamera.bhd(20000 + k2, l3, l7, i5, Data.npcCameraArray1[npc.npcId], Data.npcCameraArray2[npc.npcId], k2 + 30000); + drawUpdatesPerformed++; + if(npc.currentSprite == 8) + gameCamera.bhf(l9, -30); + if(npc.currentSprite == 9) + gameCamera.bhf(l9, 30); + } + + for(int i3 = 0; i3 < groundItemCount; i3++) { + int i4 = groundItemX[i3] * magicLoc + 64; + int j5 = groundItemY[i3] * magicLoc + 64; + gameCamera.bhd(40000 + groundItemID[i3], i4, -engineHandle.getAveragedElevation(i4, j5) - groundItemObjectVar[i3], j5, 96, 64, i3 + 20000); + drawUpdatesPerformed++; + } + + for(int j4 = 0; j4 < teleBubbleCount; j4++) { + int k5 = teleBubbleX[j4] * magicLoc + 64; + int i8 = teleBubbleY[j4] * magicLoc + 64; + int i10 = teleBubbleType[j4]; + if(i10 == 0) { + gameCamera.bhd(50000 + j4, k5, -engineHandle.getAveragedElevation(k5, i8), i8, 128, 256, j4 + 50000); + drawUpdatesPerformed++; + } + if(i10 == 1) { + gameCamera.bhd(50000 + j4, k5, -engineHandle.getAveragedElevation(k5, i8), i8, 128, 64, j4 + 50000); + drawUpdatesPerformed++; + } + } + + gameGraphics.interlace = false; + gameGraphics.clearScreen(); + gameGraphics.interlace = super.keyF1Toggle; + if(lastLayerIndex == 3) { + int l5 = 40 + (int)(Math.random() * 3D); + int j8 = 40 + (int)(Math.random() * 7D); + gameCamera.bjl(l5, j8, -50, -10, -50); + } + itemsAboveHeadCount = 0; + receivedMessagesCount = 0; + healthBarVisibleCount = 0; + if(cameraAutoAngleDebug) { + if(configCameraAutoAngle && !cameraZoom) { + int i6 = cameraAutoAngle; + autoRotateCamera(); + if(cameraAutoAngle != i6) { + cameraAutoRotatePlayerX = ourPlayer.currentX; + cameraAutoRotatePlayerY = ourPlayer.currentY; + } + } + if(fogOfWar) { + gameCamera.zoom1 = 3000; + gameCamera.zoom2 = 3000; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 2800; + } + else { + gameCamera.zoom1 = 40000; + gameCamera.zoom2 = 40000; + gameCamera.zoom3 = 40000; + gameCamera.zoom4 = 40000; + } + cameraRotation = cameraAutoAngle * 32; + int j6 = cameraAutoRotatePlayerX + cameraRotationXAmount; + int k8 = cameraAutoRotatePlayerY + cameraRotationYAmount; + gameCamera.setCamera(j6, -engineHandle.getAveragedElevation(j6, k8), k8, 912, cameraRotation * 4, 0, 2000); + } else { + if(configCameraAutoAngle && !cameraZoom) + autoRotateCamera(); + if(fogOfWar) { + if(!super.keyF1Toggle) { + gameCamera.zoom1 = 2400; + gameCamera.zoom2 = 2400; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 2300; + } else { + gameCamera.zoom1 = 2200; + gameCamera.zoom2 = 2200; + gameCamera.zoom3 = 1; + gameCamera.zoom4 = 2100; + } + } + else { + gameCamera.zoom1 = 40000; + gameCamera.zoom2 = 40000; + gameCamera.zoom3 = 40000; + gameCamera.zoom4 = 40000; + } + int k6 = cameraAutoRotatePlayerX + cameraRotationXAmount; + int l8 = cameraAutoRotatePlayerY + cameraRotationYAmount; + gameCamera.setCamera(k6, -engineHandle.getAveragedElevation(k6, l8), l8, 912, cameraRotation * 4, 0, cameraDistance * 2); + } + gameCamera.finishCamera(); + drawAboveHeadThings(); + if(actionPictureType > 0) + gameGraphics.drawPicture(walkMouseX - 8, walkMouseY - 8, baseInventoryPic + 14 + (24 - actionPictureType) / 6); + if(actionPictureType < 0) + gameGraphics.drawPicture(walkMouseX - 8, walkMouseY - 8, baseInventoryPic + 18 + (24 + actionPictureType) / 6); + if(systemUpdate != 0) { + int l6 = systemUpdate / 50; + int i9 = l6 / 60; + l6 %= 60; + if(l6 < 10) + gameGraphics.drawText("System update in: " + i9 + ":0" + l6, 256, windowHeight - 7, 1, 0xffff00); + else + gameGraphics.drawText("System update in: " + i9 + ":" + l6, 256, windowHeight - 7, 1, 0xffff00); + } + if(!loadArea) { + int i7 = 2203 - (sectionY + wildY + areaY); + if(sectionX + wildX + areaX >= 2640) + i7 = -50; + if(i7 > 0) { + int j9 = 1 + i7 / 6; + gameGraphics.drawPicture(453, windowHeight - 56, baseInventoryPic + 13); + gameGraphics.drawText("Wilderness", 465, windowHeight - 20, 1, 0xffff00); + gameGraphics.drawText("Level: " + j9, 465, windowHeight - 7, 1, 0xffff00); + if(wildType == 0) + wildType = 2; + } + if(wildType == 0 && i7 > -10 && i7 <= 0) + wildType = 1; + } + if(messagesTab == 0) { + for(int j7 = 0; j7 < 5; j7++) + if(messagesTimeout[j7] > 0) { + String s1 = messagesArray[j7]; + gameGraphics.drawString(s1, 7, windowHeight - 18 - j7 * 12, 1, 0xffff00); + } + + } + chatInputMenu.ggf(messagesHandleType2); + chatInputMenu.ggf(messagesHandleType5); + chatInputMenu.ggf(messagesHandleType6); + if(messagesTab == 1) + chatInputMenu.gge(messagesHandleType2); + else + if(messagesTab == 2) + chatInputMenu.gge(messagesHandleType5); + else + if(messagesTab == 3) + chatInputMenu.gge(messagesHandleType6); + Menu.chatMenuTextHeightMod = 2; + chatInputMenu.drawMenu(); + Menu.chatMenuTextHeightMod = 0; + gameGraphics.ccd(((GameImage) (gameGraphics)).gameWidth - 3 - 197, 3, baseInventoryPic, 128); + drawMenus(); + gameGraphics.loggedIn = false; + drawChatMessageTabs(); + gameGraphics.drawImage(graphics, 0, 0); + } + + private final void drawReportAbuseBox2() { + if(super.enteredInputText.length() > 0) { + String s1 = super.enteredInputText.trim(); + super.inputText = ""; + super.enteredInputText = ""; + if(s1.length() > 0) { + long l1 = DataOperations.nameToHash(s1); + super.streamClass.createPacket(7); + super.streamClass.addLong(l1); + super.streamClass.addByte(reportAbuseOptionSelected); + //super.streamClass.addByte(dia ? 1 : 0); + super.streamClass.formatPacket(); + } + showAbuseBox = 0; + return; + } + gameGraphics.drawBox(56, 130, 400, 100, 0); + gameGraphics.drawBoxEdge(56, 130, 400, 100, 0xffffff); + int l = 160; + gameGraphics.drawText("Now type the name of the offending player, and press enter", 256, l, 1, 0xffff00); + l += 18; + gameGraphics.drawText("Name: " + super.inputText + "*", 256, l, 4, 0xffffff); + l = 222; + int i1 = 0xffffff; + if(super.mouseX > 196 && super.mouseX < 316 && super.mouseY > l - 13 && super.mouseY < l + 2) { + i1 = 0xffff00; + if(mouseButtonClick == 1) { + mouseButtonClick = 0; + showAbuseBox = 0; + } + } + gameGraphics.drawText("Click here to cancel", 256, l, 1, i1); + if(mouseButtonClick == 1 && (super.mouseX < 56 || super.mouseX > 456 || super.mouseY < 130 || super.mouseY > 230)) { + mouseButtonClick = 0; + showAbuseBox = 0; + } + } + + private final void drawMenus() { + if(logoutTimer != 0) + drawLogoutBox(); + else + if(showWelcomeBox) + drawWelcomeBox(); + else + if(showServerMessageBox) + drawServerMessageBox(); + else + if(wildType == 1) + drawWildernessAlertBox(); + else + if(showBankBox && combatTimeout == 0) + drawBankBox(); + else + if(showShopBox && combatTimeout == 0) + drawShopBox(); + else + if(showTradeConfirmBox) + drawTradeConfirmBox(); + else + if(showTradeBox) + drawTradeBox(); + else + if(showDuelConfirmBox) + drawDuelConfirmBox(); + else + if(showDuelBox) + drawDuelBox(); + else + if(showAbuseBox == 1) + drawReportAbuseBox1(); + else + if(showAbuseBox == 2) + drawReportAbuseBox2(); + else + if(showFriendsBox != 0) { + drawFriendsBox(); + } else { + if(showQuestionMenu) + drawQuestionMenu(); + if(showCombatWindow || ourPlayer.currentSprite == 8 || ourPlayer.currentSprite == 9) + drawCombatStyleBox(); + getMenuHighlighted(); + boolean flag = !showQuestionMenu && !menuShow; + if(flag) + menuOptionsCount = 0; + if(drawMenuTab == 0 && flag) + generateWorldRightClickMenu(); + if(drawMenuTab == 1) + drawInventoryMenu(flag); + if(drawMenuTab == 2) + drawMinimapMenu(flag); + if(drawMenuTab == 3) + drawStatsQuestsMenu(flag); + if(drawMenuTab == 4) + drawPrayerMagicMenu(flag); + if(drawMenuTab == 5) + drawFriendsMenu(flag); + if(drawMenuTab == 6) + drawOptionsMenu(flag); + if(!menuShow && !showQuestionMenu) + checkMouseStatus(); + if(menuShow && !showQuestionMenu) + drawRightClickMenu(); + } + mouseButtonClick = 0; + } + + private final void loadModels() { + Data.getModelNameIndex("torcha2"); + Data.getModelNameIndex("torcha3"); + Data.getModelNameIndex("torcha4"); + Data.getModelNameIndex("skulltorcha2"); + Data.getModelNameIndex("skulltorcha3"); + Data.getModelNameIndex("skulltorcha4"); + Data.getModelNameIndex("firea2"); + Data.getModelNameIndex("firea3"); + Data.getModelNameIndex("fireplacea2"); + Data.getModelNameIndex("fireplacea3"); + Data.getModelNameIndex("firespell2"); + Data.getModelNameIndex("firespell3"); + Data.getModelNameIndex("lightning2"); + Data.getModelNameIndex("lightning3"); + Data.getModelNameIndex("clawspell2"); + Data.getModelNameIndex("clawspell3"); + Data.getModelNameIndex("clawspell4"); + Data.getModelNameIndex("clawspell5"); + Data.getModelNameIndex("spellcharge2"); + Data.getModelNameIndex("spellcharge3"); + byte abyte0[] = unpackData("models.jag", "3d models", 60); + if(abyte0 == null) { + errorLoading = true; + return; + } + for(int i1 = 0; i1 < Data.modelCount; i1++) { + int j1 = DataOperations.getSoundOffset(Data.modelName[i1] + ".ob3", abyte0); + if(j1 != 0) + gameDataObjects[i1] = new GameObject(abyte0, j1, true); + else + gameDataObjects[i1] = new GameObject(1, 1); + if(Data.modelName[i1].equals("giantcrystal")) + gameDataObjects[i1].isGiantCrystal = true; + } + } + + private final void drawDuelBox() { + if(mouseButtonClick != 0 && mouseClickedHeldInTradeDuelBox == 0) + mouseClickedHeldInTradeDuelBox = 1; + if(mouseClickedHeldInTradeDuelBox > 0) { + int l = super.mouseX - 22; + int i1 = super.mouseY - 36; + if(l >= 0 && i1 >= 0 && l < 468 && i1 < 262) { + if(l > 216 && i1 > 30 && l < 462 && i1 < 235) { + int j1 = (l - 217) / 49 + ((i1 - 31) / 34) * 5; + if(j1 >= 0 && j1 < inventoryItemsCount) { + boolean flag1 = false; + int k2 = 0; + int j3 = inventoryItems[j1]; + for(int j4 = 0; j4 < duelMyItemCount; j4++) + if(duelMyItems[j4] == j3) + if(Data.itemStackable[j3] == 0) { + for(int l4 = 0; l4 < mouseClickedHeldInTradeDuelBox; l4++) { + if(duelMyItemsCount[j4] < inventoryItemCount[j1]) + duelMyItemsCount[j4]++; + flag1 = true; + } + + } else { + k2++; + } + + if(getInventoryItemTotalCount(j3) <= k2) + flag1 = true; + if(Data.itemSpecial[j3] == 1) { + displayMessage("This object cannot be added to a duel offer", 3); + flag1 = true; + } + if(!flag1 && duelMyItemCount < 8) { + duelMyItems[duelMyItemCount] = j3; + duelMyItemsCount[duelMyItemCount] = 1; + duelMyItemCount++; + flag1 = true; + } + if(flag1) { + super.streamClass.createPacket(123); + super.streamClass.addByte(duelMyItemCount); + for(int i5 = 0; i5 < duelMyItemCount; i5++) { + super.streamClass.addShort(duelMyItems[i5]); + super.streamClass.addInt(duelMyItemsCount[i5]); + } + + super.streamClass.formatPacket(); + duelOpponentAccepted = false; + duelMyAccepted = false; + } + } + } + if(l > 8 && i1 > 30 && l < 205 && i1 < 129) { + int k1 = (l - 9) / 49 + ((i1 - 31) / 34) * 4; + if(k1 >= 0 && k1 < duelMyItemCount) { + int i2 = duelMyItems[k1]; + for(int l2 = 0; l2 < mouseClickedHeldInTradeDuelBox; l2++) { + if(Data.itemStackable[i2] == 0 && duelMyItemsCount[k1] > 1) { + duelMyItemsCount[k1]--; + continue; + } + duelMyItemCount--; + mouseButtonHeldTime = 0; + for(int k3 = k1; k3 < duelMyItemCount; k3++) { + duelMyItems[k3] = duelMyItems[k3 + 1]; + duelMyItemsCount[k3] = duelMyItemsCount[k3 + 1]; + } + + break; + } + + super.streamClass.createPacket(123); + super.streamClass.addByte(duelMyItemCount); + for(int l3 = 0; l3 < duelMyItemCount; l3++) { + super.streamClass.addShort(duelMyItems[l3]); + super.streamClass.addInt(duelMyItemsCount[l3]); + } + + super.streamClass.formatPacket(); + duelOpponentAccepted = false; + duelMyAccepted = false; + } + } + boolean flag = false; + if(l >= 93 && i1 >= 221 && l <= 104 && i1 <= 232) { + duelNoRetreating = !duelNoRetreating; + flag = true; + } + if(l >= 93 && i1 >= 240 && l <= 104 && i1 <= 251) { + duelNoMagic = !duelNoMagic; + flag = true; + } + if(l >= 191 && i1 >= 221 && l <= 202 && i1 <= 232) { + duelNoPrayer = !duelNoPrayer; + flag = true; + } + if(l >= 191 && i1 >= 240 && l <= 202 && i1 <= 251) { + duelNoWeapons = !duelNoWeapons; + flag = true; + } + if(flag) { + super.streamClass.createPacket(225); + super.streamClass.addByte(duelNoRetreating ? 1 : 0); + super.streamClass.addByte(duelNoMagic ? 1 : 0); + super.streamClass.addByte(duelNoPrayer ? 1 : 0); + super.streamClass.addByte(duelNoWeapons ? 1 : 0); + super.streamClass.formatPacket(); + duelOpponentAccepted = false; + duelMyAccepted = false; + } + if(l >= 217 && i1 >= 238 && l <= 286 && i1 <= 259) { + duelMyAccepted = true; + super.streamClass.createPacket(252); + super.streamClass.formatPacket(); + } + if(l >= 394 && i1 >= 238 && l < 463 && i1 < 259) { + showDuelBox = false; + super.streamClass.createPacket(35); + super.streamClass.formatPacket(); + } + } else + if(mouseButtonClick != 0) { + showDuelBox = false; + super.streamClass.createPacket(35); + super.streamClass.formatPacket(); + } + mouseButtonClick = 0; + mouseClickedHeldInTradeDuelBox = 0; + } + if(!showDuelBox) + return; + byte byte0 = 22; + byte byte1 = 36; + gameGraphics.drawBox(byte0, byte1, 468, 12, 0xc90b1d); + int l1 = 0x989898; + gameGraphics.drawBoxAlpha(byte0, byte1 + 12, 468, 18, l1, 160); + gameGraphics.drawBoxAlpha(byte0, byte1 + 30, 8, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 205, byte1 + 30, 11, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 462, byte1 + 30, 6, 248, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 99, 197, 24, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 192, 197, 23, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 258, 197, 20, l1, 160); + gameGraphics.drawBoxAlpha(byte0 + 216, byte1 + 235, 246, 43, l1, 160); + int j2 = 0xd0d0d0; + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 30, 197, 69, j2, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 123, 197, 69, j2, 160); + gameGraphics.drawBoxAlpha(byte0 + 8, byte1 + 215, 197, 43, j2, 160); + gameGraphics.drawBoxAlpha(byte0 + 216, byte1 + 30, 246, 205, j2, 160); + for(int i3 = 0; i3 < 3; i3++) + gameGraphics.drawLineX(byte0 + 8, byte1 + 30 + i3 * 34, 197, 0); + + for(int i4 = 0; i4 < 3; i4++) + gameGraphics.drawLineX(byte0 + 8, byte1 + 123 + i4 * 34, 197, 0); + + for(int k4 = 0; k4 < 7; k4++) + gameGraphics.drawLineX(byte0 + 216, byte1 + 30 + k4 * 34, 246, 0); + + for(int j5 = 0; j5 < 6; j5++) { + if(j5 < 5) + gameGraphics.drawLineY(byte0 + 8 + j5 * 49, byte1 + 30, 69, 0); + if(j5 < 5) + gameGraphics.drawLineY(byte0 + 8 + j5 * 49, byte1 + 123, 69, 0); + gameGraphics.drawLineY(byte0 + 216 + j5 * 49, byte1 + 30, 205, 0); + } + + gameGraphics.drawLineX(byte0 + 8, byte1 + 215, 197, 0); + gameGraphics.drawLineX(byte0 + 8, byte1 + 257, 197, 0); + gameGraphics.drawLineY(byte0 + 8, byte1 + 215, 43, 0); + gameGraphics.drawLineY(byte0 + 204, byte1 + 215, 43, 0); + gameGraphics.drawString("Preparing to duel with: " + duelOpponent, byte0 + 1, byte1 + 10, 1, 0xffffff); + gameGraphics.drawString("Your Stake", byte0 + 9, byte1 + 27, 4, 0xffffff); + gameGraphics.drawString("Opponent's Stake", byte0 + 9, byte1 + 120, 4, 0xffffff); + gameGraphics.drawString("Duel Options", byte0 + 9, byte1 + 212, 4, 0xffffff); + gameGraphics.drawString("Your Inventory", byte0 + 216, byte1 + 27, 4, 0xffffff); + gameGraphics.drawString("No retreating", byte0 + 8 + 1, byte1 + 215 + 16, 3, 0xffff00); + gameGraphics.drawString("No magic", byte0 + 8 + 1, byte1 + 215 + 35, 3, 0xffff00); + gameGraphics.drawString("No prayer", byte0 + 8 + 102, byte1 + 215 + 16, 3, 0xffff00); + gameGraphics.drawString("No weapons", byte0 + 8 + 102, byte1 + 215 + 35, 3, 0xffff00); + gameGraphics.drawBoxEdge(byte0 + 93, byte1 + 215 + 6, 11, 11, 0xffff00); + if(duelNoRetreating) + gameGraphics.drawBox(byte0 + 95, byte1 + 215 + 8, 7, 7, 0xffff00); + gameGraphics.drawBoxEdge(byte0 + 93, byte1 + 215 + 25, 11, 11, 0xffff00); + if(duelNoMagic) + gameGraphics.drawBox(byte0 + 95, byte1 + 215 + 27, 7, 7, 0xffff00); + gameGraphics.drawBoxEdge(byte0 + 191, byte1 + 215 + 6, 11, 11, 0xffff00); + if(duelNoPrayer) + gameGraphics.drawBox(byte0 + 193, byte1 + 215 + 8, 7, 7, 0xffff00); + gameGraphics.drawBoxEdge(byte0 + 191, byte1 + 215 + 25, 11, 11, 0xffff00); + if(duelNoWeapons) + gameGraphics.drawBox(byte0 + 193, byte1 + 215 + 27, 7, 7, 0xffff00); + if(!duelMyAccepted) + gameGraphics.drawPicture(byte0 + 217, byte1 + 238, baseInventoryPic + 25); + gameGraphics.drawPicture(byte0 + 394, byte1 + 238, baseInventoryPic + 26); + if(duelOpponentAccepted) { + gameGraphics.drawText("Other player", byte0 + 341, byte1 + 246, 1, 0xffffff); + gameGraphics.drawText("has accepted", byte0 + 341, byte1 + 256, 1, 0xffffff); + } + if(duelMyAccepted) { + gameGraphics.drawText("Waiting for", byte0 + 217 + 35, byte1 + 246, 1, 0xffffff); + gameGraphics.drawText("other player", byte0 + 217 + 35, byte1 + 256, 1, 0xffffff); + } + for(int k5 = 0; k5 < inventoryItemsCount; k5++) { + int l5 = 217 + byte0 + (k5 % 5) * 49; + int j6 = 31 + byte1 + (k5 / 5) * 34; + gameGraphics.drawImage(l5, j6, 48, 32, baseItemPicture + Data.itemInventoryPicture[inventoryItems[k5]], Data.itemPictureMask[inventoryItems[k5]], 0, 0, false); + if(Data.itemStackable[inventoryItems[k5]] == 0) + gameGraphics.drawString(String.valueOf(inventoryItemCount[k5]), l5 + 1, j6 + 10, 1, 0xffff00); + } + + for(int i6 = 0; i6 < duelMyItemCount; i6++) { + int k6 = 9 + byte0 + (i6 % 4) * 49; + int i7 = 31 + byte1 + (i6 / 4) * 34; + gameGraphics.drawImage(k6, i7, 48, 32, baseItemPicture + Data.itemInventoryPicture[duelMyItems[i6]], Data.itemPictureMask[duelMyItems[i6]], 0, 0, false); + if(Data.itemStackable[duelMyItems[i6]] == 0) + gameGraphics.drawString(String.valueOf(duelMyItemsCount[i6]), k6 + 1, i7 + 10, 1, 0xffff00); + if(super.mouseX > k6 && super.mouseX < k6 + 48 && super.mouseY > i7 && super.mouseY < i7 + 32) + gameGraphics.drawString(Data.itemName[duelMyItems[i6]] + ": @whi@" + Data.itemDescription[duelMyItems[i6]], byte0 + 8, byte1 + 273, 1, 0xffff00); + } + + for(int l6 = 0; l6 < duelOpponentItemCount; l6++) { + int j7 = 9 + byte0 + (l6 % 4) * 49; + int k7 = 124 + byte1 + (l6 / 4) * 34; + gameGraphics.drawImage(j7, k7, 48, 32, baseItemPicture + Data.itemInventoryPicture[duelOpponentItems[l6]], Data.itemPictureMask[duelOpponentItems[l6]], 0, 0, false); + if(Data.itemStackable[duelOpponentItems[l6]] == 0) + gameGraphics.drawString(String.valueOf(duelOpponentItemsCount[l6]), j7 + 1, k7 + 10, 1, 0xffff00); + if(super.mouseX > j7 && super.mouseX < j7 + 48 && super.mouseY > k7 && super.mouseY < k7 + 32) + gameGraphics.drawString(Data.itemName[duelOpponentItems[l6]] + ": @whi@" + Data.itemDescription[duelOpponentItems[l6]], byte0 + 8, byte1 + 273, 1, 0xffff00); + } + + } + + private final void drawWildernessAlertBox() { + int l = 97; + gameGraphics.drawBox(86, 77, 340, 180, 0); + gameGraphics.drawBoxEdge(86, 77, 340, 180, 0xffffff); + gameGraphics.drawText("Warning! Proceed with caution", 256, l, 4, 0xff0000); + l += 26; + gameGraphics.drawText("If you go much further north you will enter the", 256, l, 1, 0xffffff); + l += 13; + gameGraphics.drawText("wilderness. This a very dangerous area where", 256, l, 1, 0xffffff); + l += 13; + gameGraphics.drawText("other players can attack you!", 256, l, 1, 0xffffff); + l += 22; + gameGraphics.drawText("The further north you go the more dangerous it", 256, l, 1, 0xffffff); + l += 13; + gameGraphics.drawText("becomes, but the more treasure you will find.", 256, l, 1, 0xffffff); + l += 22; + gameGraphics.drawText("In the wilderness an indicator at the bottom-right", 256, l, 1, 0xffffff); + l += 13; + gameGraphics.drawText("of the screen will show the current level of danger", 256, l, 1, 0xffffff); + l += 22; + int i1 = 0xffffff; + if(super.mouseY > l - 12 && super.mouseY <= l && super.mouseX > 181 && super.mouseX < 331) + i1 = 0xff0000; + gameGraphics.drawText("Click here to close window", 256, l, 1, i1); + if(mouseButtonClick != 0) { + if(super.mouseY > l - 12 && super.mouseY <= l && super.mouseX > 181 && super.mouseX < 331) + wildType = 2; + if(super.mouseX < 86 || super.mouseX > 426 || super.mouseY < 77 || super.mouseY > 257) + wildType = 2; + mouseButtonClick = 0; + } + } + + final void drawNPC(int x, int y, int width, int height, int index, int unknown1, int unknown2) { + Mob npc = npcArray[index]; + int l = npc.currentSprite + (cameraRotation + 16) / 32 & 7; + boolean flag = false; + int i1 = l; + if(i1 == 5) { + i1 = 3; + flag = true; + } else + if(i1 == 6) { + i1 = 2; + flag = true; + } else + if(i1 == 7) { + i1 = 1; + flag = true; + } + int j1 = i1 * 3 + walkModel[(npc.stepCount / Data.npcWalkModelArray[npc.npcId]) % 4]; + if(npc.currentSprite == 8) { + i1 = 5; + l = 2; + flag = false; + x -= (Data.npcCombatSprite[npc.npcId] * unknown2) / 100; + j1 = i1 * 3 + combatModelArray1[(tick / (Data.npcCombatModel[npc.npcId] - 1)) % 8]; + } else + if(npc.currentSprite == 9) { + i1 = 5; + l = 2; + flag = true; + x += (Data.npcCombatSprite[npc.npcId] * unknown2) / 100; + j1 = i1 * 3 + combatModelArray2[(tick / Data.npcCombatModel[npc.npcId]) % 8]; + } + for(int k1 = 0; k1 < 12; k1++) { + int l1 = animationModelArray[l][k1]; + int k2 = Data.npcAnimationCount[npc.npcId][l1]; + if(k2 >= 0) { + int i3 = 0; + int j3 = 0; + int k3 = j1; + if(flag && i1 >= 1 && i1 <= 3 && Data.animationHasF[k2] == 1) + k3 += 15; + if(i1 != 5 || Data.animationHasA[k2] == 1) { + int l3 = k3 + Data.animationNumber[k2]; + i3 = (i3 * width) / ((GameImage) (gameGraphics)).pictureAssumedWidth[l3]; + j3 = (j3 * height) / ((GameImage) (gameGraphics)).pictureAssumedHeight[l3]; + int i4 = (width * ((GameImage) (gameGraphics)).pictureAssumedWidth[l3]) / ((GameImage) (gameGraphics)).pictureAssumedWidth[Data.animationNumber[k2]]; + i3 -= (i4 - width) / 2; + int j4 = Data.animationCharacterColor[k2]; + int k4 = 0; + if(j4 == 1) { + j4 = Data.npcHairColor[npc.npcId]; + k4 = Data.npcSkinColor[npc.npcId]; + } else + if(j4 == 2) { + j4 = Data.npcTopColor[npc.npcId]; + k4 = Data.npcSkinColor[npc.npcId]; + } else + if(j4 == 3) { + j4 = Data.npcBottomColor[npc.npcId]; + k4 = Data.npcSkinColor[npc.npcId]; + } + gameGraphics.drawImage(x + i3, y + j3, i4, height, l3, j4, k4, unknown1, flag); + } + } + } + + if(npc.lastMessageTimeout > 0) { + receivedMessageMidPoint[receivedMessagesCount] = gameGraphics.textWidth(npc.lastMessage, 1) / 2; + if(receivedMessageMidPoint[receivedMessagesCount] > 150) + receivedMessageMidPoint[receivedMessagesCount] = 150; + receivedMessageHeight[receivedMessagesCount] = (gameGraphics.textWidth(npc.lastMessage, 1) / 300) * gameGraphics.textHeightNumber(1); + receivedMessageX[receivedMessagesCount] = x + width / 2; + receivedMessageY[receivedMessagesCount] = y; + receivedMessages[receivedMessagesCount++] = npc.lastMessage; + } + if(npc.currentSprite == 8 || npc.currentSprite == 9 || npc.combatTimer != 0) { + if(npc.combatTimer > 0) { + int i2 = x; + if(npc.currentSprite == 8) + i2 -= (20 * unknown2) / 100; + else + if(npc.currentSprite == 9) + i2 += (20 * unknown2) / 100; + int l2 = (npc.currentHits * 30) / npc.baseHits; + healthBarX[healthBarVisibleCount] = i2 + width / 2; + healthBarY[healthBarVisibleCount] = y; + healthBarMissing[healthBarVisibleCount++] = l2; + } + if(npc.combatTimer > 150) { + int j2 = x; + if(npc.currentSprite == 8) + j2 -= (10 * unknown2) / 100; + else + if(npc.currentSprite == 9) + j2 += (10 * unknown2) / 100; + gameGraphics.drawPicture((j2 + width / 2) - 12, (y + height / 2) - 12, baseInventoryPic + 12); + gameGraphics.drawText(String.valueOf(npc.lastDamageCount), (j2 + width / 2) - 1, y + height / 2 + 5, 3, 0xffffff); + } + } + } + + protected final void displayMessage(String s1) { + if(s1.startsWith("@bor@")) { + displayMessage(s1, 4); + return; + } + if(s1.startsWith("@que@")) { + displayMessage("@whi@" + s1, 5); + return; + } + if(s1.startsWith("@pri@")) { + displayMessage(s1, 6); + return; + } else { + displayMessage(s1, 3); + return; + } + } + + private final void drawAboveHeadThings() { + for(int l = 0; l < receivedMessagesCount; l++) { + int height = gameGraphics.textHeightNumber(1); + int x = receivedMessageX[l]; + int y = receivedMessageY[l]; + int midpoint = receivedMessageMidPoint[l]; + int l3 = receivedMessageHeight[l]; + boolean flag = true; + while(flag) { + flag = false; + for(int l4 = 0; l4 < l; l4++) + if(y + l3 > receivedMessageY[l4] - height && y - height < receivedMessageY[l4] + receivedMessageHeight[l4] && x - midpoint < receivedMessageX[l4] + receivedMessageMidPoint[l4] && x + midpoint > receivedMessageX[l4] - receivedMessageMidPoint[l4] && receivedMessageY[l4] - height - l3 < y) { + y = receivedMessageY[l4] - height - l3; + flag = true; + } + + } + receivedMessageY[l] = y; + gameGraphics.drawFloatingText(receivedMessages[l], x, y, 1, 0xffff00, 300); + } + + for(int j1 = 0; j1 < itemsAboveHeadCount; j1++) { + int x = itemAboveHeadX[j1]; + int y = itemAboveHeadY[j1]; + int scale = itemAboveHeadScale[j1]; + int id = itemAboveHeadID[j1]; + int width = (39 * scale) / 100; + int height = (27 * scale) / 100; + int j5 = y - height; + gameGraphics.drawTransparentImage(x - width / 2, j5, width, height, baseInventoryPic + 9, 85); + int k5 = (36 * scale) / 100; + int l5 = (24 * scale) / 100; + gameGraphics.drawImage(x - k5 / 2, (j5 + height / 2) - l5 / 2, k5, l5, Data.itemInventoryPicture[id] + baseItemPicture, Data.itemPictureMask[id], 0, 0, false); + } + + for(int i2 = 0; i2 < healthBarVisibleCount; i2++) { + int x = healthBarX[i2]; + int y = healthBarY[i2]; + int missing = healthBarMissing[i2]; + gameGraphics.drawBoxAlpha(x - 15, y - 3, missing, 5, 65280, 192); + gameGraphics.drawBoxAlpha((x - 15) + missing, y - 3, 30 - missing, 5, 0xff0000, 192); + } + + } + + protected final void cantLogout() { + logoutTimer = 0; + displayMessage("@cya@Sorry, you can't logout at the moment", 3); + } + + private final void drawBankBox() { + char c1 = '\u0198'; + char c2 = '\u014E'; + if(bankPage > 0 && bankItemsCount <= 48) + bankPage = 0; + if(bankPage > 1 && bankItemsCount <= 96) + bankPage = 1; + if(bankPage > 2 && bankItemsCount <= 144) + bankPage = 2; + if(selectedBankItem >= bankItemsCount || selectedBankItem < 0) + selectedBankItem = -1; + if(selectedBankItem != -1 && bankItems[selectedBankItem] != selectedBankItemType) { + selectedBankItem = -1; + selectedBankItemType = -2; + } + if(mouseButtonClick != 0) { + mouseButtonClick = 0; + int l = super.mouseX - (256 - c1 / 2); + int j1 = super.mouseY - (170 - c2 / 2); + if(l >= 0 && j1 >= 12 && l < 408 && j1 < 280) { + int l1 = bankPage * 48; + for(int k2 = 0; k2 < 6; k2++) { + for(int i3 = 0; i3 < 8; i3++) { + int k7 = 7 + i3 * 49; + int i8 = 28 + k2 * 34; + if(l > k7 && l < k7 + 49 && j1 > i8 && j1 < i8 + 34 && l1 < bankItemsCount && bankItems[l1] != -1) { + selectedBankItemType = bankItems[l1]; + selectedBankItem = l1; + } + l1++; + } + + } + + l = 256 - c1 / 2; + j1 = 170 - c2 / 2; + int id; + if(selectedBankItem < 0) + id = -1; + else + id = bankItems[selectedBankItem]; + if(id != -1) { + int count = bankItemCount[selectedBankItem]; + if(Data.itemStackable[id] == 1 && count > 1) + count = 1; + if(count >= 1 && super.mouseX >= l + 220 && super.mouseY >= j1 + 238 && super.mouseX < l + 250 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(1); + super.streamClass.formatPacket(); + } + if(count >= 5 && super.mouseX >= l + 250 && super.mouseY >= j1 + 238 && super.mouseX < l + 280 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(5); + super.streamClass.formatPacket(); + } + if(count >= 25 && super.mouseX >= l + 280 && super.mouseY >= j1 + 238 && super.mouseX < l + 305 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(25); + super.streamClass.formatPacket(); + } + if(count >= 100 && super.mouseX >= l + 305 && super.mouseY >= j1 + 238 && super.mouseX < l + 335 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(100); + super.streamClass.formatPacket(); + } + if(count >= 500 && super.mouseX >= l + 335 && super.mouseY >= j1 + 238 && super.mouseX < l + 368 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(500); + super.streamClass.formatPacket(); + } + if(count >= 2500 && super.mouseX >= l + 370 && super.mouseY >= j1 + 238 && super.mouseX < l + 400 && super.mouseY <= j1 + 249) { + super.streamClass.createPacket(183); + super.streamClass.addShort(id); + super.streamClass.addInt(2500); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 1 && super.mouseX >= l + 220 && super.mouseY >= j1 + 263 && super.mouseX < l + 250 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(1); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 5 && super.mouseX >= l + 250 && super.mouseY >= j1 + 263 && super.mouseX < l + 280 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(5); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 25 && super.mouseX >= l + 280 && super.mouseY >= j1 + 263 && super.mouseX < l + 305 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(25); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 100 && super.mouseX >= l + 305 && super.mouseY >= j1 + 263 && super.mouseX < l + 335 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(100); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 500 && super.mouseX >= l + 335 && super.mouseY >= j1 + 263 && super.mouseX < l + 368 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(500); + super.streamClass.formatPacket(); + } + if(getInventoryItemTotalCount(id) >= 2500 && super.mouseX >= l + 370 && super.mouseY >= j1 + 263 && super.mouseX < l + 400 && super.mouseY <= j1 + 274) { + super.streamClass.createPacket(198); + super.streamClass.addShort(id); + super.streamClass.addInt(2500); + super.streamClass.formatPacket(); + } + } + } else + if(bankItemsCount > 48 && l >= 50 && l <= 115 && j1 <= 12) + bankPage = 0; + else + if(bankItemsCount > 48 && l >= 115 && l <= 180 && j1 <= 12) + bankPage = 1; + else + if(bankItemsCount > 96 && l >= 180 && l <= 245 && j1 <= 12) + bankPage = 2; + else + if(bankItemsCount > 144 && l >= 245 && l <= 310 && j1 <= 12) { + bankPage = 3; + } else { + super.streamClass.createPacket(48); + super.streamClass.formatPacket(); + showBankBox = false; + return; + } + } + int i1 = 256 - c1 / 2; + int k1 = 170 - c2 / 2; + gameGraphics.drawBox(i1, k1, 408, 12, 192); + int j2 = 0x989898; + gameGraphics.drawBoxAlpha(i1, k1 + 12, 408, 17, j2, 160); + gameGraphics.drawBoxAlpha(i1, k1 + 29, 8, 204, j2, 160); + gameGraphics.drawBoxAlpha(i1 + 399, k1 + 29, 9, 204, j2, 160); + gameGraphics.drawBoxAlpha(i1, k1 + 233, 408, 47, j2, 160); + gameGraphics.drawString("Bank", i1 + 1, k1 + 10, 1, 0xffffff); + int l2 = 50; + if(bankItemsCount > 48) { + int k3 = 0xffffff; + if(bankPage == 0) + k3 = 0xff0000; + else + if(super.mouseX > i1 + l2 && super.mouseY >= k1 && super.mouseX < i1 + l2 + 65 && super.mouseY < k1 + 12) + k3 = 0xffff00; + gameGraphics.drawString("", i1 + l2, k1 + 10, 1, k3); + l2 += 65; + k3 = 0xffffff; + if(bankPage == 1) + k3 = 0xff0000; + else + if(super.mouseX > i1 + l2 && super.mouseY >= k1 && super.mouseX < i1 + l2 + 65 && super.mouseY < k1 + 12) + k3 = 0xffff00; + gameGraphics.drawString("", i1 + l2, k1 + 10, 1, k3); + l2 += 65; + } + if(bankItemsCount > 96) { + int l3 = 0xffffff; + if(bankPage == 2) + l3 = 0xff0000; + else + if(super.mouseX > i1 + l2 && super.mouseY >= k1 && super.mouseX < i1 + l2 + 65 && super.mouseY < k1 + 12) + l3 = 0xffff00; + gameGraphics.drawString("", i1 + l2, k1 + 10, 1, l3); + l2 += 65; + } + if(bankItemsCount > 144) { + int i4 = 0xffffff; + if(bankPage == 3) + i4 = 0xff0000; + else + if(super.mouseX > i1 + l2 && super.mouseY >= k1 && super.mouseX < i1 + l2 + 65 && super.mouseY < k1 + 12) + i4 = 0xffff00; + gameGraphics.drawString("", i1 + l2, k1 + 10, 1, i4); + l2 += 65; + } + int j4 = 0xffffff; + if(super.mouseX > i1 + 320 && super.mouseY >= k1 && super.mouseX < i1 + 408 && super.mouseY < k1 + 12) + j4 = 0xff0000; + gameGraphics.cdk("Close window", i1 + 406, k1 + 10, 1, j4); + gameGraphics.drawString("Number in bank in green", i1 + 7, k1 + 24, 1, 65280); + gameGraphics.drawString("Number held in blue", i1 + 289, k1 + 24, 1, 65535); + int l7 = 0xd0d0d0; + int j8 = bankPage * 48; + for(int l8 = 0; l8 < 6; l8++) { + for(int i9 = 0; i9 < 8; i9++) { + int k9 = i1 + 7 + i9 * 49; + int l9 = k1 + 28 + l8 * 34; + if(selectedBankItem == j8) + gameGraphics.drawBoxAlpha(k9, l9, 49, 34, 0xff0000, 160); + else + gameGraphics.drawBoxAlpha(k9, l9, 49, 34, l7, 160); + gameGraphics.drawBoxEdge(k9, l9, 50, 35, 0); + if(j8 < bankItemsCount && bankItems[j8] != -1) { + gameGraphics.drawImage(k9, l9, 48, 32, baseItemPicture + Data.itemInventoryPicture[bankItems[j8]], Data.itemPictureMask[bankItems[j8]], 0, 0, false); + gameGraphics.drawString(String.valueOf(bankItemCount[j8]), k9 + 1, l9 + 10, 1, 65280); + gameGraphics.cdk(String.valueOf(getInventoryItemTotalCount(bankItems[j8])), k9 + 47, l9 + 29, 1, 65535); + } + j8++; + } + + } + + gameGraphics.drawLineX(i1 + 5, k1 + 256, 398, 0); + if(selectedBankItem == -1) { + gameGraphics.drawText("Select an object to withdraw or deposit", i1 + 204, k1 + 248, 3, 0xffff00); + return; + } + int j9; + if(selectedBankItem < 0) + j9 = -1; + else + j9 = bankItems[selectedBankItem]; + if(j9 != -1) { + int k8 = bankItemCount[selectedBankItem]; + if(Data.itemStackable[j9] == 1 && k8 > 1) + k8 = 1; + if(k8 > 0) { + gameGraphics.drawString("Withdraw " + Data.itemName[j9], i1 + 2, k1 + 248, 1, 0xffffff); + int k4 = 0xffffff; + if(super.mouseX >= i1 + 220 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 250 && super.mouseY <= k1 + 249) + k4 = 0xff0000; + gameGraphics.drawString("One", i1 + 222, k1 + 248, 1, k4); + if(k8 >= 5) { + int l4 = 0xffffff; + if(super.mouseX >= i1 + 250 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 280 && super.mouseY <= k1 + 249) + l4 = 0xff0000; + gameGraphics.drawString("Five", i1 + 252, k1 + 248, 1, l4); + } + if(k8 >= 25) { + int i5 = 0xffffff; + if(super.mouseX >= i1 + 280 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 305 && super.mouseY <= k1 + 249) + i5 = 0xff0000; + gameGraphics.drawString("25", i1 + 282, k1 + 248, 1, i5); + } + if(k8 >= 100) { + int j5 = 0xffffff; + if(super.mouseX >= i1 + 305 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 335 && super.mouseY <= k1 + 249) + j5 = 0xff0000; + gameGraphics.drawString("100", i1 + 307, k1 + 248, 1, j5); + } + if(k8 >= 500) { + int k5 = 0xffffff; + if(super.mouseX >= i1 + 335 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 368 && super.mouseY <= k1 + 249) + k5 = 0xff0000; + gameGraphics.drawString("500", i1 + 337, k1 + 248, 1, k5); + } + if(k8 >= 2500) { + int l5 = 0xffffff; + if(super.mouseX >= i1 + 370 && super.mouseY >= k1 + 238 && super.mouseX < i1 + 400 && super.mouseY <= k1 + 249) + l5 = 0xff0000; + gameGraphics.drawString("2500", i1 + 370, k1 + 248, 1, l5); + } + } + if(getInventoryItemTotalCount(j9) > 0) { + gameGraphics.drawString("Deposit " + Data.itemName[j9], i1 + 2, k1 + 273, 1, 0xffffff); + int i6 = 0xffffff; + if(super.mouseX >= i1 + 220 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 250 && super.mouseY <= k1 + 274) + i6 = 0xff0000; + gameGraphics.drawString("One", i1 + 222, k1 + 273, 1, i6); + if(getInventoryItemTotalCount(j9) >= 5) { + int j6 = 0xffffff; + if(super.mouseX >= i1 + 250 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 280 && super.mouseY <= k1 + 274) + j6 = 0xff0000; + gameGraphics.drawString("Five", i1 + 252, k1 + 273, 1, j6); + } + if(getInventoryItemTotalCount(j9) >= 25) { + int k6 = 0xffffff; + if(super.mouseX >= i1 + 280 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 305 && super.mouseY <= k1 + 274) + k6 = 0xff0000; + gameGraphics.drawString("25", i1 + 282, k1 + 273, 1, k6); + } + if(getInventoryItemTotalCount(j9) >= 100) { + int l6 = 0xffffff; + if(super.mouseX >= i1 + 305 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 335 && super.mouseY <= k1 + 274) + l6 = 0xff0000; + gameGraphics.drawString("100", i1 + 307, k1 + 273, 1, l6); + } + if(getInventoryItemTotalCount(j9) >= 500) { + int i7 = 0xffffff; + if(super.mouseX >= i1 + 335 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 368 && super.mouseY <= k1 + 274) + i7 = 0xff0000; + gameGraphics.drawString("500", i1 + 337, k1 + 273, 1, i7); + } + if(getInventoryItemTotalCount(j9) >= 2500) { + int j7 = 0xffffff; + if(super.mouseX >= i1 + 370 && super.mouseY >= k1 + 263 && super.mouseX < i1 + 400 && super.mouseY <= k1 + 274) + j7 = 0xff0000; + gameGraphics.drawString("2500", i1 + 370, k1 + 273, 1, j7); + } + } + } + } + + public final Graphics getGraphics() { + if(GameApplet.gameFrame != null) + return GameApplet.gameFrame.getGraphics(); + if(link.gameApplet != null) + return link.gameApplet.getGraphics(); + else + return super.getGraphics(); + } + + private final boolean loadSection(int x, int y) { + if(playerAliveTimeout != 0) { + engineHandle.playerIsAlive = false; + return false; + } + loadArea = false; + x += wildX; + y += wildY; + if(lastLayerIndex == layerIndex && x > sectionLowerX && x < sectionUpperX && y > sectionLowerY && y < sectionUpperY) { + engineHandle.playerIsAlive = true; + return false; + } + gameGraphics.drawText("Loading... Please wait", 256, 192, 1, 0xffffff); + drawChatMessageTabs(); + gameGraphics.drawImage(graphics, 0, 0); + int l = areaX; + int i1 = areaY; + int xBase = (x + 24) / 48; + int yBase = (y + 24) / 48; + lastLayerIndex = layerIndex; + areaX = xBase * 48 - 48; + areaY = yBase * 48 - 48; + sectionLowerX = xBase * 48 - 32; + sectionLowerY = yBase * 48 - 32; + sectionUpperX = xBase * 48 + 32; + sectionUpperY = yBase * 48 + 32; + engineHandle.loadSection(x, y, lastLayerIndex); + areaX -= wildX; + areaY -= wildY; + int offsetX = areaX - l; + int offsetY = areaY - i1; + for(int j2 = 0; j2 < objectCount; j2++) { + objectX[j2] -= offsetX; + objectY[j2] -= offsetY; + int k2 = objectX[j2]; + int i3 = objectY[j2]; + int l3 = objectType[j2]; + GameObject object = objectArray[j2]; + try { + int j5 = objectRotation[j2]; + int i6; + int l6; + if(j5 == 0 || j5 == 4) { + i6 = Data.objectWidth[l3]; + l6 = Data.objectHeight[l3]; + } else { + l6 = Data.objectWidth[l3]; + i6 = Data.objectHeight[l3]; + } + int i7 = ((k2 + k2 + i6) * magicLoc) / 2; + int j7 = ((i3 + i3 + l6) * magicLoc) / 2; + if(k2 >= 0 && i3 >= 0 && k2 < 96 && i3 < 96) { + gameCamera.addModel(object); + object.cml(i7, -engineHandle.getAveragedElevation(i7, j7), j7); + engineHandle.gla(k2, i3, l3, j5); + if(l3 == 74) + object.cmk(0, -480, 0); + } + } + catch(RuntimeException runtimeexception) { + System.out.println("Loc Error: " + runtimeexception.getMessage()); + System.out.println("i:" + j2 + " obj:" + object); + runtimeexception.printStackTrace(); + } + } + + for(int l2 = 0; l2 < wallObjectCount; l2++) { + wallObjectX[l2] -= offsetX; + wallObjectY[l2] -= offsetY; + int j3 = wallObjectX[l2]; + int i4 = wallObjectY[l2]; + int l4 = wallObjectID[l2]; + int k5 = wallObjectDirection[l2]; + try { + engineHandle.gkc(j3, i4, k5, l4); + GameObject j6 = makeWallObject(j3, i4, k5, l4, l2); + wallObjectArray[l2] = j6; + } + catch(RuntimeException runtimeexception1) { + System.out.println("Bound Error: " + runtimeexception1.getMessage()); + runtimeexception1.printStackTrace(); + } + } + + for(int k3 = 0; k3 < groundItemCount; k3++) { + groundItemX[k3] -= offsetX; + groundItemY[k3] -= offsetY; + } + + for(int j4 = 0; j4 < playerCount; j4++) { + Mob f1 = playerArray[j4]; + f1.currentX -= offsetX * magicLoc; + f1.currentY -= offsetY * magicLoc; + for(int l5 = 0; l5 <= f1.waypointCurrent; l5++) { + f1.waypointsX[l5] -= offsetX * magicLoc; + f1.waypointsY[l5] -= offsetY * magicLoc; + } + + } + + for(int i5 = 0; i5 < npcCount; i5++) { + Mob f2 = npcArray[i5]; + f2.currentX -= offsetX * magicLoc; + f2.currentY -= offsetY * magicLoc; + for(int k6 = 0; k6 <= f2.waypointCurrent; k6++) { + f2.waypointsX[k6] -= offsetX * magicLoc; + f2.waypointsY[k6] -= offsetY * magicLoc; + } + + } + + engineHandle.playerIsAlive = true; + return true; + } + + private static final String formatItemCount(int arg0) { + String s1 = String.valueOf(arg0); + for(int l = s1.length() - 3; l > 0; l -= 3) + s1 = s1.substring(0, l) + "," + s1.substring(l); + + if(s1.length() > 8) + s1 = "@gre@" + s1.substring(0, s1.length() - 8) + " million @whi@(" + s1 + ")"; + else + if(s1.length() > 4) + s1 = "@cya@" + s1.substring(0, s1.length() - 4) + "K @whi@(" + s1 + ")"; + return s1; + } + + private final boolean hasRequiredRunes(int l, int i1) { + if(l == 31 && (isItemEquipped(197) || isItemEquipped(615) || isItemEquipped(682))) + return true; + if(l == 32 && (isItemEquipped(102) || isItemEquipped(616) || isItemEquipped(683))) + return true; + if(l == 33 && (isItemEquipped(101) || isItemEquipped(617) || isItemEquipped(684))) + return true; + if(l == 34 && (isItemEquipped(103) || isItemEquipped(618) || isItemEquipped(685))) + return true; + return getInventoryItemTotalCount(l) >= i1; + } + + private final void displayMessage(String message, int type) { + if(type == 2 || type == 4 || type == 6) { + for(; message.length() > 5 && message.charAt(0) == '@' && message.charAt(4) == '@'; message = message.substring(5)); + int l = message.indexOf(":"); + if(l != -1) { + String s1 = message.substring(0, l); + long l1 = DataOperations.nameToHash(s1); + for(int j1 = 0; j1 < super.ignoresCount; j1++) + if(super.ignoresList[j1] == l1) + return; + + } + } + if(type == 2) + message = "@yel@" + message; + if(type == 3 || type == 4) + message = "@whi@" + message; + if(type == 6) + message = "@cya@" + message; + if(messagesTab != 0) { + if(type == 4 || type == 3) + chatTabAllMsgFlash = 200; + if(type == 2 && messagesTab != 1) + chatTabHistoryFlash = 200; + if(type == 5 && messagesTab != 2) + chatTabQuestFlash = 200; + if(type == 6 && messagesTab != 3) + chatTabPrivateFlash = 200; + if(type == 3 && messagesTab != 0) + messagesTab = 0; + if(type == 6 && messagesTab != 3 && messagesTab != 0) + messagesTab = 0; + } + for(int i1 = 4; i1 > 0; i1--) { + messagesArray[i1] = messagesArray[i1 - 1]; + messagesTimeout[i1] = messagesTimeout[i1 - 1]; + } + + messagesArray[0] = message; + messagesTimeout[0] = 300; + if(type == 2) + if(chatInputMenu.listShownEntries[messagesHandleType2] == chatInputMenu.listLength[messagesHandleType2] - 4) + chatInputMenu.addMessage(messagesHandleType2, message, true); + else + chatInputMenu.addMessage(messagesHandleType2, message, false); + if(type == 5) + if(chatInputMenu.listShownEntries[messagesHandleType5] == chatInputMenu.listLength[messagesHandleType5] - 4) + chatInputMenu.addMessage(messagesHandleType5, message, true); + else + chatInputMenu.addMessage(messagesHandleType5, message, false); + if(type == 6) { + if(chatInputMenu.listShownEntries[messagesHandleType6] == chatInputMenu.listLength[messagesHandleType6] - 4) { + chatInputMenu.addMessage(messagesHandleType6, message, true); + return; + } + chatInputMenu.addMessage(messagesHandleType6, message, false); + } + } + + private final void drawMinimapObject(int l, int i1, int j1) { + gameGraphics.drawMinimapPixel(l, i1, j1); + gameGraphics.drawMinimapPixel(l - 1, i1, j1); + gameGraphics.drawMinimapPixel(l + 1, i1, j1); + gameGraphics.drawMinimapPixel(l, i1 - 1, j1); + gameGraphics.drawMinimapPixel(l, i1 + 1, j1); + } + + private final void drawServerMessageBox() { + char c1 = '\u0190'; + char c2 = 'd'; + if(serverMessageBoxTop) { + c2 = '\u01C2'; + c2 = '\u012C'; + } + gameGraphics.drawBox(256 - c1 / 2, 167 - c2 / 2, c1, c2, 0); + gameGraphics.drawBoxEdge(256 - c1 / 2, 167 - c2 / 2, c1, c2, 0xffffff); + gameGraphics.drawFloatingText(serverMessage, 256, (167 - c2 / 2) + 20, 1, 0xffffff, c1 - 40); + int l = 157 + c2 / 2; + int i1 = 0xffffff; + if(super.mouseY > l - 12 && super.mouseY <= l && super.mouseX > 106 && super.mouseX < 406) + i1 = 0xff0000; + gameGraphics.drawText("Click here to close window", 256, l, 1, i1); + if(mouseButtonClick == 1) { + if(i1 == 0xff0000) + showServerMessageBox = false; + if((super.mouseX < 256 - c1 / 2 || super.mouseX > 256 + c1 / 2) && (super.mouseY < 167 - c2 / 2 || super.mouseY > 167 + c2 / 2)) + showServerMessageBox = false; + } + mouseButtonClick = 0; + } + + public final Image createImage(int l, int i1) { + if(GameApplet.gameFrame != null) + return GameApplet.gameFrame.createImage(l, i1); + if(link.gameApplet != null) + return link.gameApplet.createImage(l, i1); + else + return super.createImage(l, i1); + } + + private final GameObject makeWallObject(int x, int y, int dir, int type, int totalCount) { + int i2 = x; + int j2 = y; + int k2 = x; + int l2 = y; + int i3 = Data.wallObjectModelVar2[type]; + int j3 = Data.wallObjectModelVar3[type]; + int k3 = Data.wallObjectModelVar1[type]; + GameObject l3 = new GameObject(4, 1); + if(dir == 0) + k2 = x + 1; + if(dir == 1) + l2 = y + 1; + if(dir == 2) { + i2 = x + 1; + l2 = y + 1; + } + if(dir == 3) { + k2 = x + 1; + l2 = y + 1; + } + i2 *= magicLoc; + j2 *= magicLoc; + k2 *= magicLoc; + l2 *= magicLoc; + int i4 = l3.cln(i2, -engineHandle.getAveragedElevation(i2, j2), j2); + int j4 = l3.cln(i2, -engineHandle.getAveragedElevation(i2, j2) - k3, j2); + int k4 = l3.cln(k2, -engineHandle.getAveragedElevation(k2, l2) - k3, l2); + int l4 = l3.cln(k2, -engineHandle.getAveragedElevation(k2, l2), l2); + int ai[] = { + i4, j4, k4, l4 + }; + l3.cmb(4, ai, i3, j3); + l3.cme(false, 60, 24, -50, -10, -50); + if(x >= 0 && y >= 0 && x < 96 && y < 96) + gameCamera.addModel(l3); + l3.index = totalCount + 10000; + return l3; + } + + private final void resetPrivateMessages() { + super.pmText = ""; + super.enteredPMText = ""; + } + + private final Mob makeNPC(int index, int x, int y, int sprite, int id) { + if(npcAttackingArray[index] == null) { + npcAttackingArray[index] = new Mob(); + npcAttackingArray[index].serverIndex = index; + } + Mob f1 = npcAttackingArray[index]; + boolean flag = false; + for(int l = 0; l < lastNpcCount; l++) { + if(lastNpcArray[l].serverIndex != index) + continue; + flag = true; + break; + } + + if(flag) { + f1.npcId = id; + f1.nextSprite = sprite; + int i1 = f1.waypointCurrent; + if(x != f1.waypointsX[i1] || y != f1.waypointsY[i1]) { + f1.waypointCurrent = i1 = (i1 + 1) % 10; + f1.waypointsX[i1] = x; + f1.waypointsY[i1] = y; + } + } else { + f1.serverIndex = index; + f1.waypointsEndSprite = 0; + f1.waypointCurrent = 0; + f1.waypointsX[0] = f1.currentX = x; + f1.waypointsY[0] = f1.currentY = y; + f1.npcId = id; + f1.nextSprite = f1.currentSprite = sprite; + f1.stepCount = 0; + } + npcArray[npcCount++] = f1; + return f1; + } + + private final void updateBankItems() { + bankItemsCount = serverBankItemsCount; + for(int l = 0; l < serverBankItemsCount; l++) { + bankItems[l] = serverBankItems[l]; + bankItemCount[l] = serverBankItemCount[l]; + } + + for(int i1 = 0; i1 < inventoryItemsCount; i1++) { + if(bankItemsCount >= maxBankItems) + break; + int j1 = inventoryItems[i1]; + boolean flag = false; + for(int k1 = 0; k1 < bankItemsCount; k1++) { + if(bankItems[k1] != j1) + continue; + flag = true; + break; + } + + if(!flag) { + bankItems[bankItemsCount] = j1; + bankItemCount[bankItemsCount] = 0; + bankItemsCount++; + } + } + + } + + private final void drawStatsQuestsMenu(boolean canClick) { + int l = ((GameImage) (gameGraphics)).gameWidth - 199; + int i1 = 36; + gameGraphics.drawPicture(l - 49, 3, baseInventoryPic + 3); + char c1 = '\304'; + char c2 = '\u0113'; + int k1; + int j1 = k1 = GameImage.rgbToInt(160, 160, 160); + if(questMenuSelected == 0) + j1 = GameImage.rgbToInt(220, 220, 220); + else + k1 = GameImage.rgbToInt(220, 220, 220); + gameGraphics.drawBoxAlpha(l, i1, c1 / 2, 24, j1, 128); + gameGraphics.drawBoxAlpha(l + c1 / 2, i1, c1 / 2, 24, k1, 128); + gameGraphics.drawBoxAlpha(l, i1 + 24, c1, c2 - 24, GameImage.rgbToInt(220, 220, 220), 128); + gameGraphics.drawLineX(l, i1 + 24, c1, 0); + gameGraphics.drawLineY(l + c1 / 2, i1, 24, 0); + gameGraphics.drawText("Stats", l + c1 / 4, i1 + 16, 4, 0); + gameGraphics.drawText("Quests", l + c1 / 4 + c1 / 2, i1 + 16, 4, 0); + if(questMenuSelected == 0) { + int l1 = 72; + int j2 = -1; + gameGraphics.drawString("Skills", l + 5, l1, 3, 0xffff00); + l1 += 13; + for(int k2 = 0; k2 < 9; k2++) { + int l2 = 0xffffff; + if(super.mouseX > l + 3 && super.mouseY >= l1 - 11 && super.mouseY < l1 + 2 && super.mouseX < l + 90) { + l2 = 0xff0000; + j2 = k2; + } + gameGraphics.drawString(skillName[k2] + ":@yel@" + playerStatCurrent[k2] + "/" + playerStatBase[k2], l + 5, l1, 1, l2); + l2 = 0xffffff; + if(super.mouseX >= l + 90 && super.mouseY >= l1 - 13 - 11 && super.mouseY < (l1 - 13) + 2 && super.mouseX < l + 196) { + l2 = 0xff0000; + j2 = k2 + 9; + } + gameGraphics.drawString(skillName[k2 + 9] + ":@yel@" + playerStatCurrent[k2 + 9] + "/" + playerStatBase[k2 + 9], (l + c1 / 2) - 5, l1 - 13, 1, l2); + l1 += 13; + } + + gameGraphics.drawString("Quest Points:@yel@" + questPoints, (l + c1 / 2) - 5, l1 - 13, 1, 0xffffff); + l1 += 12; + gameGraphics.drawString("Fatigue: @yel@" + (fatigue * 100) / 750 + "%", l + 5, l1 - 13, 1, 0xffffff); + l1 += 8; + gameGraphics.drawString("Equipment Status", l + 5, l1, 3, 0xffff00); + l1 += 12; + for(int i3 = 0; i3 < 3; i3++) { + gameGraphics.drawString(gearStats[i3] + ":@yel@" + equipmentStatus[i3], l + 5, l1, 1, 0xffffff); + if(i3 < 2) + gameGraphics.drawString(gearStats[i3 + 3] + ":@yel@" + equipmentStatus[i3 + 3], l + c1 / 2 + 25, l1, 1, 0xffffff); + l1 += 13; + } + + l1 += 6; + gameGraphics.drawLineX(l, l1 - 15, c1, 0); + if(j2 != -1) { + gameGraphics.drawString(skillNameVerb[j2] + " skill", l + 5, l1, 1, 0xffff00); + l1 += 12; + int j3 = experienceList[0]; + for(int l3 = 0; l3 < 98; l3++) + if(playerStatExp[j2] >= experienceList[l3]) + j3 = experienceList[l3 + 1]; + + gameGraphics.drawString("Total xp: " + playerStatExp[j2], l + 5, l1, 1, 0xffffff); + l1 += 12; + gameGraphics.drawString("Next level at: " + j3 / 4, l + 5, l1, 1, 0xffffff); + } else { + gameGraphics.drawString("Overall levels", l + 5, l1, 1, 0xffff00); + l1 += 12; + int k3 = 0; + for(int i4 = 0; i4 < 18; i4++) + k3 += playerStatBase[i4]; + + gameGraphics.drawString("Skill total: " + k3, l + 5, l1, 1, 0xffffff); + l1 += 12; + gameGraphics.drawString("Combat level: " + ourPlayer.level, l + 5, l1, 1, 0xffffff); + l1 += 12; + } + } + if(questMenuSelected == 1) { + questsLastShownEntries = questMenu.listShownEntries; + questMenu.clearList(questMenuHandle); + questMenu.addListItem(questMenuHandle, 0, "@whi@Quest-list (green=completed)"); + for(int i2 = 0; i2 < usedQuestName.length; i2++) + questMenu.addListItem(questMenuHandle, i2 + 1, (questStage[i2] == 0 ? "@red@" : questStage[i2] == 1 ? "@yel@" : "@gre@") + usedQuestName[i2]); + + questMenu.listShownEntries = questsLastShownEntries; + questMenu.drawMenu(); + } + if(!canClick) + return; + l = super.mouseX - (((GameImage) (gameGraphics)).gameWidth - 199); + i1 = super.mouseY - 36; + if(l >= 0 && i1 >= 0 && l < c1 && i1 < c2) { + if(questMenuSelected == 1) + questMenu.mouseClick(l + (((GameImage) (gameGraphics)).gameWidth - 199), i1 + 36, super.lastMouseButton, super.mouseButton); + if(i1 <= 24 && mouseButtonClick == 1) { + if(l < 98) { + questMenuSelected = 0; + return; + } + if(l > 98) + questMenuSelected = 1; + } + } + } + + private final void drawFriendsBox() { + if(mouseButtonClick != 0) { + mouseButtonClick = 0; + if(showFriendsBox == 1 && (super.mouseX < 106 || super.mouseY < 145 || super.mouseX > 406 || super.mouseY > 215)) { + showFriendsBox = 0; + return; + } + if(showFriendsBox == 2 && (super.mouseX < 6 || super.mouseY < 145 || super.mouseX > 506 || super.mouseY > 215)) { + showFriendsBox = 0; + return; + } + if(showFriendsBox == 3 && (super.mouseX < 106 || super.mouseY < 145 || super.mouseX > 406 || super.mouseY > 215)) { + showFriendsBox = 0; + return; + } + if(super.mouseX > 236 && super.mouseX < 276 && super.mouseY > 193 && super.mouseY < 213) { + showFriendsBox = 0; + return; + } + } + int l = 145; + if(showFriendsBox == 1) { + gameGraphics.drawBox(106, l, 300, 70, 0); + gameGraphics.drawBoxEdge(106, l, 300, 70, 0xffffff); + l += 20; + gameGraphics.drawText("Enter name to add to friends list", 256, l, 4, 0xffffff); + l += 20; + gameGraphics.drawText(super.inputText + "*", 256, l, 4, 0xffffff); + if(super.enteredInputText.length() > 0) { + String s1 = super.enteredInputText.trim(); + super.inputText = ""; + super.enteredInputText = ""; + showFriendsBox = 0; + if(s1.length() > 0 && DataOperations.nameToHash(s1) != ourPlayer.nameHash) + addFriend(s1); + } + } + if(showFriendsBox == 2) { + gameGraphics.drawBox(6, l, 500, 70, 0); + gameGraphics.drawBoxEdge(6, l, 500, 70, 0xffffff); + l += 20; + gameGraphics.drawText("Enter message to send to " + DataOperations.hashToName(pmTarget), 256, l, 4, 0xffffff); + l += 20; + gameGraphics.drawText(super.pmText + "*", 256, l, 4, 0xffffff); + if(super.enteredPMText.length() > 0) { + String s2 = super.enteredPMText; + super.pmText = ""; + super.enteredPMText = ""; + showFriendsBox = 0; + int j1 = ChatMessage.stringToBytes(s2); + sendPrivateMessage(pmTarget, ChatMessage.lastChat, j1); + s2 = ChatMessage.bytesToString(ChatMessage.lastChat, 0, j1); + if(useChatFilter) + s2 = ChatFilter.filterChat(s2); + displayMessage("@pri@You tell " + DataOperations.hashToName(pmTarget) + ": " + s2); + } + } + if(showFriendsBox == 3) { + gameGraphics.drawBox(106, l, 300, 70, 0); + gameGraphics.drawBoxEdge(106, l, 300, 70, 0xffffff); + l += 20; + gameGraphics.drawText("Enter name to add to ignore list", 256, l, 4, 0xffffff); + l += 20; + gameGraphics.drawText(super.inputText + "*", 256, l, 4, 0xffffff); + if(super.enteredInputText.length() > 0) { + String s3 = super.enteredInputText.trim(); + super.inputText = ""; + super.enteredInputText = ""; + showFriendsBox = 0; + if(s3.length() > 0 && DataOperations.nameToHash(s3) != ourPlayer.nameHash) + addIgnore(s3); + } + } + int i1 = 0xffffff; + if(super.mouseX > 236 && super.mouseX < 276 && super.mouseY > 193 && super.mouseY < 213) + i1 = 0xffff00; + gameGraphics.drawText("Cancel", 256, 208, 1, i1); + } + + private final void playSound(String s1) { + if(audioPlayer == null || !Config.MEMBERS_FEATURES) + return; + if(!configSoundOff) + audioPlayer.play(soundData, DataOperations.getSoundOffset(s1 + ".pcm", soundData), DataOperations.getSoundLength(s1 + ".pcm", soundData)); + } + + private final void drawRightClickMenu() { + if(mouseButtonClick != 0) { + for(int l = 0; l < menuOptionsCount; l++) { + int j1 = menuX + 2; + int l1 = menuY + 27 + l * 15; + if(super.mouseX <= j1 - 2 || super.mouseY <= l1 - 12 || super.mouseY >= l1 + 4 || super.mouseX >= (j1 - 3) + menuWidth) + continue; + menuClick(menuIndexes[l]); + break; + } + + mouseButtonClick = 0; + menuShow = false; + return; + } + if(super.mouseX < menuX - 10 || super.mouseY < menuY - 10 || super.mouseX > menuX + menuWidth + 10 || super.mouseY > menuY + menuHeight + 10) { + menuShow = false; + return; + } + gameGraphics.drawBoxAlpha(menuX, menuY, menuWidth, menuHeight, 0xd0d0d0, 160); + gameGraphics.drawString("Choose option", menuX + 2, menuY + 12, 1, 65535); + for(int i1 = 0; i1 < menuOptionsCount; i1++) { + int k1 = menuX + 2; + int i2 = menuY + 27 + i1 * 15; + int j2 = 0xffffff; + if(super.mouseX > k1 - 2 && super.mouseY > i2 - 12 && super.mouseY < i2 + 4 && super.mouseX < (k1 - 3) + menuWidth) + j2 = 0xffff00; + gameGraphics.drawString(menuText1[menuIndexes[i1]] + " " + menuText2[menuIndexes[i1]], k1, i2, 1, j2); + } + + } + + private final void getMenuHighlighted() { + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 && super.mouseY < 35) + drawMenuTab = 1; + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 33 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 33 && super.mouseY < 35) { + drawMenuTab = 2; + minimapRandomRotationX = (int)(Math.random() * 13D) - 6; + minimapRandomRotationY = (int)(Math.random() * 23D) - 11; + } + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 66 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 66 && super.mouseY < 35) + drawMenuTab = 3; + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 99 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 99 && super.mouseY < 35) + drawMenuTab = 4; + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 132 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 132 && super.mouseY < 35) + drawMenuTab = 5; + if(drawMenuTab == 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 165 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 165 && super.mouseY < 35) + drawMenuTab = 6; + if(drawMenuTab != 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 && super.mouseY < 26) + drawMenuTab = 1; + if(drawMenuTab != 0 && drawMenuTab != 2 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 33 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 33 && super.mouseY < 26) { + drawMenuTab = 2; + minimapRandomRotationX = (int)(Math.random() * 13D) - 6; + minimapRandomRotationY = (int)(Math.random() * 23D) - 11; + } + if(drawMenuTab != 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 66 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 66 && super.mouseY < 26) + drawMenuTab = 3; + if(drawMenuTab != 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 99 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 99 && super.mouseY < 26) + drawMenuTab = 4; + if(drawMenuTab != 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 132 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 132 && super.mouseY < 26) + drawMenuTab = 5; + if(drawMenuTab != 0 && super.mouseX >= ((GameImage) (gameGraphics)).gameWidth - 35 - 165 && super.mouseY >= 3 && super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 3 - 165 && super.mouseY < 26) + drawMenuTab = 6; + if(drawMenuTab == 1 && (super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 248 || super.mouseY > 36 + (maxInventoryItems / 5) * 34)) + drawMenuTab = 0; + if(drawMenuTab == 3 && (super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 199 || super.mouseY > 316)) + drawMenuTab = 0; + if((drawMenuTab == 2 || drawMenuTab == 4 || drawMenuTab == 5) && (super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 199 || super.mouseY > 240)) + drawMenuTab = 0; + if(drawMenuTab == 6 && (super.mouseX < ((GameImage) (gameGraphics)).gameWidth - 199 || super.mouseY > 326)) + drawMenuTab = 0; + } + + protected final int getUID() { + return link.uid; + } + + private boolean takeScreenshot(boolean verb) { + try { + String charName = DataOperations.hashToName(DataOperations.nameToHash(username)); + File dir = new File(Config.MEDIA_DIR + "/" + charName); + if(!dir.exists() || !dir.isDirectory()) + dir.mkdir(); + String folder = dir.getPath() + "/"; + File file = null; + for(int count = 0; file == null || file.exists(); count++) + file = new File(folder + "screenshot" + count + ".png"); + BufferedImage bi = new BufferedImage(windowWidth, windowHeight + 11, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = bi.createGraphics(); + g2d.drawImage(gameGraphics.image, 0, 0, this); + g2d.dispose(); + ImageIO.write(bi, "png", file); + if(verb) + displayMessage("Screenshot saved as " + file.getName()); + return true; + } catch(IOException ioe) { + if(verb) + displayMessage("Error saving screenshot"); + return false; + } + } + + private Mob getLastPlayer(int serverIndex) { + for (int i1 = 0; i1 < lastPlayerCount; i1++) { + if (lastPlayerArray[i1].serverIndex == serverIndex) { + return lastPlayerArray[i1]; + } + } + return null; + } + + private Mob getLastNpc(int serverIndex) { + for (int i1 = 0; i1 < lastNpcCount; i1++) { + if (lastNpcArray[i1].serverIndex == serverIndex) { + return lastNpcArray[i1]; + } + } + return null; + } + + public boolean handleCommand(String command) { + try { + int firstSpace = command.indexOf(' '); + String cmd = command; + String args[] = new String[0]; + if(firstSpace != -1) { + cmd = command.substring(0, firstSpace).trim(); + args = command.substring(firstSpace).trim().split(" "); + } + if(cmd.equals("closecon")) { + super.streamClass.closeStream(); + return true; + } + if(cmd.equals("logout")) { + sendLogout(); + return true; + } + if(cmd.equals("lostcon")) { + lostConnection(); + return true; + } + if(cmd.equals("tell")) { + long recipient = DataOperations.nameToHash(args[0]); + String message = joinString(args, " ", 1).trim(); + if(message.equals("")) + return true; + int len = ChatMessage.stringToBytes(message); + sendPrivateMessage(recipient, ChatMessage.lastChat, len); + message = ChatMessage.bytesToString(ChatMessage.lastChat, 0, len); + if(useChatFilter) + message = ChatFilter.filterChat(message); + displayMessage("@pri@You tell " + DataOperations.hashToName(recipient) + ": " + message); + return true; + } + } catch(Exception e) { + e.printStackTrace(); + } + return false; + } + + public String joinString(String hay[], String glue, int start) { + String ret = ""; + for(int i = start; i < hay.length; i++) + ret += hay[i] + (i != hay.length - 1 ? glue : ""); + return ret; + } + + public String joinString(String hay[], String glue) { + return joinString(hay, glue, 0); + } + + public mudclient() { + tradeOtherName = ""; + windowWidth = 512; + windowHeight = 334; + cameraFieldOfView = 9; + showQuestionMenu = false; + loginScreenShown = false; + questionMenuAnswer = new String[5]; + appearanceBodyGender = 1; + appearance2Colour = 2; + appearanceHairColour = 2; + appearanceTopColour = 8; + appearanceBottomColour = 14; + appearanceHeadGender = 1; + menuIndexes = new int[250]; + duelMyItems = new int[8]; + duelMyItemsCount = new int[8]; + playerArray = new Mob[500]; + selectedShopItemIndex = -1; + selectedShopItemType = -2; + menuText1 = new String[250]; + isSleeping = false; + tradeItemsOther = new int[14]; + tradeItemOtherCount = new int[14]; + tradeOtherAccepted = false; + tradeWeAccepted = false; + itemAboveHeadScale = new int[50]; + itemAboveHeadID = new int[50]; + playerStatCurrent = new int[18]; + menuActionX = new int[250]; + menuActionY = new int[250]; + menuActionID = new int[250]; + showTradeBox = false; + npcArray = new Mob[500]; + duelNoRetreating = false; + duelNoMagic = false; + duelNoPrayer = false; + duelNoWeapons = false; + playerBufferArray = new Mob[4000]; + serverMessage = ""; + duelOpponentAccepted = false; + duelMyAccepted = false; + wallObjectX = new int[500]; + wallObjectY = new int[500]; + serverMessageBoxTop = false; + cameraRotationYIncrement = 2; + wallObjectArray = new GameObject[500]; + messagesArray = new String[5]; + objectAlreadyInMenu = new boolean[1500]; + objectArray = new GameObject[1500]; + selectedSpell = -1; + cameraAutoAngleDebug = false; + ourPlayer = new Mob(); + serverIndex = -1; + tradeItemsOur = new int[14]; + tradeItemOurCount = new int[14]; + showWelcomeBox = false; + menuActionType = new int[250]; + menuActionVar1 = new int[250]; + menuActionVar2 = new int[250]; + sleepWordDelay = true; + configCameraAutoAngle = true; + cameraRotation = 128; + configSoundOff = false; + menuShow = false; + duelOpponentItems = new int[8]; + duelOpponentItemsCount = new int[8]; + showBankBox = false; + playerStatBase = new int[18]; + serverBankItems = new int[256]; + serverBankItemCount = new int[256]; + showShopBox = false; + groundItemX = new int[5000]; + groundItemY = new int[5000]; + groundItemID = new int[5000]; + groundItemObjectVar = new int[5000]; + maxBankItems = 48; + tradeConfirmOtherItems = new int[14]; + tradeConfirmOtherItemsCount = new int[14]; + layerIndex = -1; + walkArrayX = new int[8000]; + walkArrayY = new int[8000]; + cameraDistance = 550; + receivedMessageX = new int[50]; + receivedMessageY = new int[50]; + receivedMessageMidPoint = new int[50]; + receivedMessageHeight = new int[50]; + wallObjectAlreadyInMenu = new boolean[500]; + lastLayerIndex = -1; + bankItems = new int[256]; + bankItemCount = new int[256]; + maxInventoryItems = 30; + errorLoading = false; + itemAboveHeadX = new int[50]; + itemAboveHeadY = new int[50]; + showServerMessageBox = false; + playerBufferArrayIndexes = new int[500]; + tradeConfirmItems = new int[14]; + tradeConfigItemsCount = new int[14]; + selectedBankItem = -1; + selectedBankItemType = -2; + showDuelConfirmBox = false; + duelConfirmOurAccepted = false; + wallObjectDirection = new int[500]; + wallObjectID = new int[500]; + gameDataObjects = new GameObject[1000]; + lastNpcArray = new Mob[500]; + inventoryItems = new int[35]; + inventoryItemCount = new int[35]; + inventoryItemEquipped = new int[35]; + selectedItem = -1; + selectedItemName = ""; + lastPlayerArray = new Mob[500]; + showTradeConfirmBox = false; + tradeConfirmAccepted = false; + playerStatExp = new int[18]; + mouseTrailX = new int[8192]; + mouseTrailY = new int[8192]; + configOneMouseButton = false; + prayerOn = new boolean[50]; + shopItems = new int[256]; + shopItemCount = new int[256]; + shopItemBasePriceModifier = new int[256]; + duelOpponentStakeItem = new int[8]; + duelOutStakeItemCount = new int[8]; + equipmentStatus = new int[5]; + receivedMessages = new String[50]; + cameraRotationXIncrement = 2; + teleBubbleTime = new int[50]; + magicLoc = 128; + questStage = new int[questName.length]; + teleBubbleType = new int[50]; + experienceList = new int[99]; + lastModelFireLightningSpellNumber = -1; + lastModelTorchNumber = -1; + lastModelClawSpellNumber = -1; + messagesTimeout = new int[5]; + projectileRange = 40; + memoryError = false; + duelOurStakeItem = new int[8]; + duelOurStakeItemCount = new int[8]; + menuText2 = new String[250]; + loginUsername = ""; + loginPassword = ""; + duelOpponent = ""; + healthBarX = new int[50]; + healthBarY = new int[50]; + healthBarMissing = new int[50]; + objectX = new int[1500]; + objectY = new int[1500]; + objectType = new int[1500]; + objectRotation = new int[1500]; + showDuelBox = false; + npcAttackingArray = new Mob[5000]; + teleBubbleY = new int[50]; + cameraAutoAngle = 1; + loadArea = false; + teleBubbleX = new int[50]; + showAppearanceWindow = false; + cameraZoom = false; + + fogOfWar = true; + showCombatWindow = false; + showRoofs = true; + autoScreenshot = false; + useChatFilter = true; + usedQuestName = new String[0]; + subDaysLeft = 0; + shopItemSellPrice = new int[256]; + shopItemBuyPrice = new int[256]; + captchaPixels = new int[0][0]; + captchaWidth = 0; + captchaHeight = 0; + needsClear = false; + hasWorldInfo = false; + friendsLastShownEntries = new int[5]; + spellsLastShownEntries = new int[5]; + prayersLastShownEntries = new int[5]; + questsLastShownEntries = new int[5]; + } + + private String tradeOtherName; + private int windowWidth; + private int windowHeight; + private int cameraFieldOfView; + private boolean showQuestionMenu; + private boolean loginScreenShown; + private String questionMenuAnswer[]; + private int appearanceHeadType; + private int appearanceBodyGender; + private int appearance2Colour; + private int appearanceHairColour; + private int appearanceTopColour; + private int appearanceBottomColour; + private int appearanceSkinColour; + private int appearanceHeadGender; + private Menu chatInputMenu; + int messagesHandleType2; + int chatInputBox; + int messagesHandleType5; + int messagesHandleType6; + int messagesTab; + private int menuIndexes[]; + private int duelMyItemCount; + private int duelMyItems[]; + private int duelMyItemsCount[]; + private int systemUpdate; + private Mob playerArray[]; + private final String questName[] = {// TODO really?... needs to be done better imho + "Cook's Assistant", "Sheep Shearer", "Black knight's fortress", "Imp catcher", "Vampire slayer", + "Romeo & Juliet", "The restless ghost", "Doric's quest", "The knight's sword", "Witch's potion", + "Goblin diplomacy", "Ernest the chicken", "Demon Slayer", "Pirate's treasure", "Prince Ali Rescue", + "Shield of Arrav", "Dragon Slayer" + /*"Black knight's fortress", "Cook's assistant", "Demon slayer", "Doric's quest", "The restless ghost", "Goblin diplomacy", "Ernest the chicken", + "Imp catcher", "Pirate's treasure", "Prince Ali rescue", + "Romeo & Juliet", "Sheep shearer", "Shield of Arrav", "The knight's sword", "Vampire slayer", "Witch's potion", "Dragon slayer", "Witch's house (members)", + "Lost city (members)", "Hero's quest (members)", + "Druidic ritual (members)", "Merlin's crystal (members)", "Scorpion catcher (members)", "Family crest (members)", "Tribal totem (members)", + "Fishing contest (members)", "Monk's friend (members)", "Temple of Ikov (members)", "Clock tower (members)", "The Holy Grail (members)", + "Fight Arena (members)", "Tree Gnome Village (members)", "The Hazeel Cult (members)", "Sheep Herder (members)", "Plague City (members)", + "Sea Slug (members)", "Waterfall quest (members)", "Biohazard (members)", "Jungle potion (members)", "Grand tree (members)", + "Shilo village (members)", "Underground pass (members)", "Observatory quest (members)", "Tourist trap (members)", "Watchtower (members)", + "Dwarf Cannon (members)", "Murder Mystery (members)", "Digsite (members)", "Gertrude's Cat (members)", "Legend's Quest (members)"*/ + }; + private int selectedShopItemIndex; + private int selectedShopItemType; + private String sleepingStatusText; + private String menuText1[]; + private boolean isSleeping; + private int modelFireLightningSpellNumber; + private int modelTorchNumber; + private int modelClawSpellNumber; + private int tradeItemsOtherCount; + private int tradeItemsOther[]; + private int tradeItemOtherCount[]; + private boolean tradeOtherAccepted; + private boolean tradeWeAccepted; + private int itemAboveHeadScale[]; + private int itemAboveHeadID[]; + private int playerStatCurrent[]; + private int menuActionX[]; + private int menuActionY[]; + private final String skillNameVerb[] = { + "Attack", "Defense", "Strength", "Hits", "Ranged", "Prayer", "Magic", "Cooking", "Woodcutting", "Fletching", + "Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblaw", "Agility", "Thieving" + }; + private int menuActionID[]; + private int playerAliveTimeout; + private int cameraAutoRotatePlayerX; + private int cameraAutoRotatePlayerY; + private boolean showTradeBox; + private Mob npcArray[]; + private boolean duelNoRetreating; + private boolean duelNoMagic; + private boolean duelNoPrayer; + private boolean duelNoWeapons; + private Menu appearanceMenu; + private int animationModelArray[][] = { { + 11, 2, 9, 7, 1, 6, 10, 0, 5, 8, + 3, 4 + }, { + 11, 2, 9, 7, 1, 6, 10, 0, 5, 8, + 3, 4 + }, { + 11, 3, 2, 9, 7, 1, 6, 10, 0, 5, + 8, 4 + }, { + 3, 4, 2, 9, 7, 1, 6, 10, 8, 11, + 0, 5 + }, { + 3, 4, 2, 9, 7, 1, 6, 10, 8, 11, + 0, 5 + }, { + 4, 3, 2, 9, 7, 1, 6, 10, 8, 11, + 0, 5 + }, { + 11, 4, 2, 9, 7, 1, 6, 10, 0, 5, + 8, 3 + }, { + 11, 2, 9, 7, 1, 6, 10, 0, 5, 8, + 4, 3 + } + }; + private int playerCount; + private int lastPlayerCount; + private int drawUpdatesPerformed; + private Mob playerBufferArray[]; + private String serverMessage; + private int groundItemCount; + private boolean duelOpponentAccepted; + private boolean duelMyAccepted; + private int wallObjectX[]; + private int wallObjectY[]; + private boolean serverMessageBoxTop; + private int fatigue; + private int cameraRotationYAmount; + private int cameraRotationYIncrement; + private int walkModel[] = { + 0, 1, 2, 1 + }; + private int itemsAboveHeadCount; + private AudioReader audioPlayer; + private GameObject wallObjectArray[]; + private String messagesArray[]; + private long duelOpponentHash; + private Menu questMenu; + int questMenuHandle; + int questMenuSelected; + private boolean objectAlreadyInMenu[]; + private GameObject objectArray[]; + private int selectedSpell; + private boolean cameraAutoAngleDebug; + private String lastLoginAddress; + private Mob ourPlayer; + int sectionX; + int sectionY; + int serverIndex; + private int tradeItemsOurCount; + private int tradeItemsOur[]; + private int tradeItemOurCount[]; + private boolean showWelcomeBox; + private int menuActionType[]; + private int menuActionVar1[]; + private int menuActionVar2[]; + private boolean sleepWordDelay; + private boolean configCameraAutoAngle; + private int minimapRandomRotationX; + private int minimapRandomRotationY; + private int loginMenuOkButton; + private int cameraRotation; + private int combatStyle; + private final int appearanceSkinColours[] = { + 0xecded0, 0xccb366, 0xb38c40, 0x997326, 0x906020 + }; + private boolean configSoundOff; + private boolean menuShow; + private int duelOpponentItemCount; + private int duelOpponentItems[]; + private int duelOpponentItemsCount[]; + private Menu loginMenuLogin; + private int appearanceHeadLeftArrow; + private int appearanceHeadRightArrow; + private int appearanceHairLeftArrow; + private int appearanceHairRightArrow; + private int appearanceGenderLeftArrow; + private int appearanceGenderRightArrow; + private int appearanceTopLeftArrow; + private int appearanceTopRightArrow; + private int appearanceSkinLeftArrow; + private int appearanceSkingRightArrow; + private int appearanceBottomLeftArrow; + private int appearanceBottomRightArrow; + private int appearanceAcceptButton; + private byte soundData[]; + private boolean showBankBox; + private int shopItemSellPriceModifier; + private int shopItemBuyPriceModifier; + private int wildType; + private int playerStatBase[]; + private long tradeConfirmOtherNameLong; + private int showAbuseBox; + private int serverBankItems[]; + private int serverBankItemCount[]; + private boolean showShopBox; + private int groundItemX[]; + private int groundItemY[]; + private int groundItemID[]; + private int groundItemObjectVar[]; + private GameImageMiddleMan gameGraphics; + private int maxBankItems; + private int tradeConfirmOtherItemCount; + private int tradeConfirmOtherItems[]; + private int tradeConfirmOtherItemsCount[]; + private int tick; + private EngineHandle engineHandle; + private int areaX; + private int areaY; + private int layerIndex; + private int mouseButtonClick; + private Menu loginNewUser; + private int walkArrayX[]; + private int walkArrayY[]; + private int combatModelArray2[] = { + 0, 0, 0, 0, 0, 1, 2, 1 + }; + private int cameraDistance; + private int receivedMessageX[]; + private int receivedMessageY[]; + private int receivedMessageMidPoint[]; + private int receivedMessageHeight[]; + private boolean wallObjectAlreadyInMenu[]; + private int wildX; + private int wildY; + private int layerModifier; + private int lastLayerIndex; + private int bankItems[]; + private int bankItemCount[]; + private final String skillName[] = { + "Attack", "Defense", "Strength", "Hits", "Ranged", "Prayer", "Magic", "Cooking", "Woodcut", "Fletching", + "Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblaw", "Agility", "Thieving" + }; + private int npcCount; + private int lastNpcCount; + private int combatTimeout; + private int maxInventoryItems; + private Graphics graphics; + private boolean errorLoading; + private int animationNumber; + private int itemAboveHeadX[]; + private int itemAboveHeadY[]; + private int duelRetreat; + private int duelMagic; + private int duelPrayer; + private int duelWeapons; + private boolean showServerMessageBox; + private int playerBufferArrayIndexes[]; + private int loginScreen; + private int tradeConfigItemCount; + private int tradeConfirmItems[]; + private int tradeConfigItemsCount[]; + private int selectedBankItem; + private int selectedBankItemType; + private boolean showDuelConfirmBox; + private boolean duelConfirmOurAccepted; + private int wallObjectDirection[]; + private int wallObjectID[]; + private GameObject gameDataObjects[]; + private Mob lastNpcArray[]; + private int modelUpdatingTimer; + private int inventoryItemsCount; + private int inventoryItems[]; + private int inventoryItemCount[]; + private int inventoryItemEquipped[]; + private int selectedItem; + String selectedItemName; + private Mob lastPlayerArray[]; + private boolean showTradeConfirmBox; + private boolean tradeConfirmAccepted; + private int playerStatExp[]; + private int loginButtonNewUser; + private int loginMenuLoginButton; + private int mouseTrailIndex; + int mouseTrailX[]; + int mouseTrailY[]; + private boolean configOneMouseButton; + private boolean prayerOn[]; + private int lastLoginDays; + private int loginMenuStatusText; + private int loginMenuUserText; + private int loginMenuPasswordText; + private int loginMenuOkLoginButton; + private int loginMenuCancelButton; + private int shopItems[]; + private int shopItemCount[]; + private int shopItemBasePriceModifier[]; + private int objectCount; + private int duelOpponentStakeCount; + private int duelOpponentStakeItem[]; + private int duelOutStakeItemCount[]; + private int baseInventoryPic; + private int baseScrollPic; + private int baseItemPicture; + private int baseProjectilePic; + private int baseTexturePic; + private int subTexturePic; + private int baseLoginScreenBackgroundPic; + private int sectionLowerX; + private int sectionLowerY; + private int sectionUpperX; + private int sectionUpperY; + private int equipmentStatus[]; + private int drawMenuTab; + private int receivedMessagesCount; + String receivedMessages[]; + private int cameraRotateTime; + private int questionMenuCount; + private int cameraRotationXAmount; + private int cameraRotationXIncrement; + private int teleBubbleTime[]; + private final String gearStats[] = { + "Armour", "WeaponAim", "WeaponPower", "Magic", "Prayer" + }; + private int logoutTimer; + private int wallObjectCount; + private int magicLoc; + private int loggedIn; + private int questStage[]; + private int teleBubbleType[]; + private int experienceList[]; + private int lastModelFireLightningSpellNumber; + private int lastModelTorchNumber; + private int lastModelClawSpellNumber; + private int chatTabAllMsgFlash; + private int chatTabHistoryFlash; + private int chatTabQuestFlash; + private int chatTabPrivateFlash; + private int messagesTimeout[]; + private int projectileRange; + private final int appearanceTopBottomColours[] = { + 0xff0000, 0xff8000, 0xffe000, 0xa0e000, 57344, 32768, 41088, 45311, 33023, 12528, + 0xe000e0, 0x303030, 0x604000, 0x805000, 0xffffff + }; + private int showFriendsBox; + private int teleBubbleCount; + private boolean memoryError; + private final int appearanceHairColours[] = { + 0xffc030, 0xffa040, 0x805030, 0x604020, 0x303030, 0xff6020, 0xff4000, 0xffffff, 65280, 65535 + }; + private Menu spellMenu; + int spellMenuHandle; + int menuMagicPrayersSelected; + private int duelOurStakeCount; + private int duelOurStakeItem[]; + private int duelOurStakeItemCount[]; + private int menuX; + private int menuY; + private int menuWidth; + private int menuHeight; + private int menuOptionsCount; + private Camera gameCamera; + private Menu friendsMenu; + int friendsMenuHandle; + int friendsIgnoreMenuSelected; + long pmTarget; + private int healthBarVisibleCount; + private String menuText2[]; + private int sleepWordDelayTimer; + private int mouseButtonHeldTime; + private int mouseClickedHeldInTradeDuelBox; + private String loginUsername; + private String loginPassword; + private String duelOpponent; + private int bankPage; + private Menu loginMenuFirst; + private int healthBarX[]; + private int healthBarY[]; + private int healthBarMissing[]; + private int objectX[]; + private int objectY[]; + private int objectType[]; + private int objectRotation[]; + private int reportAbuseOptionSelected; + private boolean showDuelBox; + private Mob npcAttackingArray[]; + private int serverBankItemsCount; + private int teleBubbleY[]; + private int cameraAutoAngle; + private int cameraAutoRotationAmount; + private boolean loadArea; + private int teleBubbleX[]; + private int bankItemsCount; + private boolean showAppearanceWindow; + private int questPoints; + private int actionPictureType; + int walkMouseX; + int walkMouseY; + private int combatModelArray1[] = { + 0, 1, 2, 1, 0, 0, 0, 0 + }; + private boolean cameraZoom; + + private boolean fogOfWar; + private boolean showCombatWindow; + private boolean showRoofs; + private boolean autoScreenshot; + private boolean useChatFilter; + private String usedQuestName[]; + private int subDaysLeft; + private int shopItemSellPrice[]; + private int shopItemBuyPrice[]; + private int captchaPixels[][]; + private int captchaWidth; + private int captchaHeight; + private boolean needsClear; + private boolean hasWorldInfo; + private int friendsLastShownEntries[]; + private int spellsLastShownEntries[]; + private int prayersLastShownEntries[]; + private int questsLastShownEntries[]; +} diff --git a/clients/pom.xml b/clients/pom.xml new file mode 100644 index 0000000..651d67f --- /dev/null +++ b/clients/pom.xml @@ -0,0 +1,44 @@ + + + + + + org.moparscape.client + main + 0.1-SNAPSHOT + + 4.0.0 + clients + pom + + client317 + client508 + renamed508 + clientRSC + + + + ${project.groupId} + MoparScape + ${project.version} + + + \ No newline at end of file diff --git a/clients/renamed508/pom.xml b/clients/renamed508/pom.xml new file mode 100644 index 0000000..7f7017d --- /dev/null +++ b/clients/renamed508/pom.xml @@ -0,0 +1,30 @@ + + + + + + org.moparscape.client + clients + 0.1-SNAPSHOT + + 4.0.0 + renamed508 + \ No newline at end of file diff --git a/renamed508/src/Shortcut to src.lnk b/clients/renamed508/src/Shortcut to src.lnk similarity index 100% rename from renamed508/src/Shortcut to src.lnk rename to clients/renamed508/src/Shortcut to src.lnk diff --git a/renamed508/src/Animable.java b/clients/renamed508/src/main/java/Animable.java similarity index 100% rename from renamed508/src/Animable.java rename to clients/renamed508/src/main/java/Animable.java diff --git a/renamed508/src/Animation.java b/clients/renamed508/src/main/java/Animation.java similarity index 100% rename from renamed508/src/Animation.java rename to clients/renamed508/src/main/java/Animation.java diff --git a/renamed508/src/CachedItem.java b/clients/renamed508/src/main/java/CachedItem.java similarity index 100% rename from renamed508/src/CachedItem.java rename to clients/renamed508/src/main/java/CachedItem.java diff --git a/renamed508/src/Character.java b/clients/renamed508/src/main/java/Character.java similarity index 100% rename from renamed508/src/Character.java rename to clients/renamed508/src/main/java/Character.java diff --git a/renamed508/src/CipheredByteVector.java b/clients/renamed508/src/main/java/CipheredByteVector.java similarity index 100% rename from renamed508/src/CipheredByteVector.java rename to clients/renamed508/src/main/java/CipheredByteVector.java diff --git a/renamed508/src/Class10.java b/clients/renamed508/src/main/java/Class10.java similarity index 100% rename from renamed508/src/Class10.java rename to clients/renamed508/src/main/java/Class10.java diff --git a/renamed508/src/Class101.java b/clients/renamed508/src/main/java/Class101.java similarity index 100% rename from renamed508/src/Class101.java rename to clients/renamed508/src/main/java/Class101.java diff --git a/renamed508/src/Class102.java b/clients/renamed508/src/main/java/Class102.java similarity index 100% rename from renamed508/src/Class102.java rename to clients/renamed508/src/main/java/Class102.java diff --git a/renamed508/src/Class103.java b/clients/renamed508/src/main/java/Class103.java similarity index 100% rename from renamed508/src/Class103.java rename to clients/renamed508/src/main/java/Class103.java diff --git a/renamed508/src/Class104.java b/clients/renamed508/src/main/java/Class104.java similarity index 100% rename from renamed508/src/Class104.java rename to clients/renamed508/src/main/java/Class104.java diff --git a/renamed508/src/Class105.java b/clients/renamed508/src/main/java/Class105.java similarity index 100% rename from renamed508/src/Class105.java rename to clients/renamed508/src/main/java/Class105.java diff --git a/renamed508/src/Class105_Sub1.java b/clients/renamed508/src/main/java/Class105_Sub1.java similarity index 100% rename from renamed508/src/Class105_Sub1.java rename to clients/renamed508/src/main/java/Class105_Sub1.java diff --git a/renamed508/src/Class106.java b/clients/renamed508/src/main/java/Class106.java similarity index 100% rename from renamed508/src/Class106.java rename to clients/renamed508/src/main/java/Class106.java diff --git a/renamed508/src/Class107.java b/clients/renamed508/src/main/java/Class107.java similarity index 100% rename from renamed508/src/Class107.java rename to clients/renamed508/src/main/java/Class107.java diff --git a/renamed508/src/Class108.java b/clients/renamed508/src/main/java/Class108.java similarity index 100% rename from renamed508/src/Class108.java rename to clients/renamed508/src/main/java/Class108.java diff --git a/renamed508/src/Class109.java b/clients/renamed508/src/main/java/Class109.java similarity index 100% rename from renamed508/src/Class109.java rename to clients/renamed508/src/main/java/Class109.java diff --git a/renamed508/src/Class11.java b/clients/renamed508/src/main/java/Class11.java similarity index 100% rename from renamed508/src/Class11.java rename to clients/renamed508/src/main/java/Class11.java diff --git a/renamed508/src/Class110.java b/clients/renamed508/src/main/java/Class110.java similarity index 100% rename from renamed508/src/Class110.java rename to clients/renamed508/src/main/java/Class110.java diff --git a/renamed508/src/Class111.java b/clients/renamed508/src/main/java/Class111.java similarity index 100% rename from renamed508/src/Class111.java rename to clients/renamed508/src/main/java/Class111.java diff --git a/renamed508/src/Class112.java b/clients/renamed508/src/main/java/Class112.java similarity index 100% rename from renamed508/src/Class112.java rename to clients/renamed508/src/main/java/Class112.java diff --git a/renamed508/src/Class114.java b/clients/renamed508/src/main/java/Class114.java similarity index 100% rename from renamed508/src/Class114.java rename to clients/renamed508/src/main/java/Class114.java diff --git a/renamed508/src/Class115.java b/clients/renamed508/src/main/java/Class115.java similarity index 100% rename from renamed508/src/Class115.java rename to clients/renamed508/src/main/java/Class115.java diff --git a/renamed508/src/Class118.java b/clients/renamed508/src/main/java/Class118.java similarity index 100% rename from renamed508/src/Class118.java rename to clients/renamed508/src/main/java/Class118.java diff --git a/renamed508/src/Class119.java b/clients/renamed508/src/main/java/Class119.java similarity index 100% rename from renamed508/src/Class119.java rename to clients/renamed508/src/main/java/Class119.java diff --git a/renamed508/src/Class12.java b/clients/renamed508/src/main/java/Class12.java similarity index 100% rename from renamed508/src/Class12.java rename to clients/renamed508/src/main/java/Class12.java diff --git a/renamed508/src/Class120.java b/clients/renamed508/src/main/java/Class120.java similarity index 100% rename from renamed508/src/Class120.java rename to clients/renamed508/src/main/java/Class120.java diff --git a/renamed508/src/Class121.java b/clients/renamed508/src/main/java/Class121.java similarity index 100% rename from renamed508/src/Class121.java rename to clients/renamed508/src/main/java/Class121.java diff --git a/renamed508/src/Class122.java b/clients/renamed508/src/main/java/Class122.java similarity index 100% rename from renamed508/src/Class122.java rename to clients/renamed508/src/main/java/Class122.java diff --git a/renamed508/src/Class124.java b/clients/renamed508/src/main/java/Class124.java similarity index 100% rename from renamed508/src/Class124.java rename to clients/renamed508/src/main/java/Class124.java diff --git a/renamed508/src/Class125.java b/clients/renamed508/src/main/java/Class125.java similarity index 100% rename from renamed508/src/Class125.java rename to clients/renamed508/src/main/java/Class125.java diff --git a/renamed508/src/Class127.java b/clients/renamed508/src/main/java/Class127.java similarity index 100% rename from renamed508/src/Class127.java rename to clients/renamed508/src/main/java/Class127.java diff --git a/renamed508/src/Class13.java b/clients/renamed508/src/main/java/Class13.java similarity index 100% rename from renamed508/src/Class13.java rename to clients/renamed508/src/main/java/Class13.java diff --git a/renamed508/src/Class13_Sub1.java b/clients/renamed508/src/main/java/Class13_Sub1.java similarity index 100% rename from renamed508/src/Class13_Sub1.java rename to clients/renamed508/src/main/java/Class13_Sub1.java diff --git a/renamed508/src/Class13_Sub2.java b/clients/renamed508/src/main/java/Class13_Sub2.java similarity index 100% rename from renamed508/src/Class13_Sub2.java rename to clients/renamed508/src/main/java/Class13_Sub2.java diff --git a/renamed508/src/Class13_Sub3.java b/clients/renamed508/src/main/java/Class13_Sub3.java similarity index 100% rename from renamed508/src/Class13_Sub3.java rename to clients/renamed508/src/main/java/Class13_Sub3.java diff --git a/renamed508/src/Class13_Sub4.java b/clients/renamed508/src/main/java/Class13_Sub4.java similarity index 100% rename from renamed508/src/Class13_Sub4.java rename to clients/renamed508/src/main/java/Class13_Sub4.java diff --git a/renamed508/src/Class14.java b/clients/renamed508/src/main/java/Class14.java similarity index 100% rename from renamed508/src/Class14.java rename to clients/renamed508/src/main/java/Class14.java diff --git a/renamed508/src/Class15.java b/clients/renamed508/src/main/java/Class15.java similarity index 100% rename from renamed508/src/Class15.java rename to clients/renamed508/src/main/java/Class15.java diff --git a/renamed508/src/Class15_Sub1.java b/clients/renamed508/src/main/java/Class15_Sub1.java similarity index 100% rename from renamed508/src/Class15_Sub1.java rename to clients/renamed508/src/main/java/Class15_Sub1.java diff --git a/renamed508/src/Class17.java b/clients/renamed508/src/main/java/Class17.java similarity index 100% rename from renamed508/src/Class17.java rename to clients/renamed508/src/main/java/Class17.java diff --git a/renamed508/src/Class18.java b/clients/renamed508/src/main/java/Class18.java similarity index 100% rename from renamed508/src/Class18.java rename to clients/renamed508/src/main/java/Class18.java diff --git a/renamed508/src/Class1_Sub1.java b/clients/renamed508/src/main/java/Class1_Sub1.java similarity index 100% rename from renamed508/src/Class1_Sub1.java rename to clients/renamed508/src/main/java/Class1_Sub1.java diff --git a/renamed508/src/Class1_Sub4.java b/clients/renamed508/src/main/java/Class1_Sub4.java similarity index 100% rename from renamed508/src/Class1_Sub4.java rename to clients/renamed508/src/main/java/Class1_Sub4.java diff --git a/renamed508/src/Class1_Sub5.java b/clients/renamed508/src/main/java/Class1_Sub5.java similarity index 100% rename from renamed508/src/Class1_Sub5.java rename to clients/renamed508/src/main/java/Class1_Sub5.java diff --git a/renamed508/src/Class1_Sub7.java b/clients/renamed508/src/main/java/Class1_Sub7.java similarity index 100% rename from renamed508/src/Class1_Sub7.java rename to clients/renamed508/src/main/java/Class1_Sub7.java diff --git a/renamed508/src/Class20.java b/clients/renamed508/src/main/java/Class20.java similarity index 100% rename from renamed508/src/Class20.java rename to clients/renamed508/src/main/java/Class20.java diff --git a/renamed508/src/Class21.java b/clients/renamed508/src/main/java/Class21.java similarity index 100% rename from renamed508/src/Class21.java rename to clients/renamed508/src/main/java/Class21.java diff --git a/renamed508/src/Class21_Sub1.java b/clients/renamed508/src/main/java/Class21_Sub1.java similarity index 100% rename from renamed508/src/Class21_Sub1.java rename to clients/renamed508/src/main/java/Class21_Sub1.java diff --git a/renamed508/src/Class22.java b/clients/renamed508/src/main/java/Class22.java similarity index 100% rename from renamed508/src/Class22.java rename to clients/renamed508/src/main/java/Class22.java diff --git a/renamed508/src/Class23.java b/clients/renamed508/src/main/java/Class23.java similarity index 100% rename from renamed508/src/Class23.java rename to clients/renamed508/src/main/java/Class23.java diff --git a/renamed508/src/Class24.java b/clients/renamed508/src/main/java/Class24.java similarity index 100% rename from renamed508/src/Class24.java rename to clients/renamed508/src/main/java/Class24.java diff --git a/renamed508/src/Class25.java b/clients/renamed508/src/main/java/Class25.java similarity index 100% rename from renamed508/src/Class25.java rename to clients/renamed508/src/main/java/Class25.java diff --git a/renamed508/src/Class26.java b/clients/renamed508/src/main/java/Class26.java similarity index 100% rename from renamed508/src/Class26.java rename to clients/renamed508/src/main/java/Class26.java diff --git a/renamed508/src/Class27.java b/clients/renamed508/src/main/java/Class27.java similarity index 100% rename from renamed508/src/Class27.java rename to clients/renamed508/src/main/java/Class27.java diff --git a/renamed508/src/Class28.java b/clients/renamed508/src/main/java/Class28.java similarity index 100% rename from renamed508/src/Class28.java rename to clients/renamed508/src/main/java/Class28.java diff --git a/renamed508/src/Class29.java b/clients/renamed508/src/main/java/Class29.java similarity index 100% rename from renamed508/src/Class29.java rename to clients/renamed508/src/main/java/Class29.java diff --git a/renamed508/src/Class3.java b/clients/renamed508/src/main/java/Class3.java similarity index 100% rename from renamed508/src/Class3.java rename to clients/renamed508/src/main/java/Class3.java diff --git a/renamed508/src/Class30.java b/clients/renamed508/src/main/java/Class30.java similarity index 100% rename from renamed508/src/Class30.java rename to clients/renamed508/src/main/java/Class30.java diff --git a/renamed508/src/Class31.java b/clients/renamed508/src/main/java/Class31.java similarity index 100% rename from renamed508/src/Class31.java rename to clients/renamed508/src/main/java/Class31.java diff --git a/renamed508/src/Class32.java b/clients/renamed508/src/main/java/Class32.java similarity index 100% rename from renamed508/src/Class32.java rename to clients/renamed508/src/main/java/Class32.java diff --git a/renamed508/src/Class33.java b/clients/renamed508/src/main/java/Class33.java similarity index 100% rename from renamed508/src/Class33.java rename to clients/renamed508/src/main/java/Class33.java diff --git a/renamed508/src/Class34.java b/clients/renamed508/src/main/java/Class34.java similarity index 100% rename from renamed508/src/Class34.java rename to clients/renamed508/src/main/java/Class34.java diff --git a/renamed508/src/Class35.java b/clients/renamed508/src/main/java/Class35.java similarity index 100% rename from renamed508/src/Class35.java rename to clients/renamed508/src/main/java/Class35.java diff --git a/renamed508/src/Class35_Sub1.java b/clients/renamed508/src/main/java/Class35_Sub1.java similarity index 100% rename from renamed508/src/Class35_Sub1.java rename to clients/renamed508/src/main/java/Class35_Sub1.java diff --git a/renamed508/src/Class35_Sub2.java b/clients/renamed508/src/main/java/Class35_Sub2.java similarity index 100% rename from renamed508/src/Class35_Sub2.java rename to clients/renamed508/src/main/java/Class35_Sub2.java diff --git a/renamed508/src/Class36.java b/clients/renamed508/src/main/java/Class36.java similarity index 100% rename from renamed508/src/Class36.java rename to clients/renamed508/src/main/java/Class36.java diff --git a/renamed508/src/Class37.java b/clients/renamed508/src/main/java/Class37.java similarity index 100% rename from renamed508/src/Class37.java rename to clients/renamed508/src/main/java/Class37.java diff --git a/renamed508/src/Class39.java b/clients/renamed508/src/main/java/Class39.java similarity index 100% rename from renamed508/src/Class39.java rename to clients/renamed508/src/main/java/Class39.java diff --git a/renamed508/src/Class4.java b/clients/renamed508/src/main/java/Class4.java similarity index 100% rename from renamed508/src/Class4.java rename to clients/renamed508/src/main/java/Class4.java diff --git a/renamed508/src/Class40.java b/clients/renamed508/src/main/java/Class40.java similarity index 100% rename from renamed508/src/Class40.java rename to clients/renamed508/src/main/java/Class40.java diff --git a/renamed508/src/Class41.java b/clients/renamed508/src/main/java/Class41.java similarity index 100% rename from renamed508/src/Class41.java rename to clients/renamed508/src/main/java/Class41.java diff --git a/renamed508/src/Class42.java b/clients/renamed508/src/main/java/Class42.java similarity index 100% rename from renamed508/src/Class42.java rename to clients/renamed508/src/main/java/Class42.java diff --git a/renamed508/src/Class43.java b/clients/renamed508/src/main/java/Class43.java similarity index 100% rename from renamed508/src/Class43.java rename to clients/renamed508/src/main/java/Class43.java diff --git a/renamed508/src/Class44.java b/clients/renamed508/src/main/java/Class44.java similarity index 100% rename from renamed508/src/Class44.java rename to clients/renamed508/src/main/java/Class44.java diff --git a/renamed508/src/Class46.java b/clients/renamed508/src/main/java/Class46.java similarity index 100% rename from renamed508/src/Class46.java rename to clients/renamed508/src/main/java/Class46.java diff --git a/renamed508/src/Class48.java b/clients/renamed508/src/main/java/Class48.java similarity index 100% rename from renamed508/src/Class48.java rename to clients/renamed508/src/main/java/Class48.java diff --git a/renamed508/src/Class49.java b/clients/renamed508/src/main/java/Class49.java similarity index 100% rename from renamed508/src/Class49.java rename to clients/renamed508/src/main/java/Class49.java diff --git a/renamed508/src/Class5.java b/clients/renamed508/src/main/java/Class5.java similarity index 100% rename from renamed508/src/Class5.java rename to clients/renamed508/src/main/java/Class5.java diff --git a/renamed508/src/Class50.java b/clients/renamed508/src/main/java/Class50.java similarity index 100% rename from renamed508/src/Class50.java rename to clients/renamed508/src/main/java/Class50.java diff --git a/renamed508/src/Class50_Sub1.java b/clients/renamed508/src/main/java/Class50_Sub1.java similarity index 100% rename from renamed508/src/Class50_Sub1.java rename to clients/renamed508/src/main/java/Class50_Sub1.java diff --git a/renamed508/src/Class50_Sub2.java b/clients/renamed508/src/main/java/Class50_Sub2.java similarity index 100% rename from renamed508/src/Class50_Sub2.java rename to clients/renamed508/src/main/java/Class50_Sub2.java diff --git a/renamed508/src/Class51.java b/clients/renamed508/src/main/java/Class51.java similarity index 100% rename from renamed508/src/Class51.java rename to clients/renamed508/src/main/java/Class51.java diff --git a/renamed508/src/Class52.java b/clients/renamed508/src/main/java/Class52.java similarity index 100% rename from renamed508/src/Class52.java rename to clients/renamed508/src/main/java/Class52.java diff --git a/renamed508/src/Class53.java b/clients/renamed508/src/main/java/Class53.java similarity index 100% rename from renamed508/src/Class53.java rename to clients/renamed508/src/main/java/Class53.java diff --git a/renamed508/src/Class54.java b/clients/renamed508/src/main/java/Class54.java similarity index 100% rename from renamed508/src/Class54.java rename to clients/renamed508/src/main/java/Class54.java diff --git a/renamed508/src/Class56.java b/clients/renamed508/src/main/java/Class56.java similarity index 100% rename from renamed508/src/Class56.java rename to clients/renamed508/src/main/java/Class56.java diff --git a/renamed508/src/Class58.java b/clients/renamed508/src/main/java/Class58.java similarity index 100% rename from renamed508/src/Class58.java rename to clients/renamed508/src/main/java/Class58.java diff --git a/renamed508/src/Class59.java b/clients/renamed508/src/main/java/Class59.java similarity index 100% rename from renamed508/src/Class59.java rename to clients/renamed508/src/main/java/Class59.java diff --git a/renamed508/src/Class6.java b/clients/renamed508/src/main/java/Class6.java similarity index 100% rename from renamed508/src/Class6.java rename to clients/renamed508/src/main/java/Class6.java diff --git a/renamed508/src/Class60.java b/clients/renamed508/src/main/java/Class60.java similarity index 100% rename from renamed508/src/Class60.java rename to clients/renamed508/src/main/java/Class60.java diff --git a/renamed508/src/Class62.java b/clients/renamed508/src/main/java/Class62.java similarity index 100% rename from renamed508/src/Class62.java rename to clients/renamed508/src/main/java/Class62.java diff --git a/renamed508/src/Class63.java b/clients/renamed508/src/main/java/Class63.java similarity index 100% rename from renamed508/src/Class63.java rename to clients/renamed508/src/main/java/Class63.java diff --git a/renamed508/src/Class65.java b/clients/renamed508/src/main/java/Class65.java similarity index 100% rename from renamed508/src/Class65.java rename to clients/renamed508/src/main/java/Class65.java diff --git a/renamed508/src/Class66.java b/clients/renamed508/src/main/java/Class66.java similarity index 100% rename from renamed508/src/Class66.java rename to clients/renamed508/src/main/java/Class66.java diff --git a/renamed508/src/Class67.java b/clients/renamed508/src/main/java/Class67.java similarity index 100% rename from renamed508/src/Class67.java rename to clients/renamed508/src/main/java/Class67.java diff --git a/renamed508/src/Class68_Sub10.java b/clients/renamed508/src/main/java/Class68_Sub10.java similarity index 100% rename from renamed508/src/Class68_Sub10.java rename to clients/renamed508/src/main/java/Class68_Sub10.java diff --git a/renamed508/src/Class68_Sub11.java b/clients/renamed508/src/main/java/Class68_Sub11.java similarity index 100% rename from renamed508/src/Class68_Sub11.java rename to clients/renamed508/src/main/java/Class68_Sub11.java diff --git a/renamed508/src/Class68_Sub11_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub11_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub11_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub11_Sub1.java diff --git a/renamed508/src/Class68_Sub12.java b/clients/renamed508/src/main/java/Class68_Sub12.java similarity index 100% rename from renamed508/src/Class68_Sub12.java rename to clients/renamed508/src/main/java/Class68_Sub12.java diff --git a/renamed508/src/Class68_Sub13.java b/clients/renamed508/src/main/java/Class68_Sub13.java similarity index 100% rename from renamed508/src/Class68_Sub13.java rename to clients/renamed508/src/main/java/Class68_Sub13.java diff --git a/renamed508/src/Class68_Sub13_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub1.java diff --git a/renamed508/src/Class68_Sub13_Sub10.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub10.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub10.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub10.java diff --git a/renamed508/src/Class68_Sub13_Sub11.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub11.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub11.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub11.java diff --git a/renamed508/src/Class68_Sub13_Sub12.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub12.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub12.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub12.java diff --git a/renamed508/src/Class68_Sub13_Sub13.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub13.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub13.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub13.java diff --git a/renamed508/src/Class68_Sub13_Sub14.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub14.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub14.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub14.java diff --git a/renamed508/src/Class68_Sub13_Sub15.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub15.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub15.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub15.java diff --git a/renamed508/src/Class68_Sub13_Sub16.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub16.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub16.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub16.java diff --git a/renamed508/src/Class68_Sub13_Sub17.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub17.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub17.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub17.java diff --git a/renamed508/src/Class68_Sub13_Sub18.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub18.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub18.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub18.java diff --git a/renamed508/src/Class68_Sub13_Sub19.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub19.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub19.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub19.java diff --git a/renamed508/src/Class68_Sub13_Sub2.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub2.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub2.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub2.java diff --git a/renamed508/src/Class68_Sub13_Sub20.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub20.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub20.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub20.java diff --git a/renamed508/src/Class68_Sub13_Sub21.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub21.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub21.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub21.java diff --git a/renamed508/src/Class68_Sub13_Sub22.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub22.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub22.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub22.java diff --git a/renamed508/src/Class68_Sub13_Sub23.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub23.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub23.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub23.java diff --git a/renamed508/src/Class68_Sub13_Sub24.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub24.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub24.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub24.java diff --git a/renamed508/src/Class68_Sub13_Sub25.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub25.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub25.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub25.java diff --git a/renamed508/src/Class68_Sub13_Sub26.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub26.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub26.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub26.java diff --git a/renamed508/src/Class68_Sub13_Sub26_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub26_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub26_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub26_Sub1.java diff --git a/renamed508/src/Class68_Sub13_Sub27.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub27.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub27.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub27.java diff --git a/renamed508/src/Class68_Sub13_Sub28.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub28.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub28.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub28.java diff --git a/renamed508/src/Class68_Sub13_Sub29.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub29.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub29.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub29.java diff --git a/renamed508/src/Class68_Sub13_Sub3.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub3.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub3.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub3.java diff --git a/renamed508/src/Class68_Sub13_Sub30.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub30.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub30.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub30.java diff --git a/renamed508/src/Class68_Sub13_Sub31.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub31.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub31.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub31.java diff --git a/renamed508/src/Class68_Sub13_Sub32.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub32.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub32.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub32.java diff --git a/renamed508/src/Class68_Sub13_Sub33.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub33.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub33.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub33.java diff --git a/renamed508/src/Class68_Sub13_Sub34.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub34.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub34.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub34.java diff --git a/renamed508/src/Class68_Sub13_Sub35.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub35.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub35.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub35.java diff --git a/renamed508/src/Class68_Sub13_Sub36.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub36.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub36.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub36.java diff --git a/renamed508/src/Class68_Sub13_Sub37.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub37.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub37.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub37.java diff --git a/renamed508/src/Class68_Sub13_Sub38.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub38.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub38.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub38.java diff --git a/renamed508/src/Class68_Sub13_Sub39.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub39.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub39.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub39.java diff --git a/renamed508/src/Class68_Sub13_Sub4.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub4.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub4.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub4.java diff --git a/renamed508/src/Class68_Sub13_Sub5.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub5.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub5.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub5.java diff --git a/renamed508/src/Class68_Sub13_Sub6.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub6.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub6.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub6.java diff --git a/renamed508/src/Class68_Sub13_Sub7.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub7.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub7.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub7.java diff --git a/renamed508/src/Class68_Sub13_Sub8.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub8.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub8.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub8.java diff --git a/renamed508/src/Class68_Sub13_Sub9.java b/clients/renamed508/src/main/java/Class68_Sub13_Sub9.java similarity index 100% rename from renamed508/src/Class68_Sub13_Sub9.java rename to clients/renamed508/src/main/java/Class68_Sub13_Sub9.java diff --git a/renamed508/src/Class68_Sub15.java b/clients/renamed508/src/main/java/Class68_Sub15.java similarity index 100% rename from renamed508/src/Class68_Sub15.java rename to clients/renamed508/src/main/java/Class68_Sub15.java diff --git a/renamed508/src/Class68_Sub16.java b/clients/renamed508/src/main/java/Class68_Sub16.java similarity index 100% rename from renamed508/src/Class68_Sub16.java rename to clients/renamed508/src/main/java/Class68_Sub16.java diff --git a/renamed508/src/Class68_Sub17.java b/clients/renamed508/src/main/java/Class68_Sub17.java similarity index 100% rename from renamed508/src/Class68_Sub17.java rename to clients/renamed508/src/main/java/Class68_Sub17.java diff --git a/renamed508/src/Class68_Sub18.java b/clients/renamed508/src/main/java/Class68_Sub18.java similarity index 100% rename from renamed508/src/Class68_Sub18.java rename to clients/renamed508/src/main/java/Class68_Sub18.java diff --git a/renamed508/src/Class68_Sub19.java b/clients/renamed508/src/main/java/Class68_Sub19.java similarity index 100% rename from renamed508/src/Class68_Sub19.java rename to clients/renamed508/src/main/java/Class68_Sub19.java diff --git a/renamed508/src/Class68_Sub2.java b/clients/renamed508/src/main/java/Class68_Sub2.java similarity index 100% rename from renamed508/src/Class68_Sub2.java rename to clients/renamed508/src/main/java/Class68_Sub2.java diff --git a/renamed508/src/Class68_Sub20_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub1.java diff --git a/renamed508/src/Class68_Sub20_Sub10.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub10.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub10.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub10.java diff --git a/renamed508/src/Class68_Sub20_Sub10_Sub1_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub10_Sub1_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub10_Sub1_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub10_Sub1_Sub1.java diff --git a/renamed508/src/Class68_Sub20_Sub11.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub11.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub11.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub11.java diff --git a/renamed508/src/Class68_Sub20_Sub12.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub12.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub12.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub12.java diff --git a/renamed508/src/Class68_Sub20_Sub13.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub13.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub13.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub13.java diff --git a/renamed508/src/Class68_Sub20_Sub13_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub13_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub13_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub13_Sub1.java diff --git a/renamed508/src/Class68_Sub20_Sub13_Sub2.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub13_Sub2.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub13_Sub2.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub13_Sub2.java diff --git a/renamed508/src/Class68_Sub20_Sub15.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub15.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub15.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub15.java diff --git a/renamed508/src/Class68_Sub20_Sub16.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub16.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub16.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub16.java diff --git a/renamed508/src/Class68_Sub20_Sub17.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub17.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub17.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub17.java diff --git a/renamed508/src/Class68_Sub20_Sub19.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub19.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub19.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub19.java diff --git a/renamed508/src/Class68_Sub20_Sub1_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub1_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub1_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub1_Sub1.java diff --git a/renamed508/src/Class68_Sub20_Sub2.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub2.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub2.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub2.java diff --git a/renamed508/src/Class68_Sub20_Sub3.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub3.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub3.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub3.java diff --git a/renamed508/src/Class68_Sub20_Sub4.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub4.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub4.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub4.java diff --git a/renamed508/src/Class68_Sub20_Sub5.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub5.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub5.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub5.java diff --git a/renamed508/src/Class68_Sub20_Sub6.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub6.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub6.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub6.java diff --git a/renamed508/src/Class68_Sub20_Sub7.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub7.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub7.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub7.java diff --git a/renamed508/src/Class68_Sub20_Sub8.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub8.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub8.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub8.java diff --git a/renamed508/src/Class68_Sub20_Sub9.java b/clients/renamed508/src/main/java/Class68_Sub20_Sub9.java similarity index 100% rename from renamed508/src/Class68_Sub20_Sub9.java rename to clients/renamed508/src/main/java/Class68_Sub20_Sub9.java diff --git a/renamed508/src/Class68_Sub21.java b/clients/renamed508/src/main/java/Class68_Sub21.java similarity index 100% rename from renamed508/src/Class68_Sub21.java rename to clients/renamed508/src/main/java/Class68_Sub21.java diff --git a/renamed508/src/Class68_Sub22.java b/clients/renamed508/src/main/java/Class68_Sub22.java similarity index 100% rename from renamed508/src/Class68_Sub22.java rename to clients/renamed508/src/main/java/Class68_Sub22.java diff --git a/renamed508/src/Class68_Sub23.java b/clients/renamed508/src/main/java/Class68_Sub23.java similarity index 100% rename from renamed508/src/Class68_Sub23.java rename to clients/renamed508/src/main/java/Class68_Sub23.java diff --git a/renamed508/src/Class68_Sub24.java b/clients/renamed508/src/main/java/Class68_Sub24.java similarity index 100% rename from renamed508/src/Class68_Sub24.java rename to clients/renamed508/src/main/java/Class68_Sub24.java diff --git a/renamed508/src/Class68_Sub25.java b/clients/renamed508/src/main/java/Class68_Sub25.java similarity index 100% rename from renamed508/src/Class68_Sub25.java rename to clients/renamed508/src/main/java/Class68_Sub25.java diff --git a/renamed508/src/Class68_Sub26.java b/clients/renamed508/src/main/java/Class68_Sub26.java similarity index 100% rename from renamed508/src/Class68_Sub26.java rename to clients/renamed508/src/main/java/Class68_Sub26.java diff --git a/renamed508/src/Class68_Sub27.java b/clients/renamed508/src/main/java/Class68_Sub27.java similarity index 100% rename from renamed508/src/Class68_Sub27.java rename to clients/renamed508/src/main/java/Class68_Sub27.java diff --git a/renamed508/src/Class68_Sub28.java b/clients/renamed508/src/main/java/Class68_Sub28.java similarity index 100% rename from renamed508/src/Class68_Sub28.java rename to clients/renamed508/src/main/java/Class68_Sub28.java diff --git a/renamed508/src/Class68_Sub28_Sub1.java b/clients/renamed508/src/main/java/Class68_Sub28_Sub1.java similarity index 100% rename from renamed508/src/Class68_Sub28_Sub1.java rename to clients/renamed508/src/main/java/Class68_Sub28_Sub1.java diff --git a/renamed508/src/Class68_Sub28_Sub2.java b/clients/renamed508/src/main/java/Class68_Sub28_Sub2.java similarity index 100% rename from renamed508/src/Class68_Sub28_Sub2.java rename to clients/renamed508/src/main/java/Class68_Sub28_Sub2.java diff --git a/renamed508/src/Class68_Sub28_Sub3.java b/clients/renamed508/src/main/java/Class68_Sub28_Sub3.java similarity index 100% rename from renamed508/src/Class68_Sub28_Sub3.java rename to clients/renamed508/src/main/java/Class68_Sub28_Sub3.java diff --git a/renamed508/src/Class68_Sub28_Sub4.java b/clients/renamed508/src/main/java/Class68_Sub28_Sub4.java similarity index 100% rename from renamed508/src/Class68_Sub28_Sub4.java rename to clients/renamed508/src/main/java/Class68_Sub28_Sub4.java diff --git a/renamed508/src/Class68_Sub3.java b/clients/renamed508/src/main/java/Class68_Sub3.java similarity index 100% rename from renamed508/src/Class68_Sub3.java rename to clients/renamed508/src/main/java/Class68_Sub3.java diff --git a/renamed508/src/Class68_Sub4.java b/clients/renamed508/src/main/java/Class68_Sub4.java similarity index 100% rename from renamed508/src/Class68_Sub4.java rename to clients/renamed508/src/main/java/Class68_Sub4.java diff --git a/renamed508/src/Class68_Sub5.java b/clients/renamed508/src/main/java/Class68_Sub5.java similarity index 100% rename from renamed508/src/Class68_Sub5.java rename to clients/renamed508/src/main/java/Class68_Sub5.java diff --git a/renamed508/src/Class68_Sub6.java b/clients/renamed508/src/main/java/Class68_Sub6.java similarity index 100% rename from renamed508/src/Class68_Sub6.java rename to clients/renamed508/src/main/java/Class68_Sub6.java diff --git a/renamed508/src/Class68_Sub7.java b/clients/renamed508/src/main/java/Class68_Sub7.java similarity index 100% rename from renamed508/src/Class68_Sub7.java rename to clients/renamed508/src/main/java/Class68_Sub7.java diff --git a/renamed508/src/Class68_Sub8.java b/clients/renamed508/src/main/java/Class68_Sub8.java similarity index 100% rename from renamed508/src/Class68_Sub8.java rename to clients/renamed508/src/main/java/Class68_Sub8.java diff --git a/renamed508/src/Class68_Sub9.java b/clients/renamed508/src/main/java/Class68_Sub9.java similarity index 100% rename from renamed508/src/Class68_Sub9.java rename to clients/renamed508/src/main/java/Class68_Sub9.java diff --git a/renamed508/src/Class7.java b/clients/renamed508/src/main/java/Class7.java similarity index 100% rename from renamed508/src/Class7.java rename to clients/renamed508/src/main/java/Class7.java diff --git a/renamed508/src/Class70.java b/clients/renamed508/src/main/java/Class70.java similarity index 100% rename from renamed508/src/Class70.java rename to clients/renamed508/src/main/java/Class70.java diff --git a/renamed508/src/Class71.java b/clients/renamed508/src/main/java/Class71.java similarity index 100% rename from renamed508/src/Class71.java rename to clients/renamed508/src/main/java/Class71.java diff --git a/renamed508/src/Class71_Sub1.java b/clients/renamed508/src/main/java/Class71_Sub1.java similarity index 100% rename from renamed508/src/Class71_Sub1.java rename to clients/renamed508/src/main/java/Class71_Sub1.java diff --git a/renamed508/src/Class72.java b/clients/renamed508/src/main/java/Class72.java similarity index 100% rename from renamed508/src/Class72.java rename to clients/renamed508/src/main/java/Class72.java diff --git a/renamed508/src/Class72_Sub1.java b/clients/renamed508/src/main/java/Class72_Sub1.java similarity index 100% rename from renamed508/src/Class72_Sub1.java rename to clients/renamed508/src/main/java/Class72_Sub1.java diff --git a/renamed508/src/Class72_Sub2.java b/clients/renamed508/src/main/java/Class72_Sub2.java similarity index 100% rename from renamed508/src/Class72_Sub2.java rename to clients/renamed508/src/main/java/Class72_Sub2.java diff --git a/renamed508/src/Class73.java b/clients/renamed508/src/main/java/Class73.java similarity index 100% rename from renamed508/src/Class73.java rename to clients/renamed508/src/main/java/Class73.java diff --git a/renamed508/src/Class74.java b/clients/renamed508/src/main/java/Class74.java similarity index 100% rename from renamed508/src/Class74.java rename to clients/renamed508/src/main/java/Class74.java diff --git a/renamed508/src/Class75.java b/clients/renamed508/src/main/java/Class75.java similarity index 100% rename from renamed508/src/Class75.java rename to clients/renamed508/src/main/java/Class75.java diff --git a/renamed508/src/Class75_Sub1.java b/clients/renamed508/src/main/java/Class75_Sub1.java similarity index 100% rename from renamed508/src/Class75_Sub1.java rename to clients/renamed508/src/main/java/Class75_Sub1.java diff --git a/renamed508/src/Class75_Sub1_Sub1.java b/clients/renamed508/src/main/java/Class75_Sub1_Sub1.java similarity index 100% rename from renamed508/src/Class75_Sub1_Sub1.java rename to clients/renamed508/src/main/java/Class75_Sub1_Sub1.java diff --git a/renamed508/src/Class75_Sub2.java b/clients/renamed508/src/main/java/Class75_Sub2.java similarity index 100% rename from renamed508/src/Class75_Sub2.java rename to clients/renamed508/src/main/java/Class75_Sub2.java diff --git a/renamed508/src/Class75_Sub3.java b/clients/renamed508/src/main/java/Class75_Sub3.java similarity index 100% rename from renamed508/src/Class75_Sub3.java rename to clients/renamed508/src/main/java/Class75_Sub3.java diff --git a/renamed508/src/Class75_Sub3_Sub1.java b/clients/renamed508/src/main/java/Class75_Sub3_Sub1.java similarity index 100% rename from renamed508/src/Class75_Sub3_Sub1.java rename to clients/renamed508/src/main/java/Class75_Sub3_Sub1.java diff --git a/renamed508/src/Class77.java b/clients/renamed508/src/main/java/Class77.java similarity index 100% rename from renamed508/src/Class77.java rename to clients/renamed508/src/main/java/Class77.java diff --git a/renamed508/src/Class78.java b/clients/renamed508/src/main/java/Class78.java similarity index 100% rename from renamed508/src/Class78.java rename to clients/renamed508/src/main/java/Class78.java diff --git a/renamed508/src/Class79.java b/clients/renamed508/src/main/java/Class79.java similarity index 100% rename from renamed508/src/Class79.java rename to clients/renamed508/src/main/java/Class79.java diff --git a/renamed508/src/Class8.java b/clients/renamed508/src/main/java/Class8.java similarity index 100% rename from renamed508/src/Class8.java rename to clients/renamed508/src/main/java/Class8.java diff --git a/renamed508/src/Class83.java b/clients/renamed508/src/main/java/Class83.java similarity index 100% rename from renamed508/src/Class83.java rename to clients/renamed508/src/main/java/Class83.java diff --git a/renamed508/src/Class84.java b/clients/renamed508/src/main/java/Class84.java similarity index 100% rename from renamed508/src/Class84.java rename to clients/renamed508/src/main/java/Class84.java diff --git a/renamed508/src/Class85.java b/clients/renamed508/src/main/java/Class85.java similarity index 100% rename from renamed508/src/Class85.java rename to clients/renamed508/src/main/java/Class85.java diff --git a/renamed508/src/Class87.java b/clients/renamed508/src/main/java/Class87.java similarity index 100% rename from renamed508/src/Class87.java rename to clients/renamed508/src/main/java/Class87.java diff --git a/renamed508/src/Class88.java b/clients/renamed508/src/main/java/Class88.java similarity index 100% rename from renamed508/src/Class88.java rename to clients/renamed508/src/main/java/Class88.java diff --git a/renamed508/src/Class89.java b/clients/renamed508/src/main/java/Class89.java similarity index 100% rename from renamed508/src/Class89.java rename to clients/renamed508/src/main/java/Class89.java diff --git a/renamed508/src/Class9.java b/clients/renamed508/src/main/java/Class9.java similarity index 100% rename from renamed508/src/Class9.java rename to clients/renamed508/src/main/java/Class9.java diff --git a/renamed508/src/Class90.java b/clients/renamed508/src/main/java/Class90.java similarity index 100% rename from renamed508/src/Class90.java rename to clients/renamed508/src/main/java/Class90.java diff --git a/renamed508/src/Class91.java b/clients/renamed508/src/main/java/Class91.java similarity index 100% rename from renamed508/src/Class91.java rename to clients/renamed508/src/main/java/Class91.java diff --git a/renamed508/src/Class92.java b/clients/renamed508/src/main/java/Class92.java similarity index 100% rename from renamed508/src/Class92.java rename to clients/renamed508/src/main/java/Class92.java diff --git a/renamed508/src/Class92_Sub1.java b/clients/renamed508/src/main/java/Class92_Sub1.java similarity index 100% rename from renamed508/src/Class92_Sub1.java rename to clients/renamed508/src/main/java/Class92_Sub1.java diff --git a/renamed508/src/Class93.java b/clients/renamed508/src/main/java/Class93.java similarity index 100% rename from renamed508/src/Class93.java rename to clients/renamed508/src/main/java/Class93.java diff --git a/renamed508/src/Class94.java b/clients/renamed508/src/main/java/Class94.java similarity index 100% rename from renamed508/src/Class94.java rename to clients/renamed508/src/main/java/Class94.java diff --git a/renamed508/src/Class95.java b/clients/renamed508/src/main/java/Class95.java similarity index 100% rename from renamed508/src/Class95.java rename to clients/renamed508/src/main/java/Class95.java diff --git a/renamed508/src/Class96.java b/clients/renamed508/src/main/java/Class96.java similarity index 100% rename from renamed508/src/Class96.java rename to clients/renamed508/src/main/java/Class96.java diff --git a/renamed508/src/Class97.java b/clients/renamed508/src/main/java/Class97.java similarity index 100% rename from renamed508/src/Class97.java rename to clients/renamed508/src/main/java/Class97.java diff --git a/renamed508/src/Class97_Sub1.java b/clients/renamed508/src/main/java/Class97_Sub1.java similarity index 100% rename from renamed508/src/Class97_Sub1.java rename to clients/renamed508/src/main/java/Class97_Sub1.java diff --git a/renamed508/src/Class99.java b/clients/renamed508/src/main/java/Class99.java similarity index 100% rename from renamed508/src/Class99.java rename to clients/renamed508/src/main/java/Class99.java diff --git a/renamed508/src/ClientScript.java b/clients/renamed508/src/main/java/ClientScript.java similarity index 100% rename from renamed508/src/ClientScript.java rename to clients/renamed508/src/main/java/ClientScript.java diff --git a/renamed508/src/FileOnDisk.java b/clients/renamed508/src/main/java/FileOnDisk.java similarity index 100% rename from renamed508/src/FileOnDisk.java rename to clients/renamed508/src/main/java/FileOnDisk.java diff --git a/renamed508/src/GameApplet.java b/clients/renamed508/src/main/java/GameApplet.java similarity index 100% rename from renamed508/src/GameApplet.java rename to clients/renamed508/src/main/java/GameApplet.java diff --git a/renamed508/src/GameCanvas.java b/clients/renamed508/src/main/java/GameCanvas.java similarity index 100% rename from renamed508/src/GameCanvas.java rename to clients/renamed508/src/main/java/GameCanvas.java diff --git a/renamed508/src/GameException.java b/clients/renamed508/src/main/java/GameException.java similarity index 100% rename from renamed508/src/GameException.java rename to clients/renamed508/src/main/java/GameException.java diff --git a/renamed508/src/GameSocket.java b/clients/renamed508/src/main/java/GameSocket.java similarity index 100% rename from renamed508/src/GameSocket.java rename to clients/renamed508/src/main/java/GameSocket.java diff --git a/renamed508/src/Ground.java b/clients/renamed508/src/main/java/Ground.java similarity index 100% rename from renamed508/src/Ground.java rename to clients/renamed508/src/main/java/Ground.java diff --git a/renamed508/src/GroundData.java b/clients/renamed508/src/main/java/GroundData.java similarity index 100% rename from renamed508/src/GroundData.java rename to clients/renamed508/src/main/java/GroundData.java diff --git a/renamed508/src/Interface1.java b/clients/renamed508/src/main/java/Interface1.java similarity index 100% rename from renamed508/src/Interface1.java rename to clients/renamed508/src/main/java/Interface1.java diff --git a/renamed508/src/Interface2.java b/clients/renamed508/src/main/java/Interface2.java similarity index 100% rename from renamed508/src/Interface2.java rename to clients/renamed508/src/main/java/Interface2.java diff --git a/renamed508/src/Interface3.java b/clients/renamed508/src/main/java/Interface3.java similarity index 100% rename from renamed508/src/Interface3.java rename to clients/renamed508/src/main/java/Interface3.java diff --git a/renamed508/src/Interface4.java b/clients/renamed508/src/main/java/Interface4.java similarity index 100% rename from renamed508/src/Interface4.java rename to clients/renamed508/src/main/java/Interface4.java diff --git a/renamed508/src/Item.java b/clients/renamed508/src/main/java/Item.java similarity index 100% rename from renamed508/src/Item.java rename to clients/renamed508/src/main/java/Item.java diff --git a/renamed508/src/ItemDefinition.java b/clients/renamed508/src/main/java/ItemDefinition.java similarity index 100% rename from renamed508/src/ItemDefinition.java rename to clients/renamed508/src/main/java/ItemDefinition.java diff --git a/renamed508/src/Keyboard.java b/clients/renamed508/src/main/java/Keyboard.java similarity index 100% rename from renamed508/src/Keyboard.java rename to clients/renamed508/src/main/java/Keyboard.java diff --git a/renamed508/src/Login.java b/clients/renamed508/src/main/java/Login.java similarity index 100% rename from renamed508/src/Login.java rename to clients/renamed508/src/main/java/Login.java diff --git a/renamed508/src/MRUNodes.java b/clients/renamed508/src/main/java/MRUNodes.java similarity index 100% rename from renamed508/src/MRUNodes.java rename to clients/renamed508/src/main/java/MRUNodes.java diff --git a/renamed508/src/Model.java b/clients/renamed508/src/main/java/Model.java similarity index 100% rename from renamed508/src/Model.java rename to clients/renamed508/src/main/java/Model.java diff --git a/renamed508/src/Mouse.java b/clients/renamed508/src/main/java/Mouse.java similarity index 100% rename from renamed508/src/Mouse.java rename to clients/renamed508/src/main/java/Mouse.java diff --git a/renamed508/src/MutableString.java b/clients/renamed508/src/main/java/MutableString.java similarity index 100% rename from renamed508/src/MutableString.java rename to clients/renamed508/src/main/java/MutableString.java diff --git a/renamed508/src/NPC.java b/clients/renamed508/src/main/java/NPC.java similarity index 100% rename from renamed508/src/NPC.java rename to clients/renamed508/src/main/java/NPC.java diff --git a/renamed508/src/NPCDefinition.java b/clients/renamed508/src/main/java/NPCDefinition.java similarity index 100% rename from renamed508/src/NPCDefinition.java rename to clients/renamed508/src/main/java/NPCDefinition.java diff --git a/renamed508/src/Node.java b/clients/renamed508/src/main/java/Node.java similarity index 100% rename from renamed508/src/Node.java rename to clients/renamed508/src/main/java/Node.java diff --git a/renamed508/src/NodeCache.java b/clients/renamed508/src/main/java/NodeCache.java similarity index 100% rename from renamed508/src/NodeCache.java rename to clients/renamed508/src/main/java/NodeCache.java diff --git a/renamed508/src/NodeList.java b/clients/renamed508/src/main/java/NodeList.java similarity index 100% rename from renamed508/src/NodeList.java rename to clients/renamed508/src/main/java/NodeList.java diff --git a/renamed508/src/NodeSub.java b/clients/renamed508/src/main/java/NodeSub.java similarity index 100% rename from renamed508/src/NodeSub.java rename to clients/renamed508/src/main/java/NodeSub.java diff --git a/renamed508/src/NodeSubList.java b/clients/renamed508/src/main/java/NodeSubList.java similarity index 100% rename from renamed508/src/NodeSubList.java rename to clients/renamed508/src/main/java/NodeSubList.java diff --git a/renamed508/src/Object1.java b/clients/renamed508/src/main/java/Object1.java similarity index 100% rename from renamed508/src/Object1.java rename to clients/renamed508/src/main/java/Object1.java diff --git a/renamed508/src/Object2.java b/clients/renamed508/src/main/java/Object2.java similarity index 100% rename from renamed508/src/Object2.java rename to clients/renamed508/src/main/java/Object2.java diff --git a/renamed508/src/Object3.java b/clients/renamed508/src/main/java/Object3.java similarity index 100% rename from renamed508/src/Object3.java rename to clients/renamed508/src/main/java/Object3.java diff --git a/renamed508/src/Object4.java b/clients/renamed508/src/main/java/Object4.java similarity index 100% rename from renamed508/src/Object4.java rename to clients/renamed508/src/main/java/Object4.java diff --git a/renamed508/src/Object5.java b/clients/renamed508/src/main/java/Object5.java similarity index 100% rename from renamed508/src/Object5.java rename to clients/renamed508/src/main/java/Object5.java diff --git a/renamed508/src/ObjectDefinition.java b/clients/renamed508/src/main/java/ObjectDefinition.java similarity index 100% rename from renamed508/src/ObjectDefinition.java rename to clients/renamed508/src/main/java/ObjectDefinition.java diff --git a/renamed508/src/Player.java b/clients/renamed508/src/main/java/Player.java similarity index 100% rename from renamed508/src/Player.java rename to clients/renamed508/src/main/java/Player.java diff --git a/renamed508/src/PlayerDefinition.java b/clients/renamed508/src/main/java/PlayerDefinition.java similarity index 100% rename from renamed508/src/PlayerDefinition.java rename to clients/renamed508/src/main/java/PlayerDefinition.java diff --git a/renamed508/src/RandomNumberGenerator.java b/clients/renamed508/src/main/java/RandomNumberGenerator.java similarity index 100% rename from renamed508/src/RandomNumberGenerator.java rename to clients/renamed508/src/main/java/RandomNumberGenerator.java diff --git a/renamed508/src/ScriptParameters.java b/clients/renamed508/src/main/java/ScriptParameters.java similarity index 100% rename from renamed508/src/ScriptParameters.java rename to clients/renamed508/src/main/java/ScriptParameters.java diff --git a/renamed508/src/Signlink.java b/clients/renamed508/src/main/java/Signlink.java similarity index 100% rename from renamed508/src/Signlink.java rename to clients/renamed508/src/main/java/Signlink.java diff --git a/renamed508/src/Sprite.java b/clients/renamed508/src/main/java/Sprite.java similarity index 100% rename from renamed508/src/Sprite.java rename to clients/renamed508/src/main/java/Sprite.java diff --git a/renamed508/src/SpriteFactory.java b/clients/renamed508/src/main/java/SpriteFactory.java similarity index 100% rename from renamed508/src/SpriteFactory.java rename to clients/renamed508/src/main/java/SpriteFactory.java diff --git a/renamed508/src/Stream.java b/clients/renamed508/src/main/java/Stream.java similarity index 100% rename from renamed508/src/Stream.java rename to clients/renamed508/src/main/java/Stream.java diff --git a/renamed508/src/Widget.java b/clients/renamed508/src/main/java/Widget.java similarity index 100% rename from renamed508/src/Widget.java rename to clients/renamed508/src/main/java/Widget.java diff --git a/renamed508/src/client.java b/clients/renamed508/src/main/java/client.java similarity index 99% rename from renamed508/src/client.java rename to clients/renamed508/src/main/java/client.java index 4c30370..ccd2174 100644 --- a/renamed508/src/client.java +++ b/clients/renamed508/src/main/java/client.java @@ -7,11 +7,13 @@ import java.awt.Point; import java.awt.image.BufferedImage; import java.awt.image.PixelGrabber; import java.net.Socket; +import java.security.interfaces.RSAPublicKey; import java.util.GregorianCalendar; import java.util.HashMap; import nativeadvert.browsercontrol; import org.moparscape.iface.ClientInterface; +import org.moparscape.iface.Hasher; import org.moparscape.userver.v508.OndemandServer; public final class client extends GameApplet implements ClientInterface { @@ -124,7 +126,20 @@ public final class client extends GameApplet implements ClientInterface { e.printStackTrace(); } } - static int anInt2368; + + public String getServer() { + return Class68_Sub9.serverAddress; + } + + public void setPublicKey(RSAPublicKey key) { + // not implemented + } + + public void setHasher(Hasher hasher) { + // not implemented + } + + static int anInt2368; static int anInt2369; static int anInt2370; static int anInt2371; diff --git a/renamed508/src/log.java b/clients/renamed508/src/main/java/log.java similarity index 100% rename from renamed508/src/log.java rename to clients/renamed508/src/main/java/log.java diff --git a/renamed508/src/nativeadvert/browsercontrol.java b/clients/renamed508/src/main/java/nativeadvert/browsercontrol.java similarity index 100% rename from renamed508/src/nativeadvert/browsercontrol.java rename to clients/renamed508/src/main/java/nativeadvert/browsercontrol.java diff --git a/dist/pom.xml b/dist/pom.xml new file mode 100644 index 0000000..52d0eb9 --- /dev/null +++ b/dist/pom.xml @@ -0,0 +1,125 @@ + + + + + + org.moparscape.client + main + 0.1-SNAPSHOT + + 4.0.0 + dist + pom + + + ${project.groupId} + clients + ${project.version} + pom + + + ${project.groupId} + servers + ${project.version} + pom + + + + + + maven-antrun-plugin + 1.7 + + + package + + + + + + + + + + + + + + + + + + + + + + + + + + + + run + + + + + + ant-contrib + ant-contrib + 1.0b3 + + + ant + ant + + + + + + + org.codehaus.mojo + exec-maven-plugin + 1.2.1 + + + my-execution + package + + java + + + + + org.moparscape.classloader.MoparScapeLinks + + ${basedir}/.. + ${project.build.directory}/moparscape.html + + + + + + + \ No newline at end of file diff --git a/hackme/pom.xml b/hackme/pom.xml new file mode 100644 index 0000000..e615319 --- /dev/null +++ b/hackme/pom.xml @@ -0,0 +1,37 @@ + + + + + + org.moparscape.client + main + 0.1-SNAPSHOT + + 4.0.0 + hackme + + + ${project.groupId} + MoparScape + ${project.version} + + + \ No newline at end of file diff --git a/hackme/src/MyEntry.java b/hackme/src/main/java/MyEntry.java similarity index 88% rename from hackme/src/MyEntry.java rename to hackme/src/main/java/MyEntry.java index 467651b..f24e179 100644 --- a/hackme/src/MyEntry.java +++ b/hackme/src/main/java/MyEntry.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import org.moparscape.Debug; import org.moparscapebla.HackMe; import org.moparscapebla.MyInterface; diff --git a/hackme/src/org/moparscapebla/HackMe.java b/hackme/src/main/java/org/moparscapebla/HackMe.java similarity index 84% rename from hackme/src/org/moparscapebla/HackMe.java rename to hackme/src/main/java/org/moparscapebla/HackMe.java index 2f71bce..e330809 100644 --- a/hackme/src/org/moparscapebla/HackMe.java +++ b/hackme/src/main/java/org/moparscapebla/HackMe.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + package org.moparscapebla; import java.net.URL; diff --git a/hackme/src/main/java/org/moparscapebla/MyInterface.java b/hackme/src/main/java/org/moparscapebla/MyInterface.java new file mode 100644 index 0000000..391f3db --- /dev/null +++ b/hackme/src/main/java/org/moparscapebla/MyInterface.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +package org.moparscapebla; + +public interface MyInterface { + public static final long serialVersionUID = 42L; + + public void doSomething(String s); + + public void doSomethingElse(int i); +} diff --git a/hackme/src/org/moparscapebla/MyInterface.java b/hackme/src/org/moparscapebla/MyInterface.java deleted file mode 100644 index a6a075f..0000000 --- a/hackme/src/org/moparscapebla/MyInterface.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.moparscapebla; - -public interface MyInterface { - public static final long serialVersionUID = 42L; - - public void doSomething(String s); - - public void doSomethingElse(int i); -} diff --git a/java_client/java_client.0.15.5.cpp b/java_client/java_client.0.15.5.cpp index 3d4271b..aa62bdc 100644 --- a/java_client/java_client.0.15.5.cpp +++ b/java_client/java_client.0.15.5.cpp @@ -1,33 +1,21 @@ /* +Copyright (C) 2009-2013 moparisthebest -Copyright (c) 2003, Arvid Norberg -All rights reserved. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in -the documentation and/or other materials provided with the distribution. -* Neither the name of the author nor the names of its -contributors may be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.cpp b/java_client/java_client.cpp index 375d329..ec77680 100644 --- a/java_client/java_client.cpp +++ b/java_client/java_client.cpp @@ -1,19 +1,21 @@ /* -Copyright (c) 2011, Travis Burtrum -All rights reserved. +Copyright (C) 2009-2013 moparisthebest This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by +it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Affero General Public License for more details. -You should have received a copy of the GNU General Public License +You should have received a copy of the GNU Affero General Public License along with this program. If not, see . + +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.last_human.cpp b/java_client/java_client.last_human.cpp index 6a0dcb8..216b458 100644 --- a/java_client/java_client.last_human.cpp +++ b/java_client/java_client.last_human.cpp @@ -1,33 +1,21 @@ /* +Copyright (C) 2009-2013 moparisthebest -Copyright (c) 2011, moparisthebest -All rights reserved. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - * Neither the name of the author nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.last_mopar_patch.cpp b/java_client/java_client.last_mopar_patch.cpp index c5dfe5a..98447c8 100644 --- a/java_client/java_client.last_mopar_patch.cpp +++ b/java_client/java_client.last_mopar_patch.cpp @@ -1,19 +1,21 @@ /* -Copyright (c) 2011, Travis Burtrum -All rights reserved. +Copyright (C) 2009-2013 moparisthebest This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by +it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Affero General Public License for more details. -You should have received a copy of the GNU General Public License +You should have received a copy of the GNU Affero General Public License along with this program. If not, see . + +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.name.cpp b/java_client/java_client.name.cpp index 727417d..4a26e79 100644 --- a/java_client/java_client.name.cpp +++ b/java_client/java_client.name.cpp @@ -1,33 +1,21 @@ /* +Copyright (C) 2009-2013 moparisthebest -Copyright (c) 2003, Arvid Norberg -All rights reserved. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. -* Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -* Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in -the documentation and/or other materials provided with the distribution. -* Neither the name of the author nor the names of its -contributors may be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.orig.cpp b/java_client/java_client.orig.cpp index c50c837..301d919 100644 --- a/java_client/java_client.orig.cpp +++ b/java_client/java_client.orig.cpp @@ -1,19 +1,21 @@ /* -Copyright (c) 2011, Travis Burtrum -All rights reserved. +Copyright (C) 2009-2013 moparisthebest This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by +it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +GNU Affero General Public License for more details. -You should have received a copy of the GNU General Public License +You should have received a copy of the GNU Affero General Public License along with this program. If not, see . + +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client.preautoresume.cpp b/java_client/java_client.preautoresume.cpp index dcecd02..6cf4b8f 100644 --- a/java_client/java_client.preautoresume.cpp +++ b/java_client/java_client.preautoresume.cpp @@ -1,33 +1,21 @@ /* +Copyright (C) 2009-2013 moparisthebest -Copyright (c) 2011, moparisthebest -All rights reserved. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - * Neither the name of the author nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/java_client/java_client_human.cpp b/java_client/java_client_human.cpp index e69ad70..de75180 100644 --- a/java_client/java_client_human.cpp +++ b/java_client/java_client_human.cpp @@ -1,33 +1,21 @@ /* +Copyright (C) 2009-2013 moparisthebest -Copyright (c) 2003, Arvid Norberg -All rights reserved. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the distribution. - * Neither the name of the author nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see . +Official forums are http://www.moparscape.org/smf/ +Email me at admin@moparisthebest.com. */ #include diff --git a/gpl.txt b/license.txt similarity index 86% rename from gpl.txt rename to license.txt index 94a9ed0..dba13ed 100644 --- a/gpl.txt +++ b/license.txt @@ -1,5 +1,5 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies @@ -7,17 +7,15 @@ Preamble - The GNU General Public License is a free, copyleft license for -software and other kinds of works. + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to +our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. +software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you @@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. The precise terms and conditions for copying, distribution and modification follow. @@ -72,7 +60,7 @@ modification follow. 0. Definitions. - "This License" refers to version 3 of the GNU General Public License. + "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. @@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - 13. Use with the GNU Affero General Public License. + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single +under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General +Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published +GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's +versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. @@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by + it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + GNU Affero General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see +For more information on this, and how to apply and follow the GNU AGPL, see . - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/pom.xml b/pom.xml new file mode 100755 index 0000000..bb06d8f --- /dev/null +++ b/pom.xml @@ -0,0 +1,79 @@ + + + + + 4.0.0 + org.moparscape.client + main + 0.1-SNAPSHOT + + Example clients and servers to run in MoparScape + + https://github.com/moparisthebest/MoparScape + + moparscape.org + https://www.moparscape.org + + + + moparisthebest + admin@moparscape.org + https://www.moparscape.org/ + + + + scm:git:https://github.com/moparisthebest/MoparScape.git + scm:git:https://github.com/moparisthebest/MoparScape.git + https://github.com/moparisthebest/MoparScape + + + + GNU Affero General Public License, Version 3 + https://www.gnu.org/licenses/agpl-3.0.html + + + pom + + true + UTF-8 + + + MoparScape + hackme + clients + servers + dist + + + ${project.artifactId} + + + maven-compiler-plugin + 3.1 + + 1.5 + 1.5 + false + + + + + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..23bcc7b --- /dev/null +++ b/readme.md @@ -0,0 +1,32 @@ +# MoparScape + +This project contains the open source components of [MoparScape][3], as well as example client and server implementations. It is provided as a convenient project built by maven that allows you to run `mvn package` to build and CRC all artifacts, and outputs HTML with links to immediately test your client/server inside MoparScape (inside folder `dist/target/`). + +Clients are located in the clients module, and must have a class named `client` in the default package that implements `org.moparscape.iface.ClientInterface`. Data for clients (otherwise known as cache) is in individual folders in the cachedump folder, +which are distributed as zips. + +Servers are located in the clients module, and must have a class named `server` in the default package that implements `org.moparscape.iface.ServerInterface`. Data for clients is in the module folder for that particular server. Servers are distributed as zips with all the data in there along with a server.jar containing the executable code. The maven projects create this artifact for you. + +Licensing +------------ +Content of folders `java_client`, `hackme`, `dist`, `MoparScape`, and `servers/server317` is licensed under the [GNU/AGPLv3][2], the full text of which is included in `license.txt`. + +Credits +------------ +* clients/clientRSC - modified from [mpc-client](https://github.com/xetr0v/mpc-client) +* servers/server508 - modified from DavidScape +* servers/server317 - modified from [hybridscape](http://sourceforge.net/projects/hybridscape/) + +Contributing +------------ + +1. Fork it. (Alternatively, if you **really** can't use github/git, email me a patch.) +2. Create a branch (`git checkout -b my_MoparScape`) +3. Commit your changes (`git commit -am "Implemented method X"`) +4. Push to the branch (`git push origin my_MoparScape`) +5. Open a [Pull Request][2] +6. Enjoy a refreshing beverage and wait + +[1]: https://www.gnu.org/licenses/agpl.html +[2]: https://github.com/moparisthebest/MoparScape/pulls +[3]: https://www.moparscape.org/moparscape4.php diff --git a/server317/src/ItemList.java b/server317/src/ItemList.java deleted file mode 100755 index 24f72d7..0000000 --- a/server317/src/ItemList.java +++ /dev/null @@ -1,13 +0,0 @@ -public class ItemList { - public int itemId; - public String itemName; - public String itemDescription; - public double ShopValue; - public double LowAlch; - public double HighAlch; - public int[] Bonuses = new int[100]; - - public ItemList(int _itemId) { - itemId = _itemId; - } -} diff --git a/server317/src/NPCDrops.java b/server317/src/NPCDrops.java deleted file mode 100755 index 174b2bf..0000000 --- a/server317/src/NPCDrops.java +++ /dev/null @@ -1,14 +0,0 @@ -public class NPCDrops { - public int npcId; - public int DropType; - public int[] Items = new int[100]; - public int[] ItemsN = new int[100]; - - public NPCDrops(int _npcId) { - npcId = _npcId; - for (int i = 0; i < Items.length; i++) { - Items[i] = -1; - ItemsN[i] = 0; - } - } -} diff --git a/server317/src/NPCList.java b/server317/src/NPCList.java deleted file mode 100755 index 950287f..0000000 --- a/server317/src/NPCList.java +++ /dev/null @@ -1,10 +0,0 @@ -public class NPCList { - public int npcId; - public String npcName; - public int npcCombat; - public int npcHealth; - - public NPCList(int _npcId) { - npcId = _npcId; - } -} diff --git a/servers/pom.xml b/servers/pom.xml new file mode 100644 index 0000000..3c7550d --- /dev/null +++ b/servers/pom.xml @@ -0,0 +1,83 @@ + + + + + + org.moparscape.client + main + 0.1-SNAPSHOT + + 4.0.0 + servers + pom + + server317 + server508 + + + + ${project.groupId} + MoparScape + ${project.version} + + + + + + + maven-antrun-plugin + 1.7 + + + package + + + + + + + + + + + + + + + + + + + + + + run + + + + + + + + \ No newline at end of file diff --git a/server317/autospawn.cfg b/servers/server317/autospawn.cfg similarity index 100% rename from server317/autospawn.cfg rename to servers/server317/autospawn.cfg diff --git a/server317/characters/Use this for new people.txt b/servers/server317/characters/Use this for new people.txt similarity index 100% rename from server317/characters/Use this for new people.txt rename to servers/server317/characters/Use this for new people.txt diff --git a/server317/characters/donttouch.txt b/servers/server317/characters/donttouch.txt similarity index 100% rename from server317/characters/donttouch.txt rename to servers/server317/characters/donttouch.txt diff --git a/server317/characters/use this for admins.txt b/servers/server317/characters/use this for admins.txt similarity index 100% rename from server317/characters/use this for admins.txt rename to servers/server317/characters/use this for admins.txt diff --git a/server317/data/notes.dat b/servers/server317/data/notes.dat similarity index 100% rename from server317/data/notes.dat rename to servers/server317/data/notes.dat diff --git a/server317/data/sellable.dat b/servers/server317/data/sellable.dat similarity index 100% rename from server317/data/sellable.dat rename to servers/server317/data/sellable.dat diff --git a/server317/data/stackable.dat b/servers/server317/data/stackable.dat similarity index 100% rename from server317/data/stackable.dat rename to servers/server317/data/stackable.dat diff --git a/server317/data/tradeable.dat b/servers/server317/data/tradeable.dat similarity index 100% rename from server317/data/tradeable.dat rename to servers/server317/data/tradeable.dat diff --git a/server317/data/twohanded.dat b/servers/server317/data/twohanded.dat similarity index 100% rename from server317/data/twohanded.dat rename to servers/server317/data/twohanded.dat diff --git a/server317/dialogues.cfg b/servers/server317/dialogues.cfg similarity index 100% rename from server317/dialogues.cfg rename to servers/server317/dialogues.cfg diff --git a/server317/drops.cfg b/servers/server317/drops.cfg similarity index 100% rename from server317/drops.cfg rename to servers/server317/drops.cfg diff --git a/server317/item.cfg b/servers/server317/item.cfg similarity index 100% rename from server317/item.cfg rename to servers/server317/item.cfg diff --git a/server317/npc.cfg b/servers/server317/npc.cfg similarity index 100% rename from server317/npc.cfg rename to servers/server317/npc.cfg diff --git a/server317/npcdrops.cfg b/servers/server317/npcdrops.cfg similarity index 100% rename from server317/npcdrops.cfg rename to servers/server317/npcdrops.cfg diff --git a/servers/server317/pom.xml b/servers/server317/pom.xml new file mode 100644 index 0000000..7bf13d6 --- /dev/null +++ b/servers/server317/pom.xml @@ -0,0 +1,37 @@ + + + + + + org.moparscape.client + servers + 0.1-SNAPSHOT + + 4.0.0 + server317 + + + + maven-antrun-plugin + + + + \ No newline at end of file diff --git a/server317/shops.cfg b/servers/server317/shops.cfg similarity index 100% rename from server317/shops.cfg rename to servers/server317/shops.cfg diff --git a/server317/src/ClientHandler.java b/servers/server317/src/main/java/ClientHandler.java similarity index 97% rename from server317/src/ClientHandler.java rename to servers/server317/src/main/java/ClientHandler.java index e2eed1e..875217e 100755 --- a/server317/src/ClientHandler.java +++ b/servers/server317/src/main/java/ClientHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + // handles a connected ClientHandler import java.io.*; diff --git a/server317/src/Cryption.java b/servers/server317/src/main/java/Cryption.java similarity index 82% rename from server317/src/Cryption.java rename to servers/server317/src/main/java/Cryption.java index f394ea6..384dbb1 100755 --- a/server317/src/Cryption.java +++ b/servers/server317/src/main/java/Cryption.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + public class Cryption { public Cryption(int ai[]) { diff --git a/server317/src/DialogueHandler.java b/servers/server317/src/main/java/DialogueHandler.java similarity index 86% rename from server317/src/DialogueHandler.java rename to servers/server317/src/main/java/DialogueHandler.java index 0918136..a5cd278 100755 --- a/server317/src/DialogueHandler.java +++ b/servers/server317/src/main/java/DialogueHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; diff --git a/server317/src/ItemHandler.java b/servers/server317/src/main/java/ItemHandler.java similarity index 89% rename from server317/src/ItemHandler.java rename to servers/server317/src/main/java/ItemHandler.java index 6deee81..c4fc271 100755 --- a/server317/src/ItemHandler.java +++ b/servers/server317/src/main/java/ItemHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; diff --git a/servers/server317/src/main/java/ItemList.java b/servers/server317/src/main/java/ItemList.java new file mode 100755 index 0000000..a987881 --- /dev/null +++ b/servers/server317/src/main/java/ItemList.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +public class ItemList { + public int itemId; + public String itemName; + public String itemDescription; + public double ShopValue; + public double LowAlch; + public double HighAlch; + public int[] Bonuses = new int[100]; + + public ItemList(int _itemId) { + itemId = _itemId; + } +} diff --git a/server317/src/Items.java b/servers/server317/src/main/java/Items.java similarity index 93% rename from server317/src/Items.java rename to servers/server317/src/main/java/Items.java index 0f0fe0c..d8d625c 100755 --- a/server317/src/Items.java +++ b/servers/server317/src/main/java/Items.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + // a collection of item methods import java.io.File; diff --git a/servers/server317/src/main/java/NPCDrops.java b/servers/server317/src/main/java/NPCDrops.java new file mode 100755 index 0000000..6e089d4 --- /dev/null +++ b/servers/server317/src/main/java/NPCDrops.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +public class NPCDrops { + public int npcId; + public int DropType; + public int[] Items = new int[100]; + public int[] ItemsN = new int[100]; + + public NPCDrops(int _npcId) { + npcId = _npcId; + for (int i = 0; i < Items.length; i++) { + Items[i] = -1; + ItemsN[i] = 0; + } + } +} diff --git a/server317/src/NPCHandler.java b/servers/server317/src/main/java/NPCHandler.java similarity index 96% rename from server317/src/NPCHandler.java rename to servers/server317/src/main/java/NPCHandler.java index 8b0e8f8..3d484ac 100755 --- a/server317/src/NPCHandler.java +++ b/servers/server317/src/main/java/NPCHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; diff --git a/servers/server317/src/main/java/NPCList.java b/servers/server317/src/main/java/NPCList.java new file mode 100755 index 0000000..2007932 --- /dev/null +++ b/servers/server317/src/main/java/NPCList.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + +public class NPCList { + public int npcId; + public String npcName; + public int npcCombat; + public int npcHealth; + + public NPCList(int _npcId) { + npcId = _npcId; + } +} diff --git a/server317/src/NPCs.java b/servers/server317/src/main/java/NPCs.java similarity index 82% rename from server317/src/NPCs.java rename to servers/server317/src/main/java/NPCs.java index 87ab2ca..05935c3 100755 --- a/server317/src/NPCs.java +++ b/servers/server317/src/main/java/NPCs.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + public class NPCs { public int npcId; public int npcType; diff --git a/server317/src/PlayerHandler.java b/servers/server317/src/main/java/PlayerHandler.java similarity index 94% rename from server317/src/PlayerHandler.java rename to servers/server317/src/main/java/PlayerHandler.java index 439b344..b4c4faf 100755 --- a/server317/src/PlayerHandler.java +++ b/servers/server317/src/main/java/PlayerHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; diff --git a/server317/src/Players.java b/servers/server317/src/main/java/Players.java similarity index 95% rename from server317/src/Players.java rename to servers/server317/src/main/java/Players.java index 72f6ecf..56a73a0 100755 --- a/server317/src/Players.java +++ b/servers/server317/src/main/java/Players.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.util.Calendar; import java.util.GregorianCalendar; diff --git a/server317/src/ReTT.java b/servers/server317/src/main/java/ReTT.java similarity index 56% rename from server317/src/ReTT.java rename to servers/server317/src/main/java/ReTT.java index 2e7726f..e90f6d0 100755 --- a/server317/src/ReTT.java +++ b/servers/server317/src/main/java/ReTT.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.awt.Toolkit; import java.util.Timer; import java.util.TimerTask; diff --git a/server317/src/ShopHandler.java b/servers/server317/src/main/java/ShopHandler.java similarity index 86% rename from server317/src/ShopHandler.java rename to servers/server317/src/main/java/ShopHandler.java index bbc6247..f52b773 100755 --- a/server317/src/ShopHandler.java +++ b/servers/server317/src/main/java/ShopHandler.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; diff --git a/server317/src/misc.java b/servers/server317/src/main/java/misc.java similarity index 87% rename from server317/src/misc.java rename to servers/server317/src/main/java/misc.java index eadccaa..87e4abf 100755 --- a/server317/src/misc.java +++ b/servers/server317/src/main/java/misc.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + // hybridScape - The hybridScape Developers Team // Silabsoft diff --git a/server317/src/server.java b/servers/server317/src/main/java/server.java similarity index 87% rename from server317/src/server.java rename to servers/server317/src/main/java/server.java index 837e88d..7f83867 100755 --- a/server317/src/server.java +++ b/servers/server317/src/main/java/server.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + public class server implements Runnable, org.moparscape.iface.ServerInterface { public void startServer(String workingDirectory){ diff --git a/server317/src/stream.java b/servers/server317/src/main/java/stream.java similarity index 88% rename from server317/src/stream.java rename to servers/server317/src/main/java/stream.java index 28c6636..c225a8f 100755 --- a/server317/src/stream.java +++ b/servers/server317/src/main/java/stream.java @@ -1,3 +1,23 @@ +/* + * Copyright (C) 2009-2013 moparisthebest + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * Official forums are http://www.moparscape.org/smf/ + * Email me at admin@moparisthebest.com. + */ + public class stream { public stream() { diff --git a/server508/data/ChatLogs.txt b/servers/server508/data/ChatLogs.txt similarity index 100% rename from server508/data/ChatLogs.txt rename to servers/server508/data/ChatLogs.txt diff --git a/server508/data/banned/bannedhosts.dat b/servers/server508/data/banned/bannedhosts.dat similarity index 100% rename from server508/data/banned/bannedhosts.dat rename to servers/server508/data/banned/bannedhosts.dat diff --git a/server508/data/banned/bannedusers.dat b/servers/server508/data/banned/bannedusers.dat similarity index 100% rename from server508/data/banned/bannedusers.dat rename to servers/server508/data/banned/bannedusers.dat diff --git a/server508/data/characters/highscores.txt b/servers/server508/data/characters/highscores.txt similarity index 100% rename from server508/data/characters/highscores.txt rename to servers/server508/data/characters/highscores.txt diff --git a/server508/data/items/equipment.dat b/servers/server508/data/items/equipment.dat similarity index 100% rename from server508/data/items/equipment.dat rename to servers/server508/data/items/equipment.dat diff --git a/server508/data/items/grandExchange.cfg b/servers/server508/data/items/grandExchange.cfg similarity index 100% rename from server508/data/items/grandExchange.cfg rename to servers/server508/data/items/grandExchange.cfg diff --git a/server508/data/items/items.cfg b/servers/server508/data/items/items.cfg similarity index 100% rename from server508/data/items/items.cfg rename to servers/server508/data/items/items.cfg diff --git a/server508/data/items/stackable.dat b/servers/server508/data/items/stackable.dat similarity index 100% rename from server508/data/items/stackable.dat rename to servers/server508/data/items/stackable.dat diff --git a/server508/data/mapdata/0.txt b/servers/server508/data/mapdata/0.txt similarity index 100% rename from server508/data/mapdata/0.txt rename to servers/server508/data/mapdata/0.txt diff --git a/server508/data/mapdata/1.dat b/servers/server508/data/mapdata/1.dat similarity index 100% rename from server508/data/mapdata/1.dat rename to servers/server508/data/mapdata/1.dat diff --git a/server508/data/mapdata/10027.txt b/servers/server508/data/mapdata/10027.txt similarity index 100% rename from server508/data/mapdata/10027.txt rename to servers/server508/data/mapdata/10027.txt diff --git a/server508/data/mapdata/10028.txt b/servers/server508/data/mapdata/10028.txt similarity index 100% rename from server508/data/mapdata/10028.txt rename to servers/server508/data/mapdata/10028.txt diff --git a/server508/data/mapdata/10029.txt b/servers/server508/data/mapdata/10029.txt similarity index 100% rename from server508/data/mapdata/10029.txt rename to servers/server508/data/mapdata/10029.txt diff --git a/server508/data/mapdata/10030.txt b/servers/server508/data/mapdata/10030.txt similarity index 100% rename from server508/data/mapdata/10030.txt rename to servers/server508/data/mapdata/10030.txt diff --git a/server508/data/mapdata/10031.txt b/servers/server508/data/mapdata/10031.txt similarity index 100% rename from server508/data/mapdata/10031.txt rename to servers/server508/data/mapdata/10031.txt diff --git a/server508/data/mapdata/10032.txt b/servers/server508/data/mapdata/10032.txt similarity index 100% rename from server508/data/mapdata/10032.txt rename to servers/server508/data/mapdata/10032.txt diff --git a/server508/data/mapdata/10033.txt b/servers/server508/data/mapdata/10033.txt similarity index 100% rename from server508/data/mapdata/10033.txt rename to servers/server508/data/mapdata/10033.txt diff --git a/server508/data/mapdata/10034.txt b/servers/server508/data/mapdata/10034.txt similarity index 100% rename from server508/data/mapdata/10034.txt rename to servers/server508/data/mapdata/10034.txt diff --git a/server508/data/mapdata/10035.txt b/servers/server508/data/mapdata/10035.txt similarity index 100% rename from server508/data/mapdata/10035.txt rename to servers/server508/data/mapdata/10035.txt diff --git a/server508/data/mapdata/10036.txt b/servers/server508/data/mapdata/10036.txt similarity index 100% rename from server508/data/mapdata/10036.txt rename to servers/server508/data/mapdata/10036.txt diff --git a/server508/data/mapdata/10037.txt b/servers/server508/data/mapdata/10037.txt similarity index 100% rename from server508/data/mapdata/10037.txt rename to servers/server508/data/mapdata/10037.txt diff --git a/server508/data/mapdata/10038.txt b/servers/server508/data/mapdata/10038.txt similarity index 100% rename from server508/data/mapdata/10038.txt rename to servers/server508/data/mapdata/10038.txt diff --git a/server508/data/mapdata/10039.txt b/servers/server508/data/mapdata/10039.txt similarity index 100% rename from server508/data/mapdata/10039.txt rename to servers/server508/data/mapdata/10039.txt diff --git a/server508/data/mapdata/10040.txt b/servers/server508/data/mapdata/10040.txt similarity index 100% rename from server508/data/mapdata/10040.txt rename to servers/server508/data/mapdata/10040.txt diff --git a/server508/data/mapdata/10041.txt b/servers/server508/data/mapdata/10041.txt similarity index 100% rename from server508/data/mapdata/10041.txt rename to servers/server508/data/mapdata/10041.txt diff --git a/server508/data/mapdata/10042.txt b/servers/server508/data/mapdata/10042.txt similarity index 100% rename from server508/data/mapdata/10042.txt rename to servers/server508/data/mapdata/10042.txt diff --git a/server508/data/mapdata/10043.txt b/servers/server508/data/mapdata/10043.txt similarity index 100% rename from server508/data/mapdata/10043.txt rename to servers/server508/data/mapdata/10043.txt diff --git a/server508/data/mapdata/10044.txt b/servers/server508/data/mapdata/10044.txt similarity index 100% rename from server508/data/mapdata/10044.txt rename to servers/server508/data/mapdata/10044.txt diff --git a/server508/data/mapdata/10045.txt b/servers/server508/data/mapdata/10045.txt similarity index 100% rename from server508/data/mapdata/10045.txt rename to servers/server508/data/mapdata/10045.txt diff --git a/server508/data/mapdata/10052.txt b/servers/server508/data/mapdata/10052.txt similarity index 100% rename from server508/data/mapdata/10052.txt rename to servers/server508/data/mapdata/10052.txt diff --git a/server508/data/mapdata/10053.txt b/servers/server508/data/mapdata/10053.txt similarity index 100% rename from server508/data/mapdata/10053.txt rename to servers/server508/data/mapdata/10053.txt diff --git a/server508/data/mapdata/10054.txt b/servers/server508/data/mapdata/10054.txt similarity index 100% rename from server508/data/mapdata/10054.txt rename to servers/server508/data/mapdata/10054.txt diff --git a/server508/data/mapdata/10056.txt b/servers/server508/data/mapdata/10056.txt similarity index 100% rename from server508/data/mapdata/10056.txt rename to servers/server508/data/mapdata/10056.txt diff --git a/server508/data/mapdata/10057.txt b/servers/server508/data/mapdata/10057.txt similarity index 100% rename from server508/data/mapdata/10057.txt rename to servers/server508/data/mapdata/10057.txt diff --git a/server508/data/mapdata/10058.txt b/servers/server508/data/mapdata/10058.txt similarity index 100% rename from server508/data/mapdata/10058.txt rename to servers/server508/data/mapdata/10058.txt diff --git a/server508/data/mapdata/10059.txt b/servers/server508/data/mapdata/10059.txt similarity index 100% rename from server508/data/mapdata/10059.txt rename to servers/server508/data/mapdata/10059.txt diff --git a/server508/data/mapdata/10060.txt b/servers/server508/data/mapdata/10060.txt similarity index 100% rename from server508/data/mapdata/10060.txt rename to servers/server508/data/mapdata/10060.txt diff --git a/server508/data/mapdata/10061.txt b/servers/server508/data/mapdata/10061.txt similarity index 100% rename from server508/data/mapdata/10061.txt rename to servers/server508/data/mapdata/10061.txt diff --git a/server508/data/mapdata/10062.txt b/servers/server508/data/mapdata/10062.txt similarity index 100% rename from server508/data/mapdata/10062.txt rename to servers/server508/data/mapdata/10062.txt diff --git a/server508/data/mapdata/10063.txt b/servers/server508/data/mapdata/10063.txt similarity index 100% rename from server508/data/mapdata/10063.txt rename to servers/server508/data/mapdata/10063.txt diff --git a/server508/data/mapdata/10064.txt b/servers/server508/data/mapdata/10064.txt similarity index 100% rename from server508/data/mapdata/10064.txt rename to servers/server508/data/mapdata/10064.txt diff --git a/server508/data/mapdata/10065.txt b/servers/server508/data/mapdata/10065.txt similarity index 100% rename from server508/data/mapdata/10065.txt rename to servers/server508/data/mapdata/10065.txt diff --git a/server508/data/mapdata/10066.txt b/servers/server508/data/mapdata/10066.txt similarity index 100% rename from server508/data/mapdata/10066.txt rename to servers/server508/data/mapdata/10066.txt diff --git a/server508/data/mapdata/10067.txt b/servers/server508/data/mapdata/10067.txt similarity index 100% rename from server508/data/mapdata/10067.txt rename to servers/server508/data/mapdata/10067.txt diff --git a/server508/data/mapdata/10068.txt b/servers/server508/data/mapdata/10068.txt similarity index 100% rename from server508/data/mapdata/10068.txt rename to servers/server508/data/mapdata/10068.txt diff --git a/server508/data/mapdata/10069.txt b/servers/server508/data/mapdata/10069.txt similarity index 100% rename from server508/data/mapdata/10069.txt rename to servers/server508/data/mapdata/10069.txt diff --git a/server508/data/mapdata/10137.txt b/servers/server508/data/mapdata/10137.txt similarity index 100% rename from server508/data/mapdata/10137.txt rename to servers/server508/data/mapdata/10137.txt diff --git a/server508/data/mapdata/10138.txt b/servers/server508/data/mapdata/10138.txt similarity index 100% rename from server508/data/mapdata/10138.txt rename to servers/server508/data/mapdata/10138.txt diff --git a/server508/data/mapdata/10139.txt b/servers/server508/data/mapdata/10139.txt similarity index 100% rename from server508/data/mapdata/10139.txt rename to servers/server508/data/mapdata/10139.txt diff --git a/server508/data/mapdata/10140.txt b/servers/server508/data/mapdata/10140.txt similarity index 100% rename from server508/data/mapdata/10140.txt rename to servers/server508/data/mapdata/10140.txt diff --git a/server508/data/mapdata/10141.txt b/servers/server508/data/mapdata/10141.txt similarity index 100% rename from server508/data/mapdata/10141.txt rename to servers/server508/data/mapdata/10141.txt diff --git a/server508/data/mapdata/10143.txt b/servers/server508/data/mapdata/10143.txt similarity index 100% rename from server508/data/mapdata/10143.txt rename to servers/server508/data/mapdata/10143.txt diff --git a/server508/data/mapdata/10144.txt b/servers/server508/data/mapdata/10144.txt similarity index 100% rename from server508/data/mapdata/10144.txt rename to servers/server508/data/mapdata/10144.txt diff --git a/server508/data/mapdata/10145.txt b/servers/server508/data/mapdata/10145.txt similarity index 100% rename from server508/data/mapdata/10145.txt rename to servers/server508/data/mapdata/10145.txt diff --git a/server508/data/mapdata/10280.txt b/servers/server508/data/mapdata/10280.txt similarity index 100% rename from server508/data/mapdata/10280.txt rename to servers/server508/data/mapdata/10280.txt diff --git a/server508/data/mapdata/10281.txt b/servers/server508/data/mapdata/10281.txt similarity index 100% rename from server508/data/mapdata/10281.txt rename to servers/server508/data/mapdata/10281.txt diff --git a/server508/data/mapdata/10282.txt b/servers/server508/data/mapdata/10282.txt similarity index 100% rename from server508/data/mapdata/10282.txt rename to servers/server508/data/mapdata/10282.txt diff --git a/server508/data/mapdata/10283.txt b/servers/server508/data/mapdata/10283.txt similarity index 100% rename from server508/data/mapdata/10283.txt rename to servers/server508/data/mapdata/10283.txt diff --git a/server508/data/mapdata/10284.txt b/servers/server508/data/mapdata/10284.txt similarity index 100% rename from server508/data/mapdata/10284.txt rename to servers/server508/data/mapdata/10284.txt diff --git a/server508/data/mapdata/10285.txt b/servers/server508/data/mapdata/10285.txt similarity index 100% rename from server508/data/mapdata/10285.txt rename to servers/server508/data/mapdata/10285.txt diff --git a/server508/data/mapdata/10286.txt b/servers/server508/data/mapdata/10286.txt similarity index 100% rename from server508/data/mapdata/10286.txt rename to servers/server508/data/mapdata/10286.txt diff --git a/server508/data/mapdata/10287.txt b/servers/server508/data/mapdata/10287.txt similarity index 100% rename from server508/data/mapdata/10287.txt rename to servers/server508/data/mapdata/10287.txt diff --git a/server508/data/mapdata/10288.txt b/servers/server508/data/mapdata/10288.txt similarity index 100% rename from server508/data/mapdata/10288.txt rename to servers/server508/data/mapdata/10288.txt diff --git a/server508/data/mapdata/10289.txt b/servers/server508/data/mapdata/10289.txt similarity index 100% rename from server508/data/mapdata/10289.txt rename to servers/server508/data/mapdata/10289.txt diff --git a/server508/data/mapdata/10290.txt b/servers/server508/data/mapdata/10290.txt similarity index 100% rename from server508/data/mapdata/10290.txt rename to servers/server508/data/mapdata/10290.txt diff --git a/server508/data/mapdata/10291.txt b/servers/server508/data/mapdata/10291.txt similarity index 100% rename from server508/data/mapdata/10291.txt rename to servers/server508/data/mapdata/10291.txt diff --git a/server508/data/mapdata/10292.txt b/servers/server508/data/mapdata/10292.txt similarity index 100% rename from server508/data/mapdata/10292.txt rename to servers/server508/data/mapdata/10292.txt diff --git a/server508/data/mapdata/10293.txt b/servers/server508/data/mapdata/10293.txt similarity index 100% rename from server508/data/mapdata/10293.txt rename to servers/server508/data/mapdata/10293.txt diff --git a/server508/data/mapdata/10294.txt b/servers/server508/data/mapdata/10294.txt similarity index 100% rename from server508/data/mapdata/10294.txt rename to servers/server508/data/mapdata/10294.txt diff --git a/server508/data/mapdata/10295.txt b/servers/server508/data/mapdata/10295.txt similarity index 100% rename from server508/data/mapdata/10295.txt rename to servers/server508/data/mapdata/10295.txt diff --git a/server508/data/mapdata/10296.txt b/servers/server508/data/mapdata/10296.txt similarity index 100% rename from server508/data/mapdata/10296.txt rename to servers/server508/data/mapdata/10296.txt diff --git a/server508/data/mapdata/10297.txt b/servers/server508/data/mapdata/10297.txt similarity index 100% rename from server508/data/mapdata/10297.txt rename to servers/server508/data/mapdata/10297.txt diff --git a/server508/data/mapdata/10298.txt b/servers/server508/data/mapdata/10298.txt similarity index 100% rename from server508/data/mapdata/10298.txt rename to servers/server508/data/mapdata/10298.txt diff --git a/server508/data/mapdata/10299.txt b/servers/server508/data/mapdata/10299.txt similarity index 100% rename from server508/data/mapdata/10299.txt rename to servers/server508/data/mapdata/10299.txt diff --git a/server508/data/mapdata/10300.txt b/servers/server508/data/mapdata/10300.txt similarity index 100% rename from server508/data/mapdata/10300.txt rename to servers/server508/data/mapdata/10300.txt diff --git a/server508/data/mapdata/10301.txt b/servers/server508/data/mapdata/10301.txt similarity index 100% rename from server508/data/mapdata/10301.txt rename to servers/server508/data/mapdata/10301.txt diff --git a/server508/data/mapdata/10302.txt b/servers/server508/data/mapdata/10302.txt similarity index 100% rename from server508/data/mapdata/10302.txt rename to servers/server508/data/mapdata/10302.txt diff --git a/server508/data/mapdata/10303.txt b/servers/server508/data/mapdata/10303.txt similarity index 100% rename from server508/data/mapdata/10303.txt rename to servers/server508/data/mapdata/10303.txt diff --git a/server508/data/mapdata/10309.txt b/servers/server508/data/mapdata/10309.txt similarity index 100% rename from server508/data/mapdata/10309.txt rename to servers/server508/data/mapdata/10309.txt diff --git a/server508/data/mapdata/10310.txt b/servers/server508/data/mapdata/10310.txt similarity index 100% rename from server508/data/mapdata/10310.txt rename to servers/server508/data/mapdata/10310.txt diff --git a/server508/data/mapdata/10311.txt b/servers/server508/data/mapdata/10311.txt similarity index 100% rename from server508/data/mapdata/10311.txt rename to servers/server508/data/mapdata/10311.txt diff --git a/server508/data/mapdata/10312.txt b/servers/server508/data/mapdata/10312.txt similarity index 100% rename from server508/data/mapdata/10312.txt rename to servers/server508/data/mapdata/10312.txt diff --git a/server508/data/mapdata/10313.txt b/servers/server508/data/mapdata/10313.txt similarity index 100% rename from server508/data/mapdata/10313.txt rename to servers/server508/data/mapdata/10313.txt diff --git a/server508/data/mapdata/10314.txt b/servers/server508/data/mapdata/10314.txt similarity index 100% rename from server508/data/mapdata/10314.txt rename to servers/server508/data/mapdata/10314.txt diff --git a/server508/data/mapdata/10315.txt b/servers/server508/data/mapdata/10315.txt similarity index 100% rename from server508/data/mapdata/10315.txt rename to servers/server508/data/mapdata/10315.txt diff --git a/server508/data/mapdata/10316.txt b/servers/server508/data/mapdata/10316.txt similarity index 100% rename from server508/data/mapdata/10316.txt rename to servers/server508/data/mapdata/10316.txt diff --git a/server508/data/mapdata/10317.txt b/servers/server508/data/mapdata/10317.txt similarity index 100% rename from server508/data/mapdata/10317.txt rename to servers/server508/data/mapdata/10317.txt diff --git a/server508/data/mapdata/10318.txt b/servers/server508/data/mapdata/10318.txt similarity index 100% rename from server508/data/mapdata/10318.txt rename to servers/server508/data/mapdata/10318.txt diff --git a/server508/data/mapdata/10320.txt b/servers/server508/data/mapdata/10320.txt similarity index 100% rename from server508/data/mapdata/10320.txt rename to servers/server508/data/mapdata/10320.txt diff --git a/server508/data/mapdata/10321.txt b/servers/server508/data/mapdata/10321.txt similarity index 100% rename from server508/data/mapdata/10321.txt rename to servers/server508/data/mapdata/10321.txt diff --git a/server508/data/mapdata/10322.txt b/servers/server508/data/mapdata/10322.txt similarity index 100% rename from server508/data/mapdata/10322.txt rename to servers/server508/data/mapdata/10322.txt diff --git a/server508/data/mapdata/10323.txt b/servers/server508/data/mapdata/10323.txt similarity index 100% rename from server508/data/mapdata/10323.txt rename to servers/server508/data/mapdata/10323.txt diff --git a/server508/data/mapdata/10324.txt b/servers/server508/data/mapdata/10324.txt similarity index 100% rename from server508/data/mapdata/10324.txt rename to servers/server508/data/mapdata/10324.txt diff --git a/server508/data/mapdata/10325.txt b/servers/server508/data/mapdata/10325.txt similarity index 100% rename from server508/data/mapdata/10325.txt rename to servers/server508/data/mapdata/10325.txt diff --git a/server508/data/mapdata/10395.txt b/servers/server508/data/mapdata/10395.txt similarity index 100% rename from server508/data/mapdata/10395.txt rename to servers/server508/data/mapdata/10395.txt diff --git a/server508/data/mapdata/10396.txt b/servers/server508/data/mapdata/10396.txt similarity index 100% rename from server508/data/mapdata/10396.txt rename to servers/server508/data/mapdata/10396.txt diff --git a/server508/data/mapdata/10397.txt b/servers/server508/data/mapdata/10397.txt similarity index 100% rename from server508/data/mapdata/10397.txt rename to servers/server508/data/mapdata/10397.txt diff --git a/server508/data/mapdata/10399.txt b/servers/server508/data/mapdata/10399.txt similarity index 100% rename from server508/data/mapdata/10399.txt rename to servers/server508/data/mapdata/10399.txt diff --git a/server508/data/mapdata/10400.txt b/servers/server508/data/mapdata/10400.txt similarity index 100% rename from server508/data/mapdata/10400.txt rename to servers/server508/data/mapdata/10400.txt diff --git a/server508/data/mapdata/10401.txt b/servers/server508/data/mapdata/10401.txt similarity index 100% rename from server508/data/mapdata/10401.txt rename to servers/server508/data/mapdata/10401.txt diff --git a/server508/data/mapdata/10536.txt b/servers/server508/data/mapdata/10536.txt similarity index 100% rename from server508/data/mapdata/10536.txt rename to servers/server508/data/mapdata/10536.txt diff --git a/server508/data/mapdata/10537.txt b/servers/server508/data/mapdata/10537.txt similarity index 100% rename from server508/data/mapdata/10537.txt rename to servers/server508/data/mapdata/10537.txt diff --git a/server508/data/mapdata/10538.txt b/servers/server508/data/mapdata/10538.txt similarity index 100% rename from server508/data/mapdata/10538.txt rename to servers/server508/data/mapdata/10538.txt diff --git a/server508/data/mapdata/10539.txt b/servers/server508/data/mapdata/10539.txt similarity index 100% rename from server508/data/mapdata/10539.txt rename to servers/server508/data/mapdata/10539.txt diff --git a/server508/data/mapdata/10540.txt b/servers/server508/data/mapdata/10540.txt similarity index 100% rename from server508/data/mapdata/10540.txt rename to servers/server508/data/mapdata/10540.txt diff --git a/server508/data/mapdata/10541.txt b/servers/server508/data/mapdata/10541.txt similarity index 100% rename from server508/data/mapdata/10541.txt rename to servers/server508/data/mapdata/10541.txt diff --git a/server508/data/mapdata/10542.txt b/servers/server508/data/mapdata/10542.txt similarity index 100% rename from server508/data/mapdata/10542.txt rename to servers/server508/data/mapdata/10542.txt diff --git a/server508/data/mapdata/10543.txt b/servers/server508/data/mapdata/10543.txt similarity index 100% rename from server508/data/mapdata/10543.txt rename to servers/server508/data/mapdata/10543.txt diff --git a/server508/data/mapdata/10544.txt b/servers/server508/data/mapdata/10544.txt similarity index 100% rename from server508/data/mapdata/10544.txt rename to servers/server508/data/mapdata/10544.txt diff --git a/server508/data/mapdata/10545.txt b/servers/server508/data/mapdata/10545.txt similarity index 100% rename from server508/data/mapdata/10545.txt rename to servers/server508/data/mapdata/10545.txt diff --git a/server508/data/mapdata/10546.txt b/servers/server508/data/mapdata/10546.txt similarity index 100% rename from server508/data/mapdata/10546.txt rename to servers/server508/data/mapdata/10546.txt diff --git a/server508/data/mapdata/10547.txt b/servers/server508/data/mapdata/10547.txt similarity index 100% rename from server508/data/mapdata/10547.txt rename to servers/server508/data/mapdata/10547.txt diff --git a/server508/data/mapdata/10548.txt b/servers/server508/data/mapdata/10548.txt similarity index 100% rename from server508/data/mapdata/10548.txt rename to servers/server508/data/mapdata/10548.txt diff --git a/server508/data/mapdata/10549.txt b/servers/server508/data/mapdata/10549.txt similarity index 100% rename from server508/data/mapdata/10549.txt rename to servers/server508/data/mapdata/10549.txt diff --git a/server508/data/mapdata/10550.txt b/servers/server508/data/mapdata/10550.txt similarity index 100% rename from server508/data/mapdata/10550.txt rename to servers/server508/data/mapdata/10550.txt diff --git a/server508/data/mapdata/10551.txt b/servers/server508/data/mapdata/10551.txt similarity index 100% rename from server508/data/mapdata/10551.txt rename to servers/server508/data/mapdata/10551.txt diff --git a/server508/data/mapdata/10552.txt b/servers/server508/data/mapdata/10552.txt similarity index 100% rename from server508/data/mapdata/10552.txt rename to servers/server508/data/mapdata/10552.txt diff --git a/server508/data/mapdata/10553.txt b/servers/server508/data/mapdata/10553.txt similarity index 100% rename from server508/data/mapdata/10553.txt rename to servers/server508/data/mapdata/10553.txt diff --git a/server508/data/mapdata/10554.txt b/servers/server508/data/mapdata/10554.txt similarity index 100% rename from server508/data/mapdata/10554.txt rename to servers/server508/data/mapdata/10554.txt diff --git a/server508/data/mapdata/10555.txt b/servers/server508/data/mapdata/10555.txt similarity index 100% rename from server508/data/mapdata/10555.txt rename to servers/server508/data/mapdata/10555.txt diff --git a/server508/data/mapdata/10556.txt b/servers/server508/data/mapdata/10556.txt similarity index 100% rename from server508/data/mapdata/10556.txt rename to servers/server508/data/mapdata/10556.txt diff --git a/server508/data/mapdata/10557.txt b/servers/server508/data/mapdata/10557.txt similarity index 100% rename from server508/data/mapdata/10557.txt rename to servers/server508/data/mapdata/10557.txt diff --git a/server508/data/mapdata/10558.txt b/servers/server508/data/mapdata/10558.txt similarity index 100% rename from server508/data/mapdata/10558.txt rename to servers/server508/data/mapdata/10558.txt diff --git a/server508/data/mapdata/10559.txt b/servers/server508/data/mapdata/10559.txt similarity index 100% rename from server508/data/mapdata/10559.txt rename to servers/server508/data/mapdata/10559.txt diff --git a/server508/data/mapdata/10565.txt b/servers/server508/data/mapdata/10565.txt similarity index 100% rename from server508/data/mapdata/10565.txt rename to servers/server508/data/mapdata/10565.txt diff --git a/server508/data/mapdata/10566.txt b/servers/server508/data/mapdata/10566.txt similarity index 100% rename from server508/data/mapdata/10566.txt rename to servers/server508/data/mapdata/10566.txt diff --git a/server508/data/mapdata/10567.txt b/servers/server508/data/mapdata/10567.txt similarity index 100% rename from server508/data/mapdata/10567.txt rename to servers/server508/data/mapdata/10567.txt diff --git a/server508/data/mapdata/10570.txt b/servers/server508/data/mapdata/10570.txt similarity index 100% rename from server508/data/mapdata/10570.txt rename to servers/server508/data/mapdata/10570.txt diff --git a/server508/data/mapdata/10571.txt b/servers/server508/data/mapdata/10571.txt similarity index 100% rename from server508/data/mapdata/10571.txt rename to servers/server508/data/mapdata/10571.txt diff --git a/server508/data/mapdata/10572.txt b/servers/server508/data/mapdata/10572.txt similarity index 100% rename from server508/data/mapdata/10572.txt rename to servers/server508/data/mapdata/10572.txt diff --git a/server508/data/mapdata/10577.txt b/servers/server508/data/mapdata/10577.txt similarity index 100% rename from server508/data/mapdata/10577.txt rename to servers/server508/data/mapdata/10577.txt diff --git a/server508/data/mapdata/10578.txt b/servers/server508/data/mapdata/10578.txt similarity index 100% rename from server508/data/mapdata/10578.txt rename to servers/server508/data/mapdata/10578.txt diff --git a/server508/data/mapdata/10579.txt b/servers/server508/data/mapdata/10579.txt similarity index 100% rename from server508/data/mapdata/10579.txt rename to servers/server508/data/mapdata/10579.txt diff --git a/server508/data/mapdata/10637.txt b/servers/server508/data/mapdata/10637.txt similarity index 100% rename from server508/data/mapdata/10637.txt rename to servers/server508/data/mapdata/10637.txt diff --git a/server508/data/mapdata/10638.txt b/servers/server508/data/mapdata/10638.txt similarity index 100% rename from server508/data/mapdata/10638.txt rename to servers/server508/data/mapdata/10638.txt diff --git a/server508/data/mapdata/10639.txt b/servers/server508/data/mapdata/10639.txt similarity index 100% rename from server508/data/mapdata/10639.txt rename to servers/server508/data/mapdata/10639.txt diff --git a/server508/data/mapdata/10646.txt b/servers/server508/data/mapdata/10646.txt similarity index 100% rename from server508/data/mapdata/10646.txt rename to servers/server508/data/mapdata/10646.txt diff --git a/server508/data/mapdata/10647.txt b/servers/server508/data/mapdata/10647.txt similarity index 100% rename from server508/data/mapdata/10647.txt rename to servers/server508/data/mapdata/10647.txt diff --git a/server508/data/mapdata/10648.txt b/servers/server508/data/mapdata/10648.txt similarity index 100% rename from server508/data/mapdata/10648.txt rename to servers/server508/data/mapdata/10648.txt diff --git a/server508/data/mapdata/10649.txt b/servers/server508/data/mapdata/10649.txt similarity index 100% rename from server508/data/mapdata/10649.txt rename to servers/server508/data/mapdata/10649.txt diff --git a/server508/data/mapdata/10655.txt b/servers/server508/data/mapdata/10655.txt similarity index 100% rename from server508/data/mapdata/10655.txt rename to servers/server508/data/mapdata/10655.txt diff --git a/server508/data/mapdata/10656.txt b/servers/server508/data/mapdata/10656.txt similarity index 100% rename from server508/data/mapdata/10656.txt rename to servers/server508/data/mapdata/10656.txt diff --git a/server508/data/mapdata/10657.txt b/servers/server508/data/mapdata/10657.txt similarity index 100% rename from server508/data/mapdata/10657.txt rename to servers/server508/data/mapdata/10657.txt diff --git a/server508/data/mapdata/10792.txt b/servers/server508/data/mapdata/10792.txt similarity index 100% rename from server508/data/mapdata/10792.txt rename to servers/server508/data/mapdata/10792.txt diff --git a/server508/data/mapdata/10793.txt b/servers/server508/data/mapdata/10793.txt similarity index 100% rename from server508/data/mapdata/10793.txt rename to servers/server508/data/mapdata/10793.txt diff --git a/server508/data/mapdata/10794.txt b/servers/server508/data/mapdata/10794.txt similarity index 100% rename from server508/data/mapdata/10794.txt rename to servers/server508/data/mapdata/10794.txt diff --git a/server508/data/mapdata/10795.txt b/servers/server508/data/mapdata/10795.txt similarity index 100% rename from server508/data/mapdata/10795.txt rename to servers/server508/data/mapdata/10795.txt diff --git a/server508/data/mapdata/10796.txt b/servers/server508/data/mapdata/10796.txt similarity index 100% rename from server508/data/mapdata/10796.txt rename to servers/server508/data/mapdata/10796.txt diff --git a/server508/data/mapdata/10797.txt b/servers/server508/data/mapdata/10797.txt similarity index 100% rename from server508/data/mapdata/10797.txt rename to servers/server508/data/mapdata/10797.txt diff --git a/server508/data/mapdata/10798.txt b/servers/server508/data/mapdata/10798.txt similarity index 100% rename from server508/data/mapdata/10798.txt rename to servers/server508/data/mapdata/10798.txt diff --git a/server508/data/mapdata/10799.txt b/servers/server508/data/mapdata/10799.txt similarity index 100% rename from server508/data/mapdata/10799.txt rename to servers/server508/data/mapdata/10799.txt diff --git a/server508/data/mapdata/10800.txt b/servers/server508/data/mapdata/10800.txt similarity index 100% rename from server508/data/mapdata/10800.txt rename to servers/server508/data/mapdata/10800.txt diff --git a/server508/data/mapdata/10801.txt b/servers/server508/data/mapdata/10801.txt similarity index 100% rename from server508/data/mapdata/10801.txt rename to servers/server508/data/mapdata/10801.txt diff --git a/server508/data/mapdata/10802.txt b/servers/server508/data/mapdata/10802.txt similarity index 100% rename from server508/data/mapdata/10802.txt rename to servers/server508/data/mapdata/10802.txt diff --git a/server508/data/mapdata/10803.txt b/servers/server508/data/mapdata/10803.txt similarity index 100% rename from server508/data/mapdata/10803.txt rename to servers/server508/data/mapdata/10803.txt diff --git a/server508/data/mapdata/10804.txt b/servers/server508/data/mapdata/10804.txt similarity index 100% rename from server508/data/mapdata/10804.txt rename to servers/server508/data/mapdata/10804.txt diff --git a/server508/data/mapdata/10805.txt b/servers/server508/data/mapdata/10805.txt similarity index 100% rename from server508/data/mapdata/10805.txt rename to servers/server508/data/mapdata/10805.txt diff --git a/server508/data/mapdata/10806.txt b/servers/server508/data/mapdata/10806.txt similarity index 100% rename from server508/data/mapdata/10806.txt rename to servers/server508/data/mapdata/10806.txt diff --git a/server508/data/mapdata/10807.txt b/servers/server508/data/mapdata/10807.txt similarity index 100% rename from server508/data/mapdata/10807.txt rename to servers/server508/data/mapdata/10807.txt diff --git a/server508/data/mapdata/10808.txt b/servers/server508/data/mapdata/10808.txt similarity index 100% rename from server508/data/mapdata/10808.txt rename to servers/server508/data/mapdata/10808.txt diff --git a/server508/data/mapdata/10809.txt b/servers/server508/data/mapdata/10809.txt similarity index 100% rename from server508/data/mapdata/10809.txt rename to servers/server508/data/mapdata/10809.txt diff --git a/server508/data/mapdata/10810.txt b/servers/server508/data/mapdata/10810.txt similarity index 100% rename from server508/data/mapdata/10810.txt rename to servers/server508/data/mapdata/10810.txt diff --git a/server508/data/mapdata/10811.txt b/servers/server508/data/mapdata/10811.txt similarity index 100% rename from server508/data/mapdata/10811.txt rename to servers/server508/data/mapdata/10811.txt diff --git a/server508/data/mapdata/10812.txt b/servers/server508/data/mapdata/10812.txt similarity index 100% rename from server508/data/mapdata/10812.txt rename to servers/server508/data/mapdata/10812.txt diff --git a/server508/data/mapdata/10813.txt b/servers/server508/data/mapdata/10813.txt similarity index 100% rename from server508/data/mapdata/10813.txt rename to servers/server508/data/mapdata/10813.txt diff --git a/server508/data/mapdata/10814.txt b/servers/server508/data/mapdata/10814.txt similarity index 100% rename from server508/data/mapdata/10814.txt rename to servers/server508/data/mapdata/10814.txt diff --git a/server508/data/mapdata/10815.txt b/servers/server508/data/mapdata/10815.txt similarity index 100% rename from server508/data/mapdata/10815.txt rename to servers/server508/data/mapdata/10815.txt diff --git a/server508/data/mapdata/10821.txt b/servers/server508/data/mapdata/10821.txt similarity index 100% rename from server508/data/mapdata/10821.txt rename to servers/server508/data/mapdata/10821.txt diff --git a/server508/data/mapdata/10822.txt b/servers/server508/data/mapdata/10822.txt similarity index 100% rename from server508/data/mapdata/10822.txt rename to servers/server508/data/mapdata/10822.txt diff --git a/server508/data/mapdata/10823.txt b/servers/server508/data/mapdata/10823.txt similarity index 100% rename from server508/data/mapdata/10823.txt rename to servers/server508/data/mapdata/10823.txt diff --git a/server508/data/mapdata/10826.txt b/servers/server508/data/mapdata/10826.txt similarity index 100% rename from server508/data/mapdata/10826.txt rename to servers/server508/data/mapdata/10826.txt diff --git a/server508/data/mapdata/10827.txt b/servers/server508/data/mapdata/10827.txt similarity index 100% rename from server508/data/mapdata/10827.txt rename to servers/server508/data/mapdata/10827.txt diff --git a/server508/data/mapdata/10828.txt b/servers/server508/data/mapdata/10828.txt similarity index 100% rename from server508/data/mapdata/10828.txt rename to servers/server508/data/mapdata/10828.txt diff --git a/server508/data/mapdata/10836.txt b/servers/server508/data/mapdata/10836.txt similarity index 100% rename from server508/data/mapdata/10836.txt rename to servers/server508/data/mapdata/10836.txt diff --git a/server508/data/mapdata/10837.txt b/servers/server508/data/mapdata/10837.txt similarity index 100% rename from server508/data/mapdata/10837.txt rename to servers/server508/data/mapdata/10837.txt diff --git a/server508/data/mapdata/10838.txt b/servers/server508/data/mapdata/10838.txt similarity index 100% rename from server508/data/mapdata/10838.txt rename to servers/server508/data/mapdata/10838.txt diff --git a/server508/data/mapdata/10893.txt b/servers/server508/data/mapdata/10893.txt similarity index 100% rename from server508/data/mapdata/10893.txt rename to servers/server508/data/mapdata/10893.txt diff --git a/server508/data/mapdata/10894.txt b/servers/server508/data/mapdata/10894.txt similarity index 100% rename from server508/data/mapdata/10894.txt rename to servers/server508/data/mapdata/10894.txt diff --git a/server508/data/mapdata/10895.txt b/servers/server508/data/mapdata/10895.txt similarity index 100% rename from server508/data/mapdata/10895.txt rename to servers/server508/data/mapdata/10895.txt diff --git a/server508/data/mapdata/10902.txt b/servers/server508/data/mapdata/10902.txt similarity index 100% rename from server508/data/mapdata/10902.txt rename to servers/server508/data/mapdata/10902.txt diff --git a/server508/data/mapdata/10903.txt b/servers/server508/data/mapdata/10903.txt similarity index 100% rename from server508/data/mapdata/10903.txt rename to servers/server508/data/mapdata/10903.txt diff --git a/server508/data/mapdata/10904.txt b/servers/server508/data/mapdata/10904.txt similarity index 100% rename from server508/data/mapdata/10904.txt rename to servers/server508/data/mapdata/10904.txt diff --git a/server508/data/mapdata/10905.txt b/servers/server508/data/mapdata/10905.txt similarity index 100% rename from server508/data/mapdata/10905.txt rename to servers/server508/data/mapdata/10905.txt diff --git a/server508/data/mapdata/10907.txt b/servers/server508/data/mapdata/10907.txt similarity index 100% rename from server508/data/mapdata/10907.txt rename to servers/server508/data/mapdata/10907.txt diff --git a/server508/data/mapdata/10908.txt b/servers/server508/data/mapdata/10908.txt similarity index 100% rename from server508/data/mapdata/10908.txt rename to servers/server508/data/mapdata/10908.txt diff --git a/server508/data/mapdata/10909.txt b/servers/server508/data/mapdata/10909.txt similarity index 100% rename from server508/data/mapdata/10909.txt rename to servers/server508/data/mapdata/10909.txt diff --git a/server508/data/mapdata/10910.txt b/servers/server508/data/mapdata/10910.txt similarity index 100% rename from server508/data/mapdata/10910.txt rename to servers/server508/data/mapdata/10910.txt diff --git a/server508/data/mapdata/10911.txt b/servers/server508/data/mapdata/10911.txt similarity index 100% rename from server508/data/mapdata/10911.txt rename to servers/server508/data/mapdata/10911.txt diff --git a/server508/data/mapdata/11049.txt b/servers/server508/data/mapdata/11049.txt similarity index 100% rename from server508/data/mapdata/11049.txt rename to servers/server508/data/mapdata/11049.txt diff --git a/server508/data/mapdata/11050.txt b/servers/server508/data/mapdata/11050.txt similarity index 100% rename from server508/data/mapdata/11050.txt rename to servers/server508/data/mapdata/11050.txt diff --git a/server508/data/mapdata/11051.txt b/servers/server508/data/mapdata/11051.txt similarity index 100% rename from server508/data/mapdata/11051.txt rename to servers/server508/data/mapdata/11051.txt diff --git a/server508/data/mapdata/11052.txt b/servers/server508/data/mapdata/11052.txt similarity index 100% rename from server508/data/mapdata/11052.txt rename to servers/server508/data/mapdata/11052.txt diff --git a/server508/data/mapdata/11053.txt b/servers/server508/data/mapdata/11053.txt similarity index 100% rename from server508/data/mapdata/11053.txt rename to servers/server508/data/mapdata/11053.txt diff --git a/server508/data/mapdata/11054.txt b/servers/server508/data/mapdata/11054.txt similarity index 100% rename from server508/data/mapdata/11054.txt rename to servers/server508/data/mapdata/11054.txt diff --git a/server508/data/mapdata/11055.txt b/servers/server508/data/mapdata/11055.txt similarity index 100% rename from server508/data/mapdata/11055.txt rename to servers/server508/data/mapdata/11055.txt diff --git a/server508/data/mapdata/11056.txt b/servers/server508/data/mapdata/11056.txt similarity index 100% rename from server508/data/mapdata/11056.txt rename to servers/server508/data/mapdata/11056.txt diff --git a/server508/data/mapdata/11057.txt b/servers/server508/data/mapdata/11057.txt similarity index 100% rename from server508/data/mapdata/11057.txt rename to servers/server508/data/mapdata/11057.txt diff --git a/server508/data/mapdata/11058.txt b/servers/server508/data/mapdata/11058.txt similarity index 100% rename from server508/data/mapdata/11058.txt rename to servers/server508/data/mapdata/11058.txt diff --git a/server508/data/mapdata/11059.txt b/servers/server508/data/mapdata/11059.txt similarity index 100% rename from server508/data/mapdata/11059.txt rename to servers/server508/data/mapdata/11059.txt diff --git a/server508/data/mapdata/11060.txt b/servers/server508/data/mapdata/11060.txt similarity index 100% rename from server508/data/mapdata/11060.txt rename to servers/server508/data/mapdata/11060.txt diff --git a/server508/data/mapdata/11061.txt b/servers/server508/data/mapdata/11061.txt similarity index 100% rename from server508/data/mapdata/11061.txt rename to servers/server508/data/mapdata/11061.txt diff --git a/server508/data/mapdata/11062.txt b/servers/server508/data/mapdata/11062.txt similarity index 100% rename from server508/data/mapdata/11062.txt rename to servers/server508/data/mapdata/11062.txt diff --git a/server508/data/mapdata/11063.txt b/servers/server508/data/mapdata/11063.txt similarity index 100% rename from server508/data/mapdata/11063.txt rename to servers/server508/data/mapdata/11063.txt diff --git a/server508/data/mapdata/11064.txt b/servers/server508/data/mapdata/11064.txt similarity index 100% rename from server508/data/mapdata/11064.txt rename to servers/server508/data/mapdata/11064.txt diff --git a/server508/data/mapdata/11065.txt b/servers/server508/data/mapdata/11065.txt similarity index 100% rename from server508/data/mapdata/11065.txt rename to servers/server508/data/mapdata/11065.txt diff --git a/server508/data/mapdata/11066.txt b/servers/server508/data/mapdata/11066.txt similarity index 100% rename from server508/data/mapdata/11066.txt rename to servers/server508/data/mapdata/11066.txt diff --git a/server508/data/mapdata/11067.txt b/servers/server508/data/mapdata/11067.txt similarity index 100% rename from server508/data/mapdata/11067.txt rename to servers/server508/data/mapdata/11067.txt diff --git a/server508/data/mapdata/11068.txt b/servers/server508/data/mapdata/11068.txt similarity index 100% rename from server508/data/mapdata/11068.txt rename to servers/server508/data/mapdata/11068.txt diff --git a/server508/data/mapdata/11082.txt b/servers/server508/data/mapdata/11082.txt similarity index 100% rename from server508/data/mapdata/11082.txt rename to servers/server508/data/mapdata/11082.txt diff --git a/server508/data/mapdata/11083.txt b/servers/server508/data/mapdata/11083.txt similarity index 100% rename from server508/data/mapdata/11083.txt rename to servers/server508/data/mapdata/11083.txt diff --git a/server508/data/mapdata/11084.txt b/servers/server508/data/mapdata/11084.txt similarity index 100% rename from server508/data/mapdata/11084.txt rename to servers/server508/data/mapdata/11084.txt diff --git a/server508/data/mapdata/11089.txt b/servers/server508/data/mapdata/11089.txt similarity index 100% rename from server508/data/mapdata/11089.txt rename to servers/server508/data/mapdata/11089.txt diff --git a/server508/data/mapdata/11090.txt b/servers/server508/data/mapdata/11090.txt similarity index 100% rename from server508/data/mapdata/11090.txt rename to servers/server508/data/mapdata/11090.txt diff --git a/server508/data/mapdata/11091.txt b/servers/server508/data/mapdata/11091.txt similarity index 100% rename from server508/data/mapdata/11091.txt rename to servers/server508/data/mapdata/11091.txt diff --git a/server508/data/mapdata/11092.txt b/servers/server508/data/mapdata/11092.txt similarity index 100% rename from server508/data/mapdata/11092.txt rename to servers/server508/data/mapdata/11092.txt diff --git a/server508/data/mapdata/11093.txt b/servers/server508/data/mapdata/11093.txt similarity index 100% rename from server508/data/mapdata/11093.txt rename to servers/server508/data/mapdata/11093.txt diff --git a/server508/data/mapdata/11094.txt b/servers/server508/data/mapdata/11094.txt similarity index 100% rename from server508/data/mapdata/11094.txt rename to servers/server508/data/mapdata/11094.txt diff --git a/server508/data/mapdata/11149.txt b/servers/server508/data/mapdata/11149.txt similarity index 100% rename from server508/data/mapdata/11149.txt rename to servers/server508/data/mapdata/11149.txt diff --git a/server508/data/mapdata/11150.txt b/servers/server508/data/mapdata/11150.txt similarity index 100% rename from server508/data/mapdata/11150.txt rename to servers/server508/data/mapdata/11150.txt diff --git a/server508/data/mapdata/11151.txt b/servers/server508/data/mapdata/11151.txt similarity index 100% rename from server508/data/mapdata/11151.txt rename to servers/server508/data/mapdata/11151.txt diff --git a/server508/data/mapdata/11156.txt b/servers/server508/data/mapdata/11156.txt similarity index 100% rename from server508/data/mapdata/11156.txt rename to servers/server508/data/mapdata/11156.txt diff --git a/server508/data/mapdata/11157.txt b/servers/server508/data/mapdata/11157.txt similarity index 100% rename from server508/data/mapdata/11157.txt rename to servers/server508/data/mapdata/11157.txt diff --git a/server508/data/mapdata/11158.txt b/servers/server508/data/mapdata/11158.txt similarity index 100% rename from server508/data/mapdata/11158.txt rename to servers/server508/data/mapdata/11158.txt diff --git a/server508/data/mapdata/11159.txt b/servers/server508/data/mapdata/11159.txt similarity index 100% rename from server508/data/mapdata/11159.txt rename to servers/server508/data/mapdata/11159.txt diff --git a/server508/data/mapdata/11160.txt b/servers/server508/data/mapdata/11160.txt similarity index 100% rename from server508/data/mapdata/11160.txt rename to servers/server508/data/mapdata/11160.txt diff --git a/server508/data/mapdata/11161.txt b/servers/server508/data/mapdata/11161.txt similarity index 100% rename from server508/data/mapdata/11161.txt rename to servers/server508/data/mapdata/11161.txt diff --git a/server508/data/mapdata/11162.txt b/servers/server508/data/mapdata/11162.txt similarity index 100% rename from server508/data/mapdata/11162.txt rename to servers/server508/data/mapdata/11162.txt diff --git a/server508/data/mapdata/11163.txt b/servers/server508/data/mapdata/11163.txt similarity index 100% rename from server508/data/mapdata/11163.txt rename to servers/server508/data/mapdata/11163.txt diff --git a/server508/data/mapdata/11164.txt b/servers/server508/data/mapdata/11164.txt similarity index 100% rename from server508/data/mapdata/11164.txt rename to servers/server508/data/mapdata/11164.txt diff --git a/server508/data/mapdata/11165.txt b/servers/server508/data/mapdata/11165.txt similarity index 100% rename from server508/data/mapdata/11165.txt rename to servers/server508/data/mapdata/11165.txt diff --git a/server508/data/mapdata/11166.txt b/servers/server508/data/mapdata/11166.txt similarity index 100% rename from server508/data/mapdata/11166.txt rename to servers/server508/data/mapdata/11166.txt diff --git a/server508/data/mapdata/11167.txt b/servers/server508/data/mapdata/11167.txt similarity index 100% rename from server508/data/mapdata/11167.txt rename to servers/server508/data/mapdata/11167.txt diff --git a/server508/data/mapdata/11305.txt b/servers/server508/data/mapdata/11305.txt similarity index 100% rename from server508/data/mapdata/11305.txt rename to servers/server508/data/mapdata/11305.txt diff --git a/server508/data/mapdata/11306.txt b/servers/server508/data/mapdata/11306.txt similarity index 100% rename from server508/data/mapdata/11306.txt rename to servers/server508/data/mapdata/11306.txt diff --git a/server508/data/mapdata/11307.txt b/servers/server508/data/mapdata/11307.txt similarity index 100% rename from server508/data/mapdata/11307.txt rename to servers/server508/data/mapdata/11307.txt diff --git a/server508/data/mapdata/11308.txt b/servers/server508/data/mapdata/11308.txt similarity index 100% rename from server508/data/mapdata/11308.txt rename to servers/server508/data/mapdata/11308.txt diff --git a/server508/data/mapdata/11309.txt b/servers/server508/data/mapdata/11309.txt similarity index 100% rename from server508/data/mapdata/11309.txt rename to servers/server508/data/mapdata/11309.txt diff --git a/server508/data/mapdata/11310.txt b/servers/server508/data/mapdata/11310.txt similarity index 100% rename from server508/data/mapdata/11310.txt rename to servers/server508/data/mapdata/11310.txt diff --git a/server508/data/mapdata/11311.txt b/servers/server508/data/mapdata/11311.txt similarity index 100% rename from server508/data/mapdata/11311.txt rename to servers/server508/data/mapdata/11311.txt diff --git a/server508/data/mapdata/11312.txt b/servers/server508/data/mapdata/11312.txt similarity index 100% rename from server508/data/mapdata/11312.txt rename to servers/server508/data/mapdata/11312.txt diff --git a/server508/data/mapdata/11313.txt b/servers/server508/data/mapdata/11313.txt similarity index 100% rename from server508/data/mapdata/11313.txt rename to servers/server508/data/mapdata/11313.txt diff --git a/server508/data/mapdata/11314.txt b/servers/server508/data/mapdata/11314.txt similarity index 100% rename from server508/data/mapdata/11314.txt rename to servers/server508/data/mapdata/11314.txt diff --git a/server508/data/mapdata/11315.txt b/servers/server508/data/mapdata/11315.txt similarity index 100% rename from server508/data/mapdata/11315.txt rename to servers/server508/data/mapdata/11315.txt diff --git a/server508/data/mapdata/11316.txt b/servers/server508/data/mapdata/11316.txt similarity index 100% rename from server508/data/mapdata/11316.txt rename to servers/server508/data/mapdata/11316.txt diff --git a/server508/data/mapdata/11317.txt b/servers/server508/data/mapdata/11317.txt similarity index 100% rename from server508/data/mapdata/11317.txt rename to servers/server508/data/mapdata/11317.txt diff --git a/server508/data/mapdata/11318.txt b/servers/server508/data/mapdata/11318.txt similarity index 100% rename from server508/data/mapdata/11318.txt rename to servers/server508/data/mapdata/11318.txt diff --git a/server508/data/mapdata/11319.txt b/servers/server508/data/mapdata/11319.txt similarity index 100% rename from server508/data/mapdata/11319.txt rename to servers/server508/data/mapdata/11319.txt diff --git a/server508/data/mapdata/11320.txt b/servers/server508/data/mapdata/11320.txt similarity index 100% rename from server508/data/mapdata/11320.txt rename to servers/server508/data/mapdata/11320.txt diff --git a/server508/data/mapdata/11321.txt b/servers/server508/data/mapdata/11321.txt similarity index 100% rename from server508/data/mapdata/11321.txt rename to servers/server508/data/mapdata/11321.txt diff --git a/server508/data/mapdata/11322.txt b/servers/server508/data/mapdata/11322.txt similarity index 100% rename from server508/data/mapdata/11322.txt rename to servers/server508/data/mapdata/11322.txt diff --git a/server508/data/mapdata/11323.txt b/servers/server508/data/mapdata/11323.txt similarity index 100% rename from server508/data/mapdata/11323.txt rename to servers/server508/data/mapdata/11323.txt diff --git a/server508/data/mapdata/11338.txt b/servers/server508/data/mapdata/11338.txt similarity index 100% rename from server508/data/mapdata/11338.txt rename to servers/server508/data/mapdata/11338.txt diff --git a/server508/data/mapdata/11339.txt b/servers/server508/data/mapdata/11339.txt similarity index 100% rename from server508/data/mapdata/11339.txt rename to servers/server508/data/mapdata/11339.txt diff --git a/server508/data/mapdata/11340.txt b/servers/server508/data/mapdata/11340.txt similarity index 100% rename from server508/data/mapdata/11340.txt rename to servers/server508/data/mapdata/11340.txt diff --git a/server508/data/mapdata/11345.txt b/servers/server508/data/mapdata/11345.txt similarity index 100% rename from server508/data/mapdata/11345.txt rename to servers/server508/data/mapdata/11345.txt diff --git a/server508/data/mapdata/11346.txt b/servers/server508/data/mapdata/11346.txt similarity index 100% rename from server508/data/mapdata/11346.txt rename to servers/server508/data/mapdata/11346.txt diff --git a/server508/data/mapdata/11347.txt b/servers/server508/data/mapdata/11347.txt similarity index 100% rename from server508/data/mapdata/11347.txt rename to servers/server508/data/mapdata/11347.txt diff --git a/server508/data/mapdata/11348.txt b/servers/server508/data/mapdata/11348.txt similarity index 100% rename from server508/data/mapdata/11348.txt rename to servers/server508/data/mapdata/11348.txt diff --git a/server508/data/mapdata/11349.txt b/servers/server508/data/mapdata/11349.txt similarity index 100% rename from server508/data/mapdata/11349.txt rename to servers/server508/data/mapdata/11349.txt diff --git a/server508/data/mapdata/11350.txt b/servers/server508/data/mapdata/11350.txt similarity index 100% rename from server508/data/mapdata/11350.txt rename to servers/server508/data/mapdata/11350.txt diff --git a/server508/data/mapdata/11405.txt b/servers/server508/data/mapdata/11405.txt similarity index 100% rename from server508/data/mapdata/11405.txt rename to servers/server508/data/mapdata/11405.txt diff --git a/server508/data/mapdata/11406.txt b/servers/server508/data/mapdata/11406.txt similarity index 100% rename from server508/data/mapdata/11406.txt rename to servers/server508/data/mapdata/11406.txt diff --git a/server508/data/mapdata/11407.txt b/servers/server508/data/mapdata/11407.txt similarity index 100% rename from server508/data/mapdata/11407.txt rename to servers/server508/data/mapdata/11407.txt diff --git a/server508/data/mapdata/11412.txt b/servers/server508/data/mapdata/11412.txt similarity index 100% rename from server508/data/mapdata/11412.txt rename to servers/server508/data/mapdata/11412.txt diff --git a/server508/data/mapdata/11413.txt b/servers/server508/data/mapdata/11413.txt similarity index 100% rename from server508/data/mapdata/11413.txt rename to servers/server508/data/mapdata/11413.txt diff --git a/server508/data/mapdata/11414.txt b/servers/server508/data/mapdata/11414.txt similarity index 100% rename from server508/data/mapdata/11414.txt rename to servers/server508/data/mapdata/11414.txt diff --git a/server508/data/mapdata/11415.txt b/servers/server508/data/mapdata/11415.txt similarity index 100% rename from server508/data/mapdata/11415.txt rename to servers/server508/data/mapdata/11415.txt diff --git a/server508/data/mapdata/11416.txt b/servers/server508/data/mapdata/11416.txt similarity index 100% rename from server508/data/mapdata/11416.txt rename to servers/server508/data/mapdata/11416.txt diff --git a/server508/data/mapdata/11417.txt b/servers/server508/data/mapdata/11417.txt similarity index 100% rename from server508/data/mapdata/11417.txt rename to servers/server508/data/mapdata/11417.txt diff --git a/server508/data/mapdata/11418.txt b/servers/server508/data/mapdata/11418.txt similarity index 100% rename from server508/data/mapdata/11418.txt rename to servers/server508/data/mapdata/11418.txt diff --git a/server508/data/mapdata/11419.txt b/servers/server508/data/mapdata/11419.txt similarity index 100% rename from server508/data/mapdata/11419.txt rename to servers/server508/data/mapdata/11419.txt diff --git a/server508/data/mapdata/11420.txt b/servers/server508/data/mapdata/11420.txt similarity index 100% rename from server508/data/mapdata/11420.txt rename to servers/server508/data/mapdata/11420.txt diff --git a/server508/data/mapdata/11421.txt b/servers/server508/data/mapdata/11421.txt similarity index 100% rename from server508/data/mapdata/11421.txt rename to servers/server508/data/mapdata/11421.txt diff --git a/server508/data/mapdata/11422.txt b/servers/server508/data/mapdata/11422.txt similarity index 100% rename from server508/data/mapdata/11422.txt rename to servers/server508/data/mapdata/11422.txt diff --git a/server508/data/mapdata/11423.txt b/servers/server508/data/mapdata/11423.txt similarity index 100% rename from server508/data/mapdata/11423.txt rename to servers/server508/data/mapdata/11423.txt diff --git a/server508/data/mapdata/11561.txt b/servers/server508/data/mapdata/11561.txt similarity index 100% rename from server508/data/mapdata/11561.txt rename to servers/server508/data/mapdata/11561.txt diff --git a/server508/data/mapdata/11562.txt b/servers/server508/data/mapdata/11562.txt similarity index 100% rename from server508/data/mapdata/11562.txt rename to servers/server508/data/mapdata/11562.txt diff --git a/server508/data/mapdata/11563.txt b/servers/server508/data/mapdata/11563.txt similarity index 100% rename from server508/data/mapdata/11563.txt rename to servers/server508/data/mapdata/11563.txt diff --git a/server508/data/mapdata/11565.txt b/servers/server508/data/mapdata/11565.txt similarity index 100% rename from server508/data/mapdata/11565.txt rename to servers/server508/data/mapdata/11565.txt diff --git a/server508/data/mapdata/11566.txt b/servers/server508/data/mapdata/11566.txt similarity index 100% rename from server508/data/mapdata/11566.txt rename to servers/server508/data/mapdata/11566.txt diff --git a/server508/data/mapdata/11567.txt b/servers/server508/data/mapdata/11567.txt similarity index 100% rename from server508/data/mapdata/11567.txt rename to servers/server508/data/mapdata/11567.txt diff --git a/server508/data/mapdata/11568.txt b/servers/server508/data/mapdata/11568.txt similarity index 100% rename from server508/data/mapdata/11568.txt rename to servers/server508/data/mapdata/11568.txt diff --git a/server508/data/mapdata/11569.txt b/servers/server508/data/mapdata/11569.txt similarity index 100% rename from server508/data/mapdata/11569.txt rename to servers/server508/data/mapdata/11569.txt diff --git a/server508/data/mapdata/11570.txt b/servers/server508/data/mapdata/11570.txt similarity index 100% rename from server508/data/mapdata/11570.txt rename to servers/server508/data/mapdata/11570.txt diff --git a/server508/data/mapdata/11571.txt b/servers/server508/data/mapdata/11571.txt similarity index 100% rename from server508/data/mapdata/11571.txt rename to servers/server508/data/mapdata/11571.txt diff --git a/server508/data/mapdata/11572.txt b/servers/server508/data/mapdata/11572.txt similarity index 100% rename from server508/data/mapdata/11572.txt rename to servers/server508/data/mapdata/11572.txt diff --git a/server508/data/mapdata/11573.txt b/servers/server508/data/mapdata/11573.txt similarity index 100% rename from server508/data/mapdata/11573.txt rename to servers/server508/data/mapdata/11573.txt diff --git a/server508/data/mapdata/11574.txt b/servers/server508/data/mapdata/11574.txt similarity index 100% rename from server508/data/mapdata/11574.txt rename to servers/server508/data/mapdata/11574.txt diff --git a/server508/data/mapdata/11575.txt b/servers/server508/data/mapdata/11575.txt similarity index 100% rename from server508/data/mapdata/11575.txt rename to servers/server508/data/mapdata/11575.txt diff --git a/server508/data/mapdata/11576.txt b/servers/server508/data/mapdata/11576.txt similarity index 100% rename from server508/data/mapdata/11576.txt rename to servers/server508/data/mapdata/11576.txt diff --git a/server508/data/mapdata/11577.txt b/servers/server508/data/mapdata/11577.txt similarity index 100% rename from server508/data/mapdata/11577.txt rename to servers/server508/data/mapdata/11577.txt diff --git a/server508/data/mapdata/11578.txt b/servers/server508/data/mapdata/11578.txt similarity index 100% rename from server508/data/mapdata/11578.txt rename to servers/server508/data/mapdata/11578.txt diff --git a/server508/data/mapdata/11579.txt b/servers/server508/data/mapdata/11579.txt similarity index 100% rename from server508/data/mapdata/11579.txt rename to servers/server508/data/mapdata/11579.txt diff --git a/server508/data/mapdata/11580.txt b/servers/server508/data/mapdata/11580.txt similarity index 100% rename from server508/data/mapdata/11580.txt rename to servers/server508/data/mapdata/11580.txt diff --git a/server508/data/mapdata/11581.txt b/servers/server508/data/mapdata/11581.txt similarity index 100% rename from server508/data/mapdata/11581.txt rename to servers/server508/data/mapdata/11581.txt diff --git a/server508/data/mapdata/11582.txt b/servers/server508/data/mapdata/11582.txt similarity index 100% rename from server508/data/mapdata/11582.txt rename to servers/server508/data/mapdata/11582.txt diff --git a/server508/data/mapdata/11592.txt b/servers/server508/data/mapdata/11592.txt similarity index 100% rename from server508/data/mapdata/11592.txt rename to servers/server508/data/mapdata/11592.txt diff --git a/server508/data/mapdata/11593.txt b/servers/server508/data/mapdata/11593.txt similarity index 100% rename from server508/data/mapdata/11593.txt rename to servers/server508/data/mapdata/11593.txt diff --git a/server508/data/mapdata/11594.txt b/servers/server508/data/mapdata/11594.txt similarity index 100% rename from server508/data/mapdata/11594.txt rename to servers/server508/data/mapdata/11594.txt diff --git a/server508/data/mapdata/11595.txt b/servers/server508/data/mapdata/11595.txt similarity index 100% rename from server508/data/mapdata/11595.txt rename to servers/server508/data/mapdata/11595.txt diff --git a/server508/data/mapdata/11596.txt b/servers/server508/data/mapdata/11596.txt similarity index 100% rename from server508/data/mapdata/11596.txt rename to servers/server508/data/mapdata/11596.txt diff --git a/server508/data/mapdata/11601.txt b/servers/server508/data/mapdata/11601.txt similarity index 100% rename from server508/data/mapdata/11601.txt rename to servers/server508/data/mapdata/11601.txt diff --git a/server508/data/mapdata/11602.txt b/servers/server508/data/mapdata/11602.txt similarity index 100% rename from server508/data/mapdata/11602.txt rename to servers/server508/data/mapdata/11602.txt diff --git a/server508/data/mapdata/11603.txt b/servers/server508/data/mapdata/11603.txt similarity index 100% rename from server508/data/mapdata/11603.txt rename to servers/server508/data/mapdata/11603.txt diff --git a/server508/data/mapdata/11604.txt b/servers/server508/data/mapdata/11604.txt similarity index 100% rename from server508/data/mapdata/11604.txt rename to servers/server508/data/mapdata/11604.txt diff --git a/server508/data/mapdata/11605.txt b/servers/server508/data/mapdata/11605.txt similarity index 100% rename from server508/data/mapdata/11605.txt rename to servers/server508/data/mapdata/11605.txt diff --git a/server508/data/mapdata/11606.txt b/servers/server508/data/mapdata/11606.txt similarity index 100% rename from server508/data/mapdata/11606.txt rename to servers/server508/data/mapdata/11606.txt diff --git a/server508/data/mapdata/11608.txt b/servers/server508/data/mapdata/11608.txt similarity index 100% rename from server508/data/mapdata/11608.txt rename to servers/server508/data/mapdata/11608.txt diff --git a/server508/data/mapdata/11609.txt b/servers/server508/data/mapdata/11609.txt similarity index 100% rename from server508/data/mapdata/11609.txt rename to servers/server508/data/mapdata/11609.txt diff --git a/server508/data/mapdata/11610.txt b/servers/server508/data/mapdata/11610.txt similarity index 100% rename from server508/data/mapdata/11610.txt rename to servers/server508/data/mapdata/11610.txt diff --git a/server508/data/mapdata/11668.txt b/servers/server508/data/mapdata/11668.txt similarity index 100% rename from server508/data/mapdata/11668.txt rename to servers/server508/data/mapdata/11668.txt diff --git a/server508/data/mapdata/11669.txt b/servers/server508/data/mapdata/11669.txt similarity index 100% rename from server508/data/mapdata/11669.txt rename to servers/server508/data/mapdata/11669.txt diff --git a/server508/data/mapdata/11670.txt b/servers/server508/data/mapdata/11670.txt similarity index 100% rename from server508/data/mapdata/11670.txt rename to servers/server508/data/mapdata/11670.txt diff --git a/server508/data/mapdata/11671.txt b/servers/server508/data/mapdata/11671.txt similarity index 100% rename from server508/data/mapdata/11671.txt rename to servers/server508/data/mapdata/11671.txt diff --git a/server508/data/mapdata/11672.txt b/servers/server508/data/mapdata/11672.txt similarity index 100% rename from server508/data/mapdata/11672.txt rename to servers/server508/data/mapdata/11672.txt diff --git a/server508/data/mapdata/11673.txt b/servers/server508/data/mapdata/11673.txt similarity index 100% rename from server508/data/mapdata/11673.txt rename to servers/server508/data/mapdata/11673.txt diff --git a/server508/data/mapdata/11674.txt b/servers/server508/data/mapdata/11674.txt similarity index 100% rename from server508/data/mapdata/11674.txt rename to servers/server508/data/mapdata/11674.txt diff --git a/server508/data/mapdata/11675.txt b/servers/server508/data/mapdata/11675.txt similarity index 100% rename from server508/data/mapdata/11675.txt rename to servers/server508/data/mapdata/11675.txt diff --git a/server508/data/mapdata/11817.txt b/servers/server508/data/mapdata/11817.txt similarity index 100% rename from server508/data/mapdata/11817.txt rename to servers/server508/data/mapdata/11817.txt diff --git a/server508/data/mapdata/11818.txt b/servers/server508/data/mapdata/11818.txt similarity index 100% rename from server508/data/mapdata/11818.txt rename to servers/server508/data/mapdata/11818.txt diff --git a/server508/data/mapdata/11819.txt b/servers/server508/data/mapdata/11819.txt similarity index 100% rename from server508/data/mapdata/11819.txt rename to servers/server508/data/mapdata/11819.txt diff --git a/server508/data/mapdata/11821.txt b/servers/server508/data/mapdata/11821.txt similarity index 100% rename from server508/data/mapdata/11821.txt rename to servers/server508/data/mapdata/11821.txt diff --git a/server508/data/mapdata/11822.txt b/servers/server508/data/mapdata/11822.txt similarity index 100% rename from server508/data/mapdata/11822.txt rename to servers/server508/data/mapdata/11822.txt diff --git a/server508/data/mapdata/11823.txt b/servers/server508/data/mapdata/11823.txt similarity index 100% rename from server508/data/mapdata/11823.txt rename to servers/server508/data/mapdata/11823.txt diff --git a/server508/data/mapdata/11824.txt b/servers/server508/data/mapdata/11824.txt similarity index 100% rename from server508/data/mapdata/11824.txt rename to servers/server508/data/mapdata/11824.txt diff --git a/server508/data/mapdata/11825.txt b/servers/server508/data/mapdata/11825.txt similarity index 100% rename from server508/data/mapdata/11825.txt rename to servers/server508/data/mapdata/11825.txt diff --git a/server508/data/mapdata/11826.txt b/servers/server508/data/mapdata/11826.txt similarity index 100% rename from server508/data/mapdata/11826.txt rename to servers/server508/data/mapdata/11826.txt diff --git a/server508/data/mapdata/11827.txt b/servers/server508/data/mapdata/11827.txt similarity index 100% rename from server508/data/mapdata/11827.txt rename to servers/server508/data/mapdata/11827.txt diff --git a/server508/data/mapdata/11828.txt b/servers/server508/data/mapdata/11828.txt similarity index 100% rename from server508/data/mapdata/11828.txt rename to servers/server508/data/mapdata/11828.txt diff --git a/server508/data/mapdata/11829.txt b/servers/server508/data/mapdata/11829.txt similarity index 100% rename from server508/data/mapdata/11829.txt rename to servers/server508/data/mapdata/11829.txt diff --git a/server508/data/mapdata/11830.txt b/servers/server508/data/mapdata/11830.txt similarity index 100% rename from server508/data/mapdata/11830.txt rename to servers/server508/data/mapdata/11830.txt diff --git a/server508/data/mapdata/11831.txt b/servers/server508/data/mapdata/11831.txt similarity index 100% rename from server508/data/mapdata/11831.txt rename to servers/server508/data/mapdata/11831.txt diff --git a/server508/data/mapdata/11832.txt b/servers/server508/data/mapdata/11832.txt similarity index 100% rename from server508/data/mapdata/11832.txt rename to servers/server508/data/mapdata/11832.txt diff --git a/server508/data/mapdata/11833.txt b/servers/server508/data/mapdata/11833.txt similarity index 100% rename from server508/data/mapdata/11833.txt rename to servers/server508/data/mapdata/11833.txt diff --git a/server508/data/mapdata/11834.txt b/servers/server508/data/mapdata/11834.txt similarity index 100% rename from server508/data/mapdata/11834.txt rename to servers/server508/data/mapdata/11834.txt diff --git a/server508/data/mapdata/11835.txt b/servers/server508/data/mapdata/11835.txt similarity index 100% rename from server508/data/mapdata/11835.txt rename to servers/server508/data/mapdata/11835.txt diff --git a/server508/data/mapdata/11836.txt b/servers/server508/data/mapdata/11836.txt similarity index 100% rename from server508/data/mapdata/11836.txt rename to servers/server508/data/mapdata/11836.txt diff --git a/server508/data/mapdata/11837.txt b/servers/server508/data/mapdata/11837.txt similarity index 100% rename from server508/data/mapdata/11837.txt rename to servers/server508/data/mapdata/11837.txt diff --git a/server508/data/mapdata/11838.txt b/servers/server508/data/mapdata/11838.txt similarity index 100% rename from server508/data/mapdata/11838.txt rename to servers/server508/data/mapdata/11838.txt diff --git a/server508/data/mapdata/11848.txt b/servers/server508/data/mapdata/11848.txt similarity index 100% rename from server508/data/mapdata/11848.txt rename to servers/server508/data/mapdata/11848.txt diff --git a/server508/data/mapdata/11849.txt b/servers/server508/data/mapdata/11849.txt similarity index 100% rename from server508/data/mapdata/11849.txt rename to servers/server508/data/mapdata/11849.txt diff --git a/server508/data/mapdata/11850.txt b/servers/server508/data/mapdata/11850.txt similarity index 100% rename from server508/data/mapdata/11850.txt rename to servers/server508/data/mapdata/11850.txt diff --git a/server508/data/mapdata/11851.txt b/servers/server508/data/mapdata/11851.txt similarity index 100% rename from server508/data/mapdata/11851.txt rename to servers/server508/data/mapdata/11851.txt diff --git a/server508/data/mapdata/11857.txt b/servers/server508/data/mapdata/11857.txt similarity index 100% rename from server508/data/mapdata/11857.txt rename to servers/server508/data/mapdata/11857.txt diff --git a/server508/data/mapdata/11858.txt b/servers/server508/data/mapdata/11858.txt similarity index 100% rename from server508/data/mapdata/11858.txt rename to servers/server508/data/mapdata/11858.txt diff --git a/server508/data/mapdata/11859.txt b/servers/server508/data/mapdata/11859.txt similarity index 100% rename from server508/data/mapdata/11859.txt rename to servers/server508/data/mapdata/11859.txt diff --git a/server508/data/mapdata/11860.txt b/servers/server508/data/mapdata/11860.txt similarity index 100% rename from server508/data/mapdata/11860.txt rename to servers/server508/data/mapdata/11860.txt diff --git a/server508/data/mapdata/11861.txt b/servers/server508/data/mapdata/11861.txt similarity index 100% rename from server508/data/mapdata/11861.txt rename to servers/server508/data/mapdata/11861.txt diff --git a/server508/data/mapdata/11862.txt b/servers/server508/data/mapdata/11862.txt similarity index 100% rename from server508/data/mapdata/11862.txt rename to servers/server508/data/mapdata/11862.txt diff --git a/server508/data/mapdata/11863.txt b/servers/server508/data/mapdata/11863.txt similarity index 100% rename from server508/data/mapdata/11863.txt rename to servers/server508/data/mapdata/11863.txt diff --git a/server508/data/mapdata/11864.txt b/servers/server508/data/mapdata/11864.txt similarity index 100% rename from server508/data/mapdata/11864.txt rename to servers/server508/data/mapdata/11864.txt diff --git a/server508/data/mapdata/11865.txt b/servers/server508/data/mapdata/11865.txt similarity index 100% rename from server508/data/mapdata/11865.txt rename to servers/server508/data/mapdata/11865.txt diff --git a/server508/data/mapdata/11866.txt b/servers/server508/data/mapdata/11866.txt similarity index 100% rename from server508/data/mapdata/11866.txt rename to servers/server508/data/mapdata/11866.txt diff --git a/server508/data/mapdata/11924.txt b/servers/server508/data/mapdata/11924.txt similarity index 100% rename from server508/data/mapdata/11924.txt rename to servers/server508/data/mapdata/11924.txt diff --git a/server508/data/mapdata/11925.txt b/servers/server508/data/mapdata/11925.txt similarity index 100% rename from server508/data/mapdata/11925.txt rename to servers/server508/data/mapdata/11925.txt diff --git a/server508/data/mapdata/11926.txt b/servers/server508/data/mapdata/11926.txt similarity index 100% rename from server508/data/mapdata/11926.txt rename to servers/server508/data/mapdata/11926.txt diff --git a/server508/data/mapdata/11927.txt b/servers/server508/data/mapdata/11927.txt similarity index 100% rename from server508/data/mapdata/11927.txt rename to servers/server508/data/mapdata/11927.txt diff --git a/server508/data/mapdata/11928.txt b/servers/server508/data/mapdata/11928.txt similarity index 100% rename from server508/data/mapdata/11928.txt rename to servers/server508/data/mapdata/11928.txt diff --git a/server508/data/mapdata/11929.txt b/servers/server508/data/mapdata/11929.txt similarity index 100% rename from server508/data/mapdata/11929.txt rename to servers/server508/data/mapdata/11929.txt diff --git a/server508/data/mapdata/11930.txt b/servers/server508/data/mapdata/11930.txt similarity index 100% rename from server508/data/mapdata/11930.txt rename to servers/server508/data/mapdata/11930.txt diff --git a/server508/data/mapdata/11931.txt b/servers/server508/data/mapdata/11931.txt similarity index 100% rename from server508/data/mapdata/11931.txt rename to servers/server508/data/mapdata/11931.txt diff --git a/server508/data/mapdata/11936.txt b/servers/server508/data/mapdata/11936.txt similarity index 100% rename from server508/data/mapdata/11936.txt rename to servers/server508/data/mapdata/11936.txt diff --git a/server508/data/mapdata/11937.txt b/servers/server508/data/mapdata/11937.txt similarity index 100% rename from server508/data/mapdata/11937.txt rename to servers/server508/data/mapdata/11937.txt diff --git a/server508/data/mapdata/11938.txt b/servers/server508/data/mapdata/11938.txt similarity index 100% rename from server508/data/mapdata/11938.txt rename to servers/server508/data/mapdata/11938.txt diff --git a/server508/data/mapdata/12077.txt b/servers/server508/data/mapdata/12077.txt similarity index 100% rename from server508/data/mapdata/12077.txt rename to servers/server508/data/mapdata/12077.txt diff --git a/server508/data/mapdata/12078.txt b/servers/server508/data/mapdata/12078.txt similarity index 100% rename from server508/data/mapdata/12078.txt rename to servers/server508/data/mapdata/12078.txt diff --git a/server508/data/mapdata/12079.txt b/servers/server508/data/mapdata/12079.txt similarity index 100% rename from server508/data/mapdata/12079.txt rename to servers/server508/data/mapdata/12079.txt diff --git a/server508/data/mapdata/12080.txt b/servers/server508/data/mapdata/12080.txt similarity index 100% rename from server508/data/mapdata/12080.txt rename to servers/server508/data/mapdata/12080.txt diff --git a/server508/data/mapdata/12081.txt b/servers/server508/data/mapdata/12081.txt similarity index 100% rename from server508/data/mapdata/12081.txt rename to servers/server508/data/mapdata/12081.txt diff --git a/server508/data/mapdata/12082.txt b/servers/server508/data/mapdata/12082.txt similarity index 100% rename from server508/data/mapdata/12082.txt rename to servers/server508/data/mapdata/12082.txt diff --git a/server508/data/mapdata/12083.txt b/servers/server508/data/mapdata/12083.txt similarity index 100% rename from server508/data/mapdata/12083.txt rename to servers/server508/data/mapdata/12083.txt diff --git a/server508/data/mapdata/12084.txt b/servers/server508/data/mapdata/12084.txt similarity index 100% rename from server508/data/mapdata/12084.txt rename to servers/server508/data/mapdata/12084.txt diff --git a/server508/data/mapdata/12085.txt b/servers/server508/data/mapdata/12085.txt similarity index 100% rename from server508/data/mapdata/12085.txt rename to servers/server508/data/mapdata/12085.txt diff --git a/server508/data/mapdata/12086.txt b/servers/server508/data/mapdata/12086.txt similarity index 100% rename from server508/data/mapdata/12086.txt rename to servers/server508/data/mapdata/12086.txt diff --git a/server508/data/mapdata/12087.txt b/servers/server508/data/mapdata/12087.txt similarity index 100% rename from server508/data/mapdata/12087.txt rename to servers/server508/data/mapdata/12087.txt diff --git a/server508/data/mapdata/12088.txt b/servers/server508/data/mapdata/12088.txt similarity index 100% rename from server508/data/mapdata/12088.txt rename to servers/server508/data/mapdata/12088.txt diff --git a/server508/data/mapdata/12089.txt b/servers/server508/data/mapdata/12089.txt similarity index 100% rename from server508/data/mapdata/12089.txt rename to servers/server508/data/mapdata/12089.txt diff --git a/server508/data/mapdata/12090.txt b/servers/server508/data/mapdata/12090.txt similarity index 100% rename from server508/data/mapdata/12090.txt rename to servers/server508/data/mapdata/12090.txt diff --git a/server508/data/mapdata/12091.txt b/servers/server508/data/mapdata/12091.txt similarity index 100% rename from server508/data/mapdata/12091.txt rename to servers/server508/data/mapdata/12091.txt diff --git a/server508/data/mapdata/12092.txt b/servers/server508/data/mapdata/12092.txt similarity index 100% rename from server508/data/mapdata/12092.txt rename to servers/server508/data/mapdata/12092.txt diff --git a/server508/data/mapdata/12093.txt b/servers/server508/data/mapdata/12093.txt similarity index 100% rename from server508/data/mapdata/12093.txt rename to servers/server508/data/mapdata/12093.txt diff --git a/server508/data/mapdata/12094.txt b/servers/server508/data/mapdata/12094.txt similarity index 100% rename from server508/data/mapdata/12094.txt rename to servers/server508/data/mapdata/12094.txt diff --git a/server508/data/mapdata/12097.txt b/servers/server508/data/mapdata/12097.txt similarity index 100% rename from server508/data/mapdata/12097.txt rename to servers/server508/data/mapdata/12097.txt diff --git a/server508/data/mapdata/12098.txt b/servers/server508/data/mapdata/12098.txt similarity index 100% rename from server508/data/mapdata/12098.txt rename to servers/server508/data/mapdata/12098.txt diff --git a/server508/data/mapdata/12109.txt b/servers/server508/data/mapdata/12109.txt similarity index 100% rename from server508/data/mapdata/12109.txt rename to servers/server508/data/mapdata/12109.txt diff --git a/server508/data/mapdata/12110.txt b/servers/server508/data/mapdata/12110.txt similarity index 100% rename from server508/data/mapdata/12110.txt rename to servers/server508/data/mapdata/12110.txt diff --git a/server508/data/mapdata/12119.txt b/servers/server508/data/mapdata/12119.txt similarity index 100% rename from server508/data/mapdata/12119.txt rename to servers/server508/data/mapdata/12119.txt diff --git a/server508/data/mapdata/12120.txt b/servers/server508/data/mapdata/12120.txt similarity index 100% rename from server508/data/mapdata/12120.txt rename to servers/server508/data/mapdata/12120.txt diff --git a/server508/data/mapdata/12121.txt b/servers/server508/data/mapdata/12121.txt similarity index 100% rename from server508/data/mapdata/12121.txt rename to servers/server508/data/mapdata/12121.txt diff --git a/server508/data/mapdata/12122.txt b/servers/server508/data/mapdata/12122.txt similarity index 100% rename from server508/data/mapdata/12122.txt rename to servers/server508/data/mapdata/12122.txt diff --git a/server508/data/mapdata/12180.txt b/servers/server508/data/mapdata/12180.txt similarity index 100% rename from server508/data/mapdata/12180.txt rename to servers/server508/data/mapdata/12180.txt diff --git a/server508/data/mapdata/12181.txt b/servers/server508/data/mapdata/12181.txt similarity index 100% rename from server508/data/mapdata/12181.txt rename to servers/server508/data/mapdata/12181.txt diff --git a/server508/data/mapdata/12182.txt b/servers/server508/data/mapdata/12182.txt similarity index 100% rename from server508/data/mapdata/12182.txt rename to servers/server508/data/mapdata/12182.txt diff --git a/server508/data/mapdata/12183.txt b/servers/server508/data/mapdata/12183.txt similarity index 100% rename from server508/data/mapdata/12183.txt rename to servers/server508/data/mapdata/12183.txt diff --git a/server508/data/mapdata/12184.txt b/servers/server508/data/mapdata/12184.txt similarity index 100% rename from server508/data/mapdata/12184.txt rename to servers/server508/data/mapdata/12184.txt diff --git a/server508/data/mapdata/12185.txt b/servers/server508/data/mapdata/12185.txt similarity index 100% rename from server508/data/mapdata/12185.txt rename to servers/server508/data/mapdata/12185.txt diff --git a/server508/data/mapdata/12186.txt b/servers/server508/data/mapdata/12186.txt similarity index 100% rename from server508/data/mapdata/12186.txt rename to servers/server508/data/mapdata/12186.txt diff --git a/server508/data/mapdata/12187.txt b/servers/server508/data/mapdata/12187.txt similarity index 100% rename from server508/data/mapdata/12187.txt rename to servers/server508/data/mapdata/12187.txt diff --git a/server508/data/mapdata/12188.txt b/servers/server508/data/mapdata/12188.txt similarity index 100% rename from server508/data/mapdata/12188.txt rename to servers/server508/data/mapdata/12188.txt diff --git a/server508/data/mapdata/12191.txt b/servers/server508/data/mapdata/12191.txt similarity index 100% rename from server508/data/mapdata/12191.txt rename to servers/server508/data/mapdata/12191.txt diff --git a/server508/data/mapdata/12192.txt b/servers/server508/data/mapdata/12192.txt similarity index 100% rename from server508/data/mapdata/12192.txt rename to servers/server508/data/mapdata/12192.txt diff --git a/server508/data/mapdata/12193.txt b/servers/server508/data/mapdata/12193.txt similarity index 100% rename from server508/data/mapdata/12193.txt rename to servers/server508/data/mapdata/12193.txt diff --git a/server508/data/mapdata/12194.txt b/servers/server508/data/mapdata/12194.txt similarity index 100% rename from server508/data/mapdata/12194.txt rename to servers/server508/data/mapdata/12194.txt diff --git a/server508/data/mapdata/12332.txt b/servers/server508/data/mapdata/12332.txt similarity index 100% rename from server508/data/mapdata/12332.txt rename to servers/server508/data/mapdata/12332.txt diff --git a/server508/data/mapdata/12333.txt b/servers/server508/data/mapdata/12333.txt similarity index 100% rename from server508/data/mapdata/12333.txt rename to servers/server508/data/mapdata/12333.txt diff --git a/server508/data/mapdata/12334.txt b/servers/server508/data/mapdata/12334.txt similarity index 100% rename from server508/data/mapdata/12334.txt rename to servers/server508/data/mapdata/12334.txt diff --git a/server508/data/mapdata/12335.txt b/servers/server508/data/mapdata/12335.txt similarity index 100% rename from server508/data/mapdata/12335.txt rename to servers/server508/data/mapdata/12335.txt diff --git a/server508/data/mapdata/12336.txt b/servers/server508/data/mapdata/12336.txt similarity index 100% rename from server508/data/mapdata/12336.txt rename to servers/server508/data/mapdata/12336.txt diff --git a/server508/data/mapdata/12337.txt b/servers/server508/data/mapdata/12337.txt similarity index 100% rename from server508/data/mapdata/12337.txt rename to servers/server508/data/mapdata/12337.txt diff --git a/server508/data/mapdata/12338.txt b/servers/server508/data/mapdata/12338.txt similarity index 100% rename from server508/data/mapdata/12338.txt rename to servers/server508/data/mapdata/12338.txt diff --git a/server508/data/mapdata/12339.txt b/servers/server508/data/mapdata/12339.txt similarity index 100% rename from server508/data/mapdata/12339.txt rename to servers/server508/data/mapdata/12339.txt diff --git a/server508/data/mapdata/12340.txt b/servers/server508/data/mapdata/12340.txt similarity index 100% rename from server508/data/mapdata/12340.txt rename to servers/server508/data/mapdata/12340.txt diff --git a/server508/data/mapdata/12341.txt b/servers/server508/data/mapdata/12341.txt similarity index 100% rename from server508/data/mapdata/12341.txt rename to servers/server508/data/mapdata/12341.txt diff --git a/server508/data/mapdata/12342.txt b/servers/server508/data/mapdata/12342.txt similarity index 100% rename from server508/data/mapdata/12342.txt rename to servers/server508/data/mapdata/12342.txt diff --git a/server508/data/mapdata/12343.txt b/servers/server508/data/mapdata/12343.txt similarity index 100% rename from server508/data/mapdata/12343.txt rename to servers/server508/data/mapdata/12343.txt diff --git a/server508/data/mapdata/12344.txt b/servers/server508/data/mapdata/12344.txt similarity index 100% rename from server508/data/mapdata/12344.txt rename to servers/server508/data/mapdata/12344.txt diff --git a/server508/data/mapdata/12345.txt b/servers/server508/data/mapdata/12345.txt similarity index 100% rename from server508/data/mapdata/12345.txt rename to servers/server508/data/mapdata/12345.txt diff --git a/server508/data/mapdata/12346.txt b/servers/server508/data/mapdata/12346.txt similarity index 100% rename from server508/data/mapdata/12346.txt rename to servers/server508/data/mapdata/12346.txt diff --git a/server508/data/mapdata/12347.txt b/servers/server508/data/mapdata/12347.txt similarity index 100% rename from server508/data/mapdata/12347.txt rename to servers/server508/data/mapdata/12347.txt diff --git a/server508/data/mapdata/12348.txt b/servers/server508/data/mapdata/12348.txt similarity index 100% rename from server508/data/mapdata/12348.txt rename to servers/server508/data/mapdata/12348.txt diff --git a/server508/data/mapdata/12349.txt b/servers/server508/data/mapdata/12349.txt similarity index 100% rename from server508/data/mapdata/12349.txt rename to servers/server508/data/mapdata/12349.txt diff --git a/server508/data/mapdata/12350.txt b/servers/server508/data/mapdata/12350.txt similarity index 100% rename from server508/data/mapdata/12350.txt rename to servers/server508/data/mapdata/12350.txt diff --git a/server508/data/mapdata/12351.txt b/servers/server508/data/mapdata/12351.txt similarity index 100% rename from server508/data/mapdata/12351.txt rename to servers/server508/data/mapdata/12351.txt diff --git a/server508/data/mapdata/12352.txt b/servers/server508/data/mapdata/12352.txt similarity index 100% rename from server508/data/mapdata/12352.txt rename to servers/server508/data/mapdata/12352.txt diff --git a/server508/data/mapdata/12353.txt b/servers/server508/data/mapdata/12353.txt similarity index 100% rename from server508/data/mapdata/12353.txt rename to servers/server508/data/mapdata/12353.txt diff --git a/server508/data/mapdata/12354.txt b/servers/server508/data/mapdata/12354.txt similarity index 100% rename from server508/data/mapdata/12354.txt rename to servers/server508/data/mapdata/12354.txt diff --git a/server508/data/mapdata/12355.txt b/servers/server508/data/mapdata/12355.txt similarity index 100% rename from server508/data/mapdata/12355.txt rename to servers/server508/data/mapdata/12355.txt diff --git a/server508/data/mapdata/12364.txt b/servers/server508/data/mapdata/12364.txt similarity index 100% rename from server508/data/mapdata/12364.txt rename to servers/server508/data/mapdata/12364.txt diff --git a/server508/data/mapdata/12365.txt b/servers/server508/data/mapdata/12365.txt similarity index 100% rename from server508/data/mapdata/12365.txt rename to servers/server508/data/mapdata/12365.txt diff --git a/server508/data/mapdata/12366.txt b/servers/server508/data/mapdata/12366.txt similarity index 100% rename from server508/data/mapdata/12366.txt rename to servers/server508/data/mapdata/12366.txt diff --git a/server508/data/mapdata/12372.txt b/servers/server508/data/mapdata/12372.txt similarity index 100% rename from server508/data/mapdata/12372.txt rename to servers/server508/data/mapdata/12372.txt diff --git a/server508/data/mapdata/12373.txt b/servers/server508/data/mapdata/12373.txt similarity index 100% rename from server508/data/mapdata/12373.txt rename to servers/server508/data/mapdata/12373.txt diff --git a/server508/data/mapdata/12374.txt b/servers/server508/data/mapdata/12374.txt similarity index 100% rename from server508/data/mapdata/12374.txt rename to servers/server508/data/mapdata/12374.txt diff --git a/server508/data/mapdata/12375.txt b/servers/server508/data/mapdata/12375.txt similarity index 100% rename from server508/data/mapdata/12375.txt rename to servers/server508/data/mapdata/12375.txt diff --git a/server508/data/mapdata/12376.txt b/servers/server508/data/mapdata/12376.txt similarity index 100% rename from server508/data/mapdata/12376.txt rename to servers/server508/data/mapdata/12376.txt diff --git a/server508/data/mapdata/12377.txt b/servers/server508/data/mapdata/12377.txt similarity index 100% rename from server508/data/mapdata/12377.txt rename to servers/server508/data/mapdata/12377.txt diff --git a/server508/data/mapdata/12378.txt b/servers/server508/data/mapdata/12378.txt similarity index 100% rename from server508/data/mapdata/12378.txt rename to servers/server508/data/mapdata/12378.txt diff --git a/server508/data/mapdata/12436.txt b/servers/server508/data/mapdata/12436.txt similarity index 100% rename from server508/data/mapdata/12436.txt rename to servers/server508/data/mapdata/12436.txt diff --git a/server508/data/mapdata/12437.txt b/servers/server508/data/mapdata/12437.txt similarity index 100% rename from server508/data/mapdata/12437.txt rename to servers/server508/data/mapdata/12437.txt diff --git a/server508/data/mapdata/12438.txt b/servers/server508/data/mapdata/12438.txt similarity index 100% rename from server508/data/mapdata/12438.txt rename to servers/server508/data/mapdata/12438.txt diff --git a/server508/data/mapdata/12439.txt b/servers/server508/data/mapdata/12439.txt similarity index 100% rename from server508/data/mapdata/12439.txt rename to servers/server508/data/mapdata/12439.txt diff --git a/server508/data/mapdata/12440.txt b/servers/server508/data/mapdata/12440.txt similarity index 100% rename from server508/data/mapdata/12440.txt rename to servers/server508/data/mapdata/12440.txt diff --git a/server508/data/mapdata/12441.txt b/servers/server508/data/mapdata/12441.txt similarity index 100% rename from server508/data/mapdata/12441.txt rename to servers/server508/data/mapdata/12441.txt diff --git a/server508/data/mapdata/12442.txt b/servers/server508/data/mapdata/12442.txt similarity index 100% rename from server508/data/mapdata/12442.txt rename to servers/server508/data/mapdata/12442.txt diff --git a/server508/data/mapdata/12443.txt b/servers/server508/data/mapdata/12443.txt similarity index 100% rename from server508/data/mapdata/12443.txt rename to servers/server508/data/mapdata/12443.txt diff --git a/server508/data/mapdata/12444.txt b/servers/server508/data/mapdata/12444.txt similarity index 100% rename from server508/data/mapdata/12444.txt rename to servers/server508/data/mapdata/12444.txt diff --git a/server508/data/mapdata/12447.txt b/servers/server508/data/mapdata/12447.txt similarity index 100% rename from server508/data/mapdata/12447.txt rename to servers/server508/data/mapdata/12447.txt diff --git a/server508/data/mapdata/12448.txt b/servers/server508/data/mapdata/12448.txt similarity index 100% rename from server508/data/mapdata/12448.txt rename to servers/server508/data/mapdata/12448.txt diff --git a/server508/data/mapdata/12449.txt b/servers/server508/data/mapdata/12449.txt similarity index 100% rename from server508/data/mapdata/12449.txt rename to servers/server508/data/mapdata/12449.txt diff --git a/server508/data/mapdata/12450.txt b/servers/server508/data/mapdata/12450.txt similarity index 100% rename from server508/data/mapdata/12450.txt rename to servers/server508/data/mapdata/12450.txt diff --git a/server508/data/mapdata/12587.txt b/servers/server508/data/mapdata/12587.txt similarity index 100% rename from server508/data/mapdata/12587.txt rename to servers/server508/data/mapdata/12587.txt diff --git a/server508/data/mapdata/12588.txt b/servers/server508/data/mapdata/12588.txt similarity index 100% rename from server508/data/mapdata/12588.txt rename to servers/server508/data/mapdata/12588.txt diff --git a/server508/data/mapdata/12589.txt b/servers/server508/data/mapdata/12589.txt similarity index 100% rename from server508/data/mapdata/12589.txt rename to servers/server508/data/mapdata/12589.txt diff --git a/server508/data/mapdata/12590.txt b/servers/server508/data/mapdata/12590.txt similarity index 100% rename from server508/data/mapdata/12590.txt rename to servers/server508/data/mapdata/12590.txt diff --git a/server508/data/mapdata/12591.txt b/servers/server508/data/mapdata/12591.txt similarity index 100% rename from server508/data/mapdata/12591.txt rename to servers/server508/data/mapdata/12591.txt diff --git a/server508/data/mapdata/12592.txt b/servers/server508/data/mapdata/12592.txt similarity index 100% rename from server508/data/mapdata/12592.txt rename to servers/server508/data/mapdata/12592.txt diff --git a/server508/data/mapdata/12593.txt b/servers/server508/data/mapdata/12593.txt similarity index 100% rename from server508/data/mapdata/12593.txt rename to servers/server508/data/mapdata/12593.txt diff --git a/server508/data/mapdata/12594.txt b/servers/server508/data/mapdata/12594.txt similarity index 100% rename from server508/data/mapdata/12594.txt rename to servers/server508/data/mapdata/12594.txt diff --git a/server508/data/mapdata/12595.txt b/servers/server508/data/mapdata/12595.txt similarity index 100% rename from server508/data/mapdata/12595.txt rename to servers/server508/data/mapdata/12595.txt diff --git a/server508/data/mapdata/12596.txt b/servers/server508/data/mapdata/12596.txt similarity index 100% rename from server508/data/mapdata/12596.txt rename to servers/server508/data/mapdata/12596.txt diff --git a/server508/data/mapdata/12597.txt b/servers/server508/data/mapdata/12597.txt similarity index 100% rename from server508/data/mapdata/12597.txt rename to servers/server508/data/mapdata/12597.txt diff --git a/server508/data/mapdata/12598.txt b/servers/server508/data/mapdata/12598.txt similarity index 100% rename from server508/data/mapdata/12598.txt rename to servers/server508/data/mapdata/12598.txt diff --git a/server508/data/mapdata/12599.txt b/servers/server508/data/mapdata/12599.txt similarity index 100% rename from server508/data/mapdata/12599.txt rename to servers/server508/data/mapdata/12599.txt diff --git a/server508/data/mapdata/12600.txt b/servers/server508/data/mapdata/12600.txt similarity index 100% rename from server508/data/mapdata/12600.txt rename to servers/server508/data/mapdata/12600.txt diff --git a/server508/data/mapdata/12601.txt b/servers/server508/data/mapdata/12601.txt similarity index 100% rename from server508/data/mapdata/12601.txt rename to servers/server508/data/mapdata/12601.txt diff --git a/server508/data/mapdata/12602.txt b/servers/server508/data/mapdata/12602.txt similarity index 100% rename from server508/data/mapdata/12602.txt rename to servers/server508/data/mapdata/12602.txt diff --git a/server508/data/mapdata/12603.txt b/servers/server508/data/mapdata/12603.txt similarity index 100% rename from server508/data/mapdata/12603.txt rename to servers/server508/data/mapdata/12603.txt diff --git a/server508/data/mapdata/12604.txt b/servers/server508/data/mapdata/12604.txt similarity index 100% rename from server508/data/mapdata/12604.txt rename to servers/server508/data/mapdata/12604.txt diff --git a/server508/data/mapdata/12605.txt b/servers/server508/data/mapdata/12605.txt similarity index 100% rename from server508/data/mapdata/12605.txt rename to servers/server508/data/mapdata/12605.txt diff --git a/server508/data/mapdata/12606.txt b/servers/server508/data/mapdata/12606.txt similarity index 100% rename from server508/data/mapdata/12606.txt rename to servers/server508/data/mapdata/12606.txt diff --git a/server508/data/mapdata/12609.txt b/servers/server508/data/mapdata/12609.txt similarity index 100% rename from server508/data/mapdata/12609.txt rename to servers/server508/data/mapdata/12609.txt diff --git a/server508/data/mapdata/12610.txt b/servers/server508/data/mapdata/12610.txt similarity index 100% rename from server508/data/mapdata/12610.txt rename to servers/server508/data/mapdata/12610.txt diff --git a/server508/data/mapdata/12611.txt b/servers/server508/data/mapdata/12611.txt similarity index 100% rename from server508/data/mapdata/12611.txt rename to servers/server508/data/mapdata/12611.txt diff --git a/server508/data/mapdata/12620.txt b/servers/server508/data/mapdata/12620.txt similarity index 100% rename from server508/data/mapdata/12620.txt rename to servers/server508/data/mapdata/12620.txt diff --git a/server508/data/mapdata/12621.txt b/servers/server508/data/mapdata/12621.txt similarity index 100% rename from server508/data/mapdata/12621.txt rename to servers/server508/data/mapdata/12621.txt diff --git a/server508/data/mapdata/12622.txt b/servers/server508/data/mapdata/12622.txt similarity index 100% rename from server508/data/mapdata/12622.txt rename to servers/server508/data/mapdata/12622.txt diff --git a/server508/data/mapdata/12623.txt b/servers/server508/data/mapdata/12623.txt similarity index 100% rename from server508/data/mapdata/12623.txt rename to servers/server508/data/mapdata/12623.txt diff --git a/server508/data/mapdata/12624.txt b/servers/server508/data/mapdata/12624.txt similarity index 100% rename from server508/data/mapdata/12624.txt rename to servers/server508/data/mapdata/12624.txt diff --git a/server508/data/mapdata/12628.txt b/servers/server508/data/mapdata/12628.txt similarity index 100% rename from server508/data/mapdata/12628.txt rename to servers/server508/data/mapdata/12628.txt diff --git a/server508/data/mapdata/12629.txt b/servers/server508/data/mapdata/12629.txt similarity index 100% rename from server508/data/mapdata/12629.txt rename to servers/server508/data/mapdata/12629.txt diff --git a/server508/data/mapdata/12630.txt b/servers/server508/data/mapdata/12630.txt similarity index 100% rename from server508/data/mapdata/12630.txt rename to servers/server508/data/mapdata/12630.txt diff --git a/server508/data/mapdata/12631.txt b/servers/server508/data/mapdata/12631.txt similarity index 100% rename from server508/data/mapdata/12631.txt rename to servers/server508/data/mapdata/12631.txt diff --git a/server508/data/mapdata/12632.txt b/servers/server508/data/mapdata/12632.txt similarity index 100% rename from server508/data/mapdata/12632.txt rename to servers/server508/data/mapdata/12632.txt diff --git a/server508/data/mapdata/12633.txt b/servers/server508/data/mapdata/12633.txt similarity index 100% rename from server508/data/mapdata/12633.txt rename to servers/server508/data/mapdata/12633.txt diff --git a/server508/data/mapdata/12634.txt b/servers/server508/data/mapdata/12634.txt similarity index 100% rename from server508/data/mapdata/12634.txt rename to servers/server508/data/mapdata/12634.txt diff --git a/server508/data/mapdata/12688.txt b/servers/server508/data/mapdata/12688.txt similarity index 100% rename from server508/data/mapdata/12688.txt rename to servers/server508/data/mapdata/12688.txt diff --git a/server508/data/mapdata/12689.txt b/servers/server508/data/mapdata/12689.txt similarity index 100% rename from server508/data/mapdata/12689.txt rename to servers/server508/data/mapdata/12689.txt diff --git a/server508/data/mapdata/12690.txt b/servers/server508/data/mapdata/12690.txt similarity index 100% rename from server508/data/mapdata/12690.txt rename to servers/server508/data/mapdata/12690.txt diff --git a/server508/data/mapdata/12692.txt b/servers/server508/data/mapdata/12692.txt similarity index 100% rename from server508/data/mapdata/12692.txt rename to servers/server508/data/mapdata/12692.txt diff --git a/server508/data/mapdata/12693.txt b/servers/server508/data/mapdata/12693.txt similarity index 100% rename from server508/data/mapdata/12693.txt rename to servers/server508/data/mapdata/12693.txt diff --git a/server508/data/mapdata/12694.txt b/servers/server508/data/mapdata/12694.txt similarity index 100% rename from server508/data/mapdata/12694.txt rename to servers/server508/data/mapdata/12694.txt diff --git a/server508/data/mapdata/12695.txt b/servers/server508/data/mapdata/12695.txt similarity index 100% rename from server508/data/mapdata/12695.txt rename to servers/server508/data/mapdata/12695.txt diff --git a/server508/data/mapdata/12696.txt b/servers/server508/data/mapdata/12696.txt similarity index 100% rename from server508/data/mapdata/12696.txt rename to servers/server508/data/mapdata/12696.txt diff --git a/server508/data/mapdata/12697.txt b/servers/server508/data/mapdata/12697.txt similarity index 100% rename from server508/data/mapdata/12697.txt rename to servers/server508/data/mapdata/12697.txt diff --git a/server508/data/mapdata/12698.txt b/servers/server508/data/mapdata/12698.txt similarity index 100% rename from server508/data/mapdata/12698.txt rename to servers/server508/data/mapdata/12698.txt diff --git a/server508/data/mapdata/12699.txt b/servers/server508/data/mapdata/12699.txt similarity index 100% rename from server508/data/mapdata/12699.txt rename to servers/server508/data/mapdata/12699.txt diff --git a/server508/data/mapdata/12700.txt b/servers/server508/data/mapdata/12700.txt similarity index 100% rename from server508/data/mapdata/12700.txt rename to servers/server508/data/mapdata/12700.txt diff --git a/server508/data/mapdata/12842.txt b/servers/server508/data/mapdata/12842.txt similarity index 100% rename from server508/data/mapdata/12842.txt rename to servers/server508/data/mapdata/12842.txt diff --git a/server508/data/mapdata/12843.txt b/servers/server508/data/mapdata/12843.txt similarity index 100% rename from server508/data/mapdata/12843.txt rename to servers/server508/data/mapdata/12843.txt diff --git a/server508/data/mapdata/12844.txt b/servers/server508/data/mapdata/12844.txt similarity index 100% rename from server508/data/mapdata/12844.txt rename to servers/server508/data/mapdata/12844.txt diff --git a/server508/data/mapdata/12845.txt b/servers/server508/data/mapdata/12845.txt similarity index 100% rename from server508/data/mapdata/12845.txt rename to servers/server508/data/mapdata/12845.txt diff --git a/server508/data/mapdata/12846.txt b/servers/server508/data/mapdata/12846.txt similarity index 100% rename from server508/data/mapdata/12846.txt rename to servers/server508/data/mapdata/12846.txt diff --git a/server508/data/mapdata/12847.txt b/servers/server508/data/mapdata/12847.txt similarity index 100% rename from server508/data/mapdata/12847.txt rename to servers/server508/data/mapdata/12847.txt diff --git a/server508/data/mapdata/12848.txt b/servers/server508/data/mapdata/12848.txt similarity index 100% rename from server508/data/mapdata/12848.txt rename to servers/server508/data/mapdata/12848.txt diff --git a/server508/data/mapdata/12849.txt b/servers/server508/data/mapdata/12849.txt similarity index 100% rename from server508/data/mapdata/12849.txt rename to servers/server508/data/mapdata/12849.txt diff --git a/server508/data/mapdata/12850.txt b/servers/server508/data/mapdata/12850.txt similarity index 100% rename from server508/data/mapdata/12850.txt rename to servers/server508/data/mapdata/12850.txt diff --git a/server508/data/mapdata/12851.txt b/servers/server508/data/mapdata/12851.txt similarity index 100% rename from server508/data/mapdata/12851.txt rename to servers/server508/data/mapdata/12851.txt diff --git a/server508/data/mapdata/12852.txt b/servers/server508/data/mapdata/12852.txt similarity index 100% rename from server508/data/mapdata/12852.txt rename to servers/server508/data/mapdata/12852.txt diff --git a/server508/data/mapdata/12853.txt b/servers/server508/data/mapdata/12853.txt similarity index 100% rename from server508/data/mapdata/12853.txt rename to servers/server508/data/mapdata/12853.txt diff --git a/server508/data/mapdata/12854.txt b/servers/server508/data/mapdata/12854.txt similarity index 100% rename from server508/data/mapdata/12854.txt rename to servers/server508/data/mapdata/12854.txt diff --git a/server508/data/mapdata/12855.txt b/servers/server508/data/mapdata/12855.txt similarity index 100% rename from server508/data/mapdata/12855.txt rename to servers/server508/data/mapdata/12855.txt diff --git a/server508/data/mapdata/12856.txt b/servers/server508/data/mapdata/12856.txt similarity index 100% rename from server508/data/mapdata/12856.txt rename to servers/server508/data/mapdata/12856.txt diff --git a/server508/data/mapdata/12857.txt b/servers/server508/data/mapdata/12857.txt similarity index 100% rename from server508/data/mapdata/12857.txt rename to servers/server508/data/mapdata/12857.txt diff --git a/server508/data/mapdata/12858.txt b/servers/server508/data/mapdata/12858.txt similarity index 100% rename from server508/data/mapdata/12858.txt rename to servers/server508/data/mapdata/12858.txt diff --git a/server508/data/mapdata/12859.txt b/servers/server508/data/mapdata/12859.txt similarity index 100% rename from server508/data/mapdata/12859.txt rename to servers/server508/data/mapdata/12859.txt diff --git a/server508/data/mapdata/12860.txt b/servers/server508/data/mapdata/12860.txt similarity index 100% rename from server508/data/mapdata/12860.txt rename to servers/server508/data/mapdata/12860.txt diff --git a/server508/data/mapdata/12861.txt b/servers/server508/data/mapdata/12861.txt similarity index 100% rename from server508/data/mapdata/12861.txt rename to servers/server508/data/mapdata/12861.txt diff --git a/server508/data/mapdata/12862.txt b/servers/server508/data/mapdata/12862.txt similarity index 100% rename from server508/data/mapdata/12862.txt rename to servers/server508/data/mapdata/12862.txt diff --git a/server508/data/mapdata/12865.txt b/servers/server508/data/mapdata/12865.txt similarity index 100% rename from server508/data/mapdata/12865.txt rename to servers/server508/data/mapdata/12865.txt diff --git a/server508/data/mapdata/12866.txt b/servers/server508/data/mapdata/12866.txt similarity index 100% rename from server508/data/mapdata/12866.txt rename to servers/server508/data/mapdata/12866.txt diff --git a/server508/data/mapdata/12867.txt b/servers/server508/data/mapdata/12867.txt similarity index 100% rename from server508/data/mapdata/12867.txt rename to servers/server508/data/mapdata/12867.txt diff --git a/server508/data/mapdata/12876.txt b/servers/server508/data/mapdata/12876.txt similarity index 100% rename from server508/data/mapdata/12876.txt rename to servers/server508/data/mapdata/12876.txt diff --git a/server508/data/mapdata/12877.txt b/servers/server508/data/mapdata/12877.txt similarity index 100% rename from server508/data/mapdata/12877.txt rename to servers/server508/data/mapdata/12877.txt diff --git a/server508/data/mapdata/12878.txt b/servers/server508/data/mapdata/12878.txt similarity index 100% rename from server508/data/mapdata/12878.txt rename to servers/server508/data/mapdata/12878.txt diff --git a/server508/data/mapdata/12879.txt b/servers/server508/data/mapdata/12879.txt similarity index 100% rename from server508/data/mapdata/12879.txt rename to servers/server508/data/mapdata/12879.txt diff --git a/server508/data/mapdata/12880.txt b/servers/server508/data/mapdata/12880.txt similarity index 100% rename from server508/data/mapdata/12880.txt rename to servers/server508/data/mapdata/12880.txt diff --git a/server508/data/mapdata/12884.txt b/servers/server508/data/mapdata/12884.txt similarity index 100% rename from server508/data/mapdata/12884.txt rename to servers/server508/data/mapdata/12884.txt diff --git a/server508/data/mapdata/12885.txt b/servers/server508/data/mapdata/12885.txt similarity index 100% rename from server508/data/mapdata/12885.txt rename to servers/server508/data/mapdata/12885.txt diff --git a/server508/data/mapdata/12886.txt b/servers/server508/data/mapdata/12886.txt similarity index 100% rename from server508/data/mapdata/12886.txt rename to servers/server508/data/mapdata/12886.txt diff --git a/server508/data/mapdata/12887.txt b/servers/server508/data/mapdata/12887.txt similarity index 100% rename from server508/data/mapdata/12887.txt rename to servers/server508/data/mapdata/12887.txt diff --git a/server508/data/mapdata/12944.txt b/servers/server508/data/mapdata/12944.txt similarity index 100% rename from server508/data/mapdata/12944.txt rename to servers/server508/data/mapdata/12944.txt diff --git a/server508/data/mapdata/12945.txt b/servers/server508/data/mapdata/12945.txt similarity index 100% rename from server508/data/mapdata/12945.txt rename to servers/server508/data/mapdata/12945.txt diff --git a/server508/data/mapdata/12946.txt b/servers/server508/data/mapdata/12946.txt similarity index 100% rename from server508/data/mapdata/12946.txt rename to servers/server508/data/mapdata/12946.txt diff --git a/server508/data/mapdata/12948.txt b/servers/server508/data/mapdata/12948.txt similarity index 100% rename from server508/data/mapdata/12948.txt rename to servers/server508/data/mapdata/12948.txt diff --git a/server508/data/mapdata/12949.txt b/servers/server508/data/mapdata/12949.txt similarity index 100% rename from server508/data/mapdata/12949.txt rename to servers/server508/data/mapdata/12949.txt diff --git a/server508/data/mapdata/12950.txt b/servers/server508/data/mapdata/12950.txt similarity index 100% rename from server508/data/mapdata/12950.txt rename to servers/server508/data/mapdata/12950.txt diff --git a/server508/data/mapdata/12951.txt b/servers/server508/data/mapdata/12951.txt similarity index 100% rename from server508/data/mapdata/12951.txt rename to servers/server508/data/mapdata/12951.txt diff --git a/server508/data/mapdata/12952.txt b/servers/server508/data/mapdata/12952.txt similarity index 100% rename from server508/data/mapdata/12952.txt rename to servers/server508/data/mapdata/12952.txt diff --git a/server508/data/mapdata/12953.txt b/servers/server508/data/mapdata/12953.txt similarity index 100% rename from server508/data/mapdata/12953.txt rename to servers/server508/data/mapdata/12953.txt diff --git a/server508/data/mapdata/12954.txt b/servers/server508/data/mapdata/12954.txt similarity index 100% rename from server508/data/mapdata/12954.txt rename to servers/server508/data/mapdata/12954.txt diff --git a/server508/data/mapdata/12955.txt b/servers/server508/data/mapdata/12955.txt similarity index 100% rename from server508/data/mapdata/12955.txt rename to servers/server508/data/mapdata/12955.txt diff --git a/server508/data/mapdata/13098.txt b/servers/server508/data/mapdata/13098.txt similarity index 100% rename from server508/data/mapdata/13098.txt rename to servers/server508/data/mapdata/13098.txt diff --git a/server508/data/mapdata/13099.txt b/servers/server508/data/mapdata/13099.txt similarity index 100% rename from server508/data/mapdata/13099.txt rename to servers/server508/data/mapdata/13099.txt diff --git a/server508/data/mapdata/13100.txt b/servers/server508/data/mapdata/13100.txt similarity index 100% rename from server508/data/mapdata/13100.txt rename to servers/server508/data/mapdata/13100.txt diff --git a/server508/data/mapdata/13101.txt b/servers/server508/data/mapdata/13101.txt similarity index 100% rename from server508/data/mapdata/13101.txt rename to servers/server508/data/mapdata/13101.txt diff --git a/server508/data/mapdata/13102.txt b/servers/server508/data/mapdata/13102.txt similarity index 100% rename from server508/data/mapdata/13102.txt rename to servers/server508/data/mapdata/13102.txt diff --git a/server508/data/mapdata/13103.txt b/servers/server508/data/mapdata/13103.txt similarity index 100% rename from server508/data/mapdata/13103.txt rename to servers/server508/data/mapdata/13103.txt diff --git a/server508/data/mapdata/13104.txt b/servers/server508/data/mapdata/13104.txt similarity index 100% rename from server508/data/mapdata/13104.txt rename to servers/server508/data/mapdata/13104.txt diff --git a/server508/data/mapdata/13105.txt b/servers/server508/data/mapdata/13105.txt similarity index 100% rename from server508/data/mapdata/13105.txt rename to servers/server508/data/mapdata/13105.txt diff --git a/server508/data/mapdata/13106.txt b/servers/server508/data/mapdata/13106.txt similarity index 100% rename from server508/data/mapdata/13106.txt rename to servers/server508/data/mapdata/13106.txt diff --git a/server508/data/mapdata/13107.txt b/servers/server508/data/mapdata/13107.txt similarity index 100% rename from server508/data/mapdata/13107.txt rename to servers/server508/data/mapdata/13107.txt diff --git a/server508/data/mapdata/13108.txt b/servers/server508/data/mapdata/13108.txt similarity index 100% rename from server508/data/mapdata/13108.txt rename to servers/server508/data/mapdata/13108.txt diff --git a/server508/data/mapdata/13109.txt b/servers/server508/data/mapdata/13109.txt similarity index 100% rename from server508/data/mapdata/13109.txt rename to servers/server508/data/mapdata/13109.txt diff --git a/server508/data/mapdata/13110.txt b/servers/server508/data/mapdata/13110.txt similarity index 100% rename from server508/data/mapdata/13110.txt rename to servers/server508/data/mapdata/13110.txt diff --git a/server508/data/mapdata/13111.txt b/servers/server508/data/mapdata/13111.txt similarity index 100% rename from server508/data/mapdata/13111.txt rename to servers/server508/data/mapdata/13111.txt diff --git a/server508/data/mapdata/13112.txt b/servers/server508/data/mapdata/13112.txt similarity index 100% rename from server508/data/mapdata/13112.txt rename to servers/server508/data/mapdata/13112.txt diff --git a/server508/data/mapdata/13113.txt b/servers/server508/data/mapdata/13113.txt similarity index 100% rename from server508/data/mapdata/13113.txt rename to servers/server508/data/mapdata/13113.txt diff --git a/server508/data/mapdata/13114.txt b/servers/server508/data/mapdata/13114.txt similarity index 100% rename from server508/data/mapdata/13114.txt rename to servers/server508/data/mapdata/13114.txt diff --git a/server508/data/mapdata/13115.txt b/servers/server508/data/mapdata/13115.txt similarity index 100% rename from server508/data/mapdata/13115.txt rename to servers/server508/data/mapdata/13115.txt diff --git a/server508/data/mapdata/13116.txt b/servers/server508/data/mapdata/13116.txt similarity index 100% rename from server508/data/mapdata/13116.txt rename to servers/server508/data/mapdata/13116.txt diff --git a/server508/data/mapdata/13117.txt b/servers/server508/data/mapdata/13117.txt similarity index 100% rename from server508/data/mapdata/13117.txt rename to servers/server508/data/mapdata/13117.txt diff --git a/server508/data/mapdata/13118.txt b/servers/server508/data/mapdata/13118.txt similarity index 100% rename from server508/data/mapdata/13118.txt rename to servers/server508/data/mapdata/13118.txt diff --git a/server508/data/mapdata/13132.txt b/servers/server508/data/mapdata/13132.txt similarity index 100% rename from server508/data/mapdata/13132.txt rename to servers/server508/data/mapdata/13132.txt diff --git a/server508/data/mapdata/13133.txt b/servers/server508/data/mapdata/13133.txt similarity index 100% rename from server508/data/mapdata/13133.txt rename to servers/server508/data/mapdata/13133.txt diff --git a/server508/data/mapdata/13134.txt b/servers/server508/data/mapdata/13134.txt similarity index 100% rename from server508/data/mapdata/13134.txt rename to servers/server508/data/mapdata/13134.txt diff --git a/server508/data/mapdata/13135.txt b/servers/server508/data/mapdata/13135.txt similarity index 100% rename from server508/data/mapdata/13135.txt rename to servers/server508/data/mapdata/13135.txt diff --git a/server508/data/mapdata/13136.txt b/servers/server508/data/mapdata/13136.txt similarity index 100% rename from server508/data/mapdata/13136.txt rename to servers/server508/data/mapdata/13136.txt diff --git a/server508/data/mapdata/13140.txt b/servers/server508/data/mapdata/13140.txt similarity index 100% rename from server508/data/mapdata/13140.txt rename to servers/server508/data/mapdata/13140.txt diff --git a/server508/data/mapdata/13141.txt b/servers/server508/data/mapdata/13141.txt similarity index 100% rename from server508/data/mapdata/13141.txt rename to servers/server508/data/mapdata/13141.txt diff --git a/server508/data/mapdata/13142.txt b/servers/server508/data/mapdata/13142.txt similarity index 100% rename from server508/data/mapdata/13142.txt rename to servers/server508/data/mapdata/13142.txt diff --git a/server508/data/mapdata/13143.txt b/servers/server508/data/mapdata/13143.txt similarity index 100% rename from server508/data/mapdata/13143.txt rename to servers/server508/data/mapdata/13143.txt diff --git a/server508/data/mapdata/13200.txt b/servers/server508/data/mapdata/13200.txt similarity index 100% rename from server508/data/mapdata/13200.txt rename to servers/server508/data/mapdata/13200.txt diff --git a/server508/data/mapdata/13201.txt b/servers/server508/data/mapdata/13201.txt similarity index 100% rename from server508/data/mapdata/13201.txt rename to servers/server508/data/mapdata/13201.txt diff --git a/server508/data/mapdata/13202.txt b/servers/server508/data/mapdata/13202.txt similarity index 100% rename from server508/data/mapdata/13202.txt rename to servers/server508/data/mapdata/13202.txt diff --git a/server508/data/mapdata/13204.txt b/servers/server508/data/mapdata/13204.txt similarity index 100% rename from server508/data/mapdata/13204.txt rename to servers/server508/data/mapdata/13204.txt diff --git a/server508/data/mapdata/13205.txt b/servers/server508/data/mapdata/13205.txt similarity index 100% rename from server508/data/mapdata/13205.txt rename to servers/server508/data/mapdata/13205.txt diff --git a/server508/data/mapdata/13206.txt b/servers/server508/data/mapdata/13206.txt similarity index 100% rename from server508/data/mapdata/13206.txt rename to servers/server508/data/mapdata/13206.txt diff --git a/server508/data/mapdata/13208.txt b/servers/server508/data/mapdata/13208.txt similarity index 100% rename from server508/data/mapdata/13208.txt rename to servers/server508/data/mapdata/13208.txt diff --git a/server508/data/mapdata/13209.txt b/servers/server508/data/mapdata/13209.txt similarity index 100% rename from server508/data/mapdata/13209.txt rename to servers/server508/data/mapdata/13209.txt diff --git a/server508/data/mapdata/13210.txt b/servers/server508/data/mapdata/13210.txt similarity index 100% rename from server508/data/mapdata/13210.txt rename to servers/server508/data/mapdata/13210.txt diff --git a/server508/data/mapdata/13211.txt b/servers/server508/data/mapdata/13211.txt similarity index 100% rename from server508/data/mapdata/13211.txt rename to servers/server508/data/mapdata/13211.txt diff --git a/server508/data/mapdata/13354.txt b/servers/server508/data/mapdata/13354.txt similarity index 100% rename from server508/data/mapdata/13354.txt rename to servers/server508/data/mapdata/13354.txt diff --git a/server508/data/mapdata/13355.txt b/servers/server508/data/mapdata/13355.txt similarity index 100% rename from server508/data/mapdata/13355.txt rename to servers/server508/data/mapdata/13355.txt diff --git a/server508/data/mapdata/13356.txt b/servers/server508/data/mapdata/13356.txt similarity index 100% rename from server508/data/mapdata/13356.txt rename to servers/server508/data/mapdata/13356.txt diff --git a/server508/data/mapdata/13357.txt b/servers/server508/data/mapdata/13357.txt similarity index 100% rename from server508/data/mapdata/13357.txt rename to servers/server508/data/mapdata/13357.txt diff --git a/server508/data/mapdata/13358.txt b/servers/server508/data/mapdata/13358.txt similarity index 100% rename from server508/data/mapdata/13358.txt rename to servers/server508/data/mapdata/13358.txt diff --git a/server508/data/mapdata/13359.txt b/servers/server508/data/mapdata/13359.txt similarity index 100% rename from server508/data/mapdata/13359.txt rename to servers/server508/data/mapdata/13359.txt diff --git a/server508/data/mapdata/13360.txt b/servers/server508/data/mapdata/13360.txt similarity index 100% rename from server508/data/mapdata/13360.txt rename to servers/server508/data/mapdata/13360.txt diff --git a/server508/data/mapdata/13361.txt b/servers/server508/data/mapdata/13361.txt similarity index 100% rename from server508/data/mapdata/13361.txt rename to servers/server508/data/mapdata/13361.txt diff --git a/server508/data/mapdata/13362.txt b/servers/server508/data/mapdata/13362.txt similarity index 100% rename from server508/data/mapdata/13362.txt rename to servers/server508/data/mapdata/13362.txt diff --git a/server508/data/mapdata/13363.txt b/servers/server508/data/mapdata/13363.txt similarity index 100% rename from server508/data/mapdata/13363.txt rename to servers/server508/data/mapdata/13363.txt diff --git a/server508/data/mapdata/13364.txt b/servers/server508/data/mapdata/13364.txt similarity index 100% rename from server508/data/mapdata/13364.txt rename to servers/server508/data/mapdata/13364.txt diff --git a/server508/data/mapdata/13365.txt b/servers/server508/data/mapdata/13365.txt similarity index 100% rename from server508/data/mapdata/13365.txt rename to servers/server508/data/mapdata/13365.txt diff --git a/server508/data/mapdata/13366.txt b/servers/server508/data/mapdata/13366.txt similarity index 100% rename from server508/data/mapdata/13366.txt rename to servers/server508/data/mapdata/13366.txt diff --git a/server508/data/mapdata/13367.txt b/servers/server508/data/mapdata/13367.txt similarity index 100% rename from server508/data/mapdata/13367.txt rename to servers/server508/data/mapdata/13367.txt diff --git a/server508/data/mapdata/13368.txt b/servers/server508/data/mapdata/13368.txt similarity index 100% rename from server508/data/mapdata/13368.txt rename to servers/server508/data/mapdata/13368.txt diff --git a/server508/data/mapdata/13369.txt b/servers/server508/data/mapdata/13369.txt similarity index 100% rename from server508/data/mapdata/13369.txt rename to servers/server508/data/mapdata/13369.txt diff --git a/server508/data/mapdata/13370.txt b/servers/server508/data/mapdata/13370.txt similarity index 100% rename from server508/data/mapdata/13370.txt rename to servers/server508/data/mapdata/13370.txt diff --git a/server508/data/mapdata/13371.txt b/servers/server508/data/mapdata/13371.txt similarity index 100% rename from server508/data/mapdata/13371.txt rename to servers/server508/data/mapdata/13371.txt diff --git a/server508/data/mapdata/13372.txt b/servers/server508/data/mapdata/13372.txt similarity index 100% rename from server508/data/mapdata/13372.txt rename to servers/server508/data/mapdata/13372.txt diff --git a/server508/data/mapdata/13373.txt b/servers/server508/data/mapdata/13373.txt similarity index 100% rename from server508/data/mapdata/13373.txt rename to servers/server508/data/mapdata/13373.txt diff --git a/server508/data/mapdata/13374.txt b/servers/server508/data/mapdata/13374.txt similarity index 100% rename from server508/data/mapdata/13374.txt rename to servers/server508/data/mapdata/13374.txt diff --git a/server508/data/mapdata/13388.txt b/servers/server508/data/mapdata/13388.txt similarity index 100% rename from server508/data/mapdata/13388.txt rename to servers/server508/data/mapdata/13388.txt diff --git a/server508/data/mapdata/13389.txt b/servers/server508/data/mapdata/13389.txt similarity index 100% rename from server508/data/mapdata/13389.txt rename to servers/server508/data/mapdata/13389.txt diff --git a/server508/data/mapdata/13465.txt b/servers/server508/data/mapdata/13465.txt similarity index 100% rename from server508/data/mapdata/13465.txt rename to servers/server508/data/mapdata/13465.txt diff --git a/server508/data/mapdata/13466.txt b/servers/server508/data/mapdata/13466.txt similarity index 100% rename from server508/data/mapdata/13466.txt rename to servers/server508/data/mapdata/13466.txt diff --git a/server508/data/mapdata/13467.txt b/servers/server508/data/mapdata/13467.txt similarity index 100% rename from server508/data/mapdata/13467.txt rename to servers/server508/data/mapdata/13467.txt diff --git a/server508/data/mapdata/13612.txt b/servers/server508/data/mapdata/13612.txt similarity index 100% rename from server508/data/mapdata/13612.txt rename to servers/server508/data/mapdata/13612.txt diff --git a/server508/data/mapdata/13613.txt b/servers/server508/data/mapdata/13613.txt similarity index 100% rename from server508/data/mapdata/13613.txt rename to servers/server508/data/mapdata/13613.txt diff --git a/server508/data/mapdata/13614.txt b/servers/server508/data/mapdata/13614.txt similarity index 100% rename from server508/data/mapdata/13614.txt rename to servers/server508/data/mapdata/13614.txt diff --git a/server508/data/mapdata/13615.txt b/servers/server508/data/mapdata/13615.txt similarity index 100% rename from server508/data/mapdata/13615.txt rename to servers/server508/data/mapdata/13615.txt diff --git a/server508/data/mapdata/13616.txt b/servers/server508/data/mapdata/13616.txt similarity index 100% rename from server508/data/mapdata/13616.txt rename to servers/server508/data/mapdata/13616.txt diff --git a/server508/data/mapdata/13617.txt b/servers/server508/data/mapdata/13617.txt similarity index 100% rename from server508/data/mapdata/13617.txt rename to servers/server508/data/mapdata/13617.txt diff --git a/server508/data/mapdata/13618.txt b/servers/server508/data/mapdata/13618.txt similarity index 100% rename from server508/data/mapdata/13618.txt rename to servers/server508/data/mapdata/13618.txt diff --git a/server508/data/mapdata/13619.txt b/servers/server508/data/mapdata/13619.txt similarity index 100% rename from server508/data/mapdata/13619.txt rename to servers/server508/data/mapdata/13619.txt diff --git a/server508/data/mapdata/13620.txt b/servers/server508/data/mapdata/13620.txt similarity index 100% rename from server508/data/mapdata/13620.txt rename to servers/server508/data/mapdata/13620.txt diff --git a/server508/data/mapdata/13621.txt b/servers/server508/data/mapdata/13621.txt similarity index 100% rename from server508/data/mapdata/13621.txt rename to servers/server508/data/mapdata/13621.txt diff --git a/server508/data/mapdata/13622.txt b/servers/server508/data/mapdata/13622.txt similarity index 100% rename from server508/data/mapdata/13622.txt rename to servers/server508/data/mapdata/13622.txt diff --git a/server508/data/mapdata/13623.txt b/servers/server508/data/mapdata/13623.txt similarity index 100% rename from server508/data/mapdata/13623.txt rename to servers/server508/data/mapdata/13623.txt diff --git a/server508/data/mapdata/13624.txt b/servers/server508/data/mapdata/13624.txt similarity index 100% rename from server508/data/mapdata/13624.txt rename to servers/server508/data/mapdata/13624.txt diff --git a/server508/data/mapdata/13625.txt b/servers/server508/data/mapdata/13625.txt similarity index 100% rename from server508/data/mapdata/13625.txt rename to servers/server508/data/mapdata/13625.txt diff --git a/server508/data/mapdata/13626.txt b/servers/server508/data/mapdata/13626.txt similarity index 100% rename from server508/data/mapdata/13626.txt rename to servers/server508/data/mapdata/13626.txt diff --git a/server508/data/mapdata/13627.txt b/servers/server508/data/mapdata/13627.txt similarity index 100% rename from server508/data/mapdata/13627.txt rename to servers/server508/data/mapdata/13627.txt diff --git a/server508/data/mapdata/13628.txt b/servers/server508/data/mapdata/13628.txt similarity index 100% rename from server508/data/mapdata/13628.txt rename to servers/server508/data/mapdata/13628.txt diff --git a/server508/data/mapdata/13629.txt b/servers/server508/data/mapdata/13629.txt similarity index 100% rename from server508/data/mapdata/13629.txt rename to servers/server508/data/mapdata/13629.txt diff --git a/server508/data/mapdata/13630.txt b/servers/server508/data/mapdata/13630.txt similarity index 100% rename from server508/data/mapdata/13630.txt rename to servers/server508/data/mapdata/13630.txt diff --git a/server508/data/mapdata/13642.txt b/servers/server508/data/mapdata/13642.txt similarity index 100% rename from server508/data/mapdata/13642.txt rename to servers/server508/data/mapdata/13642.txt diff --git a/server508/data/mapdata/13643.txt b/servers/server508/data/mapdata/13643.txt similarity index 100% rename from server508/data/mapdata/13643.txt rename to servers/server508/data/mapdata/13643.txt diff --git a/server508/data/mapdata/13644.txt b/servers/server508/data/mapdata/13644.txt similarity index 100% rename from server508/data/mapdata/13644.txt rename to servers/server508/data/mapdata/13644.txt diff --git a/server508/data/mapdata/13715.txt b/servers/server508/data/mapdata/13715.txt similarity index 100% rename from server508/data/mapdata/13715.txt rename to servers/server508/data/mapdata/13715.txt diff --git a/server508/data/mapdata/13716.txt b/servers/server508/data/mapdata/13716.txt similarity index 100% rename from server508/data/mapdata/13716.txt rename to servers/server508/data/mapdata/13716.txt diff --git a/server508/data/mapdata/13717.txt b/servers/server508/data/mapdata/13717.txt similarity index 100% rename from server508/data/mapdata/13717.txt rename to servers/server508/data/mapdata/13717.txt diff --git a/server508/data/mapdata/13868.txt b/servers/server508/data/mapdata/13868.txt similarity index 100% rename from server508/data/mapdata/13868.txt rename to servers/server508/data/mapdata/13868.txt diff --git a/server508/data/mapdata/13869.txt b/servers/server508/data/mapdata/13869.txt similarity index 100% rename from server508/data/mapdata/13869.txt rename to servers/server508/data/mapdata/13869.txt diff --git a/server508/data/mapdata/13870.txt b/servers/server508/data/mapdata/13870.txt similarity index 100% rename from server508/data/mapdata/13870.txt rename to servers/server508/data/mapdata/13870.txt diff --git a/server508/data/mapdata/13871.txt b/servers/server508/data/mapdata/13871.txt similarity index 100% rename from server508/data/mapdata/13871.txt rename to servers/server508/data/mapdata/13871.txt diff --git a/server508/data/mapdata/13872.txt b/servers/server508/data/mapdata/13872.txt similarity index 100% rename from server508/data/mapdata/13872.txt rename to servers/server508/data/mapdata/13872.txt diff --git a/server508/data/mapdata/13873.txt b/servers/server508/data/mapdata/13873.txt similarity index 100% rename from server508/data/mapdata/13873.txt rename to servers/server508/data/mapdata/13873.txt diff --git a/server508/data/mapdata/13874.txt b/servers/server508/data/mapdata/13874.txt similarity index 100% rename from server508/data/mapdata/13874.txt rename to servers/server508/data/mapdata/13874.txt diff --git a/server508/data/mapdata/13875.txt b/servers/server508/data/mapdata/13875.txt similarity index 100% rename from server508/data/mapdata/13875.txt rename to servers/server508/data/mapdata/13875.txt diff --git a/server508/data/mapdata/13876.txt b/servers/server508/data/mapdata/13876.txt similarity index 100% rename from server508/data/mapdata/13876.txt rename to servers/server508/data/mapdata/13876.txt diff --git a/server508/data/mapdata/13877.txt b/servers/server508/data/mapdata/13877.txt similarity index 100% rename from server508/data/mapdata/13877.txt rename to servers/server508/data/mapdata/13877.txt diff --git a/server508/data/mapdata/13878.txt b/servers/server508/data/mapdata/13878.txt similarity index 100% rename from server508/data/mapdata/13878.txt rename to servers/server508/data/mapdata/13878.txt diff --git a/server508/data/mapdata/13879.txt b/servers/server508/data/mapdata/13879.txt similarity index 100% rename from server508/data/mapdata/13879.txt rename to servers/server508/data/mapdata/13879.txt diff --git a/server508/data/mapdata/13880.txt b/servers/server508/data/mapdata/13880.txt similarity index 100% rename from server508/data/mapdata/13880.txt rename to servers/server508/data/mapdata/13880.txt diff --git a/server508/data/mapdata/13898.txt b/servers/server508/data/mapdata/13898.txt similarity index 100% rename from server508/data/mapdata/13898.txt rename to servers/server508/data/mapdata/13898.txt diff --git a/server508/data/mapdata/13899.txt b/servers/server508/data/mapdata/13899.txt similarity index 100% rename from server508/data/mapdata/13899.txt rename to servers/server508/data/mapdata/13899.txt diff --git a/server508/data/mapdata/13900.txt b/servers/server508/data/mapdata/13900.txt similarity index 100% rename from server508/data/mapdata/13900.txt rename to servers/server508/data/mapdata/13900.txt diff --git a/server508/data/mapdata/13971.txt b/servers/server508/data/mapdata/13971.txt similarity index 100% rename from server508/data/mapdata/13971.txt rename to servers/server508/data/mapdata/13971.txt diff --git a/server508/data/mapdata/13972.txt b/servers/server508/data/mapdata/13972.txt similarity index 100% rename from server508/data/mapdata/13972.txt rename to servers/server508/data/mapdata/13972.txt diff --git a/server508/data/mapdata/13973.txt b/servers/server508/data/mapdata/13973.txt similarity index 100% rename from server508/data/mapdata/13973.txt rename to servers/server508/data/mapdata/13973.txt diff --git a/server508/data/mapdata/13974.txt b/servers/server508/data/mapdata/13974.txt similarity index 100% rename from server508/data/mapdata/13974.txt rename to servers/server508/data/mapdata/13974.txt diff --git a/server508/data/mapdata/13975.txt b/servers/server508/data/mapdata/13975.txt similarity index 100% rename from server508/data/mapdata/13975.txt rename to servers/server508/data/mapdata/13975.txt diff --git a/server508/data/mapdata/13976.txt b/servers/server508/data/mapdata/13976.txt similarity index 100% rename from server508/data/mapdata/13976.txt rename to servers/server508/data/mapdata/13976.txt diff --git a/server508/data/mapdata/14129.txt b/servers/server508/data/mapdata/14129.txt similarity index 100% rename from server508/data/mapdata/14129.txt rename to servers/server508/data/mapdata/14129.txt diff --git a/server508/data/mapdata/14130.txt b/servers/server508/data/mapdata/14130.txt similarity index 100% rename from server508/data/mapdata/14130.txt rename to servers/server508/data/mapdata/14130.txt diff --git a/server508/data/mapdata/14131.txt b/servers/server508/data/mapdata/14131.txt similarity index 100% rename from server508/data/mapdata/14131.txt rename to servers/server508/data/mapdata/14131.txt diff --git a/server508/data/mapdata/14132.txt b/servers/server508/data/mapdata/14132.txt similarity index 100% rename from server508/data/mapdata/14132.txt rename to servers/server508/data/mapdata/14132.txt diff --git a/server508/data/mapdata/14133.txt b/servers/server508/data/mapdata/14133.txt similarity index 100% rename from server508/data/mapdata/14133.txt rename to servers/server508/data/mapdata/14133.txt diff --git a/server508/data/mapdata/14134.txt b/servers/server508/data/mapdata/14134.txt similarity index 100% rename from server508/data/mapdata/14134.txt rename to servers/server508/data/mapdata/14134.txt diff --git a/server508/data/mapdata/14135.txt b/servers/server508/data/mapdata/14135.txt similarity index 100% rename from server508/data/mapdata/14135.txt rename to servers/server508/data/mapdata/14135.txt diff --git a/server508/data/mapdata/14136.txt b/servers/server508/data/mapdata/14136.txt similarity index 100% rename from server508/data/mapdata/14136.txt rename to servers/server508/data/mapdata/14136.txt diff --git a/server508/data/mapdata/14154.txt b/servers/server508/data/mapdata/14154.txt similarity index 100% rename from server508/data/mapdata/14154.txt rename to servers/server508/data/mapdata/14154.txt diff --git a/server508/data/mapdata/14155.txt b/servers/server508/data/mapdata/14155.txt similarity index 100% rename from server508/data/mapdata/14155.txt rename to servers/server508/data/mapdata/14155.txt diff --git a/server508/data/mapdata/14156.txt b/servers/server508/data/mapdata/14156.txt similarity index 100% rename from server508/data/mapdata/14156.txt rename to servers/server508/data/mapdata/14156.txt diff --git a/server508/data/mapdata/14227.txt b/servers/server508/data/mapdata/14227.txt similarity index 100% rename from server508/data/mapdata/14227.txt rename to servers/server508/data/mapdata/14227.txt diff --git a/server508/data/mapdata/14228.txt b/servers/server508/data/mapdata/14228.txt similarity index 100% rename from server508/data/mapdata/14228.txt rename to servers/server508/data/mapdata/14228.txt diff --git a/server508/data/mapdata/14229.txt b/servers/server508/data/mapdata/14229.txt similarity index 100% rename from server508/data/mapdata/14229.txt rename to servers/server508/data/mapdata/14229.txt diff --git a/server508/data/mapdata/14230.txt b/servers/server508/data/mapdata/14230.txt similarity index 100% rename from server508/data/mapdata/14230.txt rename to servers/server508/data/mapdata/14230.txt diff --git a/server508/data/mapdata/14231.txt b/servers/server508/data/mapdata/14231.txt similarity index 100% rename from server508/data/mapdata/14231.txt rename to servers/server508/data/mapdata/14231.txt diff --git a/server508/data/mapdata/14232.txt b/servers/server508/data/mapdata/14232.txt similarity index 100% rename from server508/data/mapdata/14232.txt rename to servers/server508/data/mapdata/14232.txt diff --git a/server508/data/mapdata/14381.txt b/servers/server508/data/mapdata/14381.txt similarity index 100% rename from server508/data/mapdata/14381.txt rename to servers/server508/data/mapdata/14381.txt diff --git a/server508/data/mapdata/14382.txt b/servers/server508/data/mapdata/14382.txt similarity index 100% rename from server508/data/mapdata/14382.txt rename to servers/server508/data/mapdata/14382.txt diff --git a/server508/data/mapdata/14383.txt b/servers/server508/data/mapdata/14383.txt similarity index 100% rename from server508/data/mapdata/14383.txt rename to servers/server508/data/mapdata/14383.txt diff --git a/server508/data/mapdata/14384.txt b/servers/server508/data/mapdata/14384.txt similarity index 100% rename from server508/data/mapdata/14384.txt rename to servers/server508/data/mapdata/14384.txt diff --git a/server508/data/mapdata/14385.txt b/servers/server508/data/mapdata/14385.txt similarity index 100% rename from server508/data/mapdata/14385.txt rename to servers/server508/data/mapdata/14385.txt diff --git a/server508/data/mapdata/14386.txt b/servers/server508/data/mapdata/14386.txt similarity index 100% rename from server508/data/mapdata/14386.txt rename to servers/server508/data/mapdata/14386.txt diff --git a/server508/data/mapdata/14387.txt b/servers/server508/data/mapdata/14387.txt similarity index 100% rename from server508/data/mapdata/14387.txt rename to servers/server508/data/mapdata/14387.txt diff --git a/server508/data/mapdata/14388.txt b/servers/server508/data/mapdata/14388.txt similarity index 100% rename from server508/data/mapdata/14388.txt rename to servers/server508/data/mapdata/14388.txt diff --git a/server508/data/mapdata/14389.txt b/servers/server508/data/mapdata/14389.txt similarity index 100% rename from server508/data/mapdata/14389.txt rename to servers/server508/data/mapdata/14389.txt diff --git a/server508/data/mapdata/14390.txt b/servers/server508/data/mapdata/14390.txt similarity index 100% rename from server508/data/mapdata/14390.txt rename to servers/server508/data/mapdata/14390.txt diff --git a/server508/data/mapdata/14391.txt b/servers/server508/data/mapdata/14391.txt similarity index 100% rename from server508/data/mapdata/14391.txt rename to servers/server508/data/mapdata/14391.txt diff --git a/server508/data/mapdata/14486.txt b/servers/server508/data/mapdata/14486.txt similarity index 100% rename from server508/data/mapdata/14486.txt rename to servers/server508/data/mapdata/14486.txt diff --git a/server508/data/mapdata/14487.txt b/servers/server508/data/mapdata/14487.txt similarity index 100% rename from server508/data/mapdata/14487.txt rename to servers/server508/data/mapdata/14487.txt diff --git a/server508/data/mapdata/14488.txt b/servers/server508/data/mapdata/14488.txt similarity index 100% rename from server508/data/mapdata/14488.txt rename to servers/server508/data/mapdata/14488.txt diff --git a/server508/data/mapdata/14637.txt b/servers/server508/data/mapdata/14637.txt similarity index 100% rename from server508/data/mapdata/14637.txt rename to servers/server508/data/mapdata/14637.txt diff --git a/server508/data/mapdata/14638.txt b/servers/server508/data/mapdata/14638.txt similarity index 100% rename from server508/data/mapdata/14638.txt rename to servers/server508/data/mapdata/14638.txt diff --git a/server508/data/mapdata/14639.txt b/servers/server508/data/mapdata/14639.txt similarity index 100% rename from server508/data/mapdata/14639.txt rename to servers/server508/data/mapdata/14639.txt diff --git a/server508/data/mapdata/14640.txt b/servers/server508/data/mapdata/14640.txt similarity index 100% rename from server508/data/mapdata/14640.txt rename to servers/server508/data/mapdata/14640.txt diff --git a/server508/data/mapdata/14645.txt b/servers/server508/data/mapdata/14645.txt similarity index 100% rename from server508/data/mapdata/14645.txt rename to servers/server508/data/mapdata/14645.txt diff --git a/server508/data/mapdata/14646.txt b/servers/server508/data/mapdata/14646.txt similarity index 100% rename from server508/data/mapdata/14646.txt rename to servers/server508/data/mapdata/14646.txt diff --git a/server508/data/mapdata/14647.txt b/servers/server508/data/mapdata/14647.txt similarity index 100% rename from server508/data/mapdata/14647.txt rename to servers/server508/data/mapdata/14647.txt diff --git a/server508/data/mapdata/14893.txt b/servers/server508/data/mapdata/14893.txt similarity index 100% rename from server508/data/mapdata/14893.txt rename to servers/server508/data/mapdata/14893.txt diff --git a/server508/data/mapdata/14894.txt b/servers/server508/data/mapdata/14894.txt similarity index 100% rename from server508/data/mapdata/14894.txt rename to servers/server508/data/mapdata/14894.txt diff --git a/server508/data/mapdata/14895.txt b/servers/server508/data/mapdata/14895.txt similarity index 100% rename from server508/data/mapdata/14895.txt rename to servers/server508/data/mapdata/14895.txt diff --git a/server508/data/mapdata/14896.txt b/servers/server508/data/mapdata/14896.txt similarity index 100% rename from server508/data/mapdata/14896.txt rename to servers/server508/data/mapdata/14896.txt diff --git a/server508/data/mapdata/14901.txt b/servers/server508/data/mapdata/14901.txt similarity index 100% rename from server508/data/mapdata/14901.txt rename to servers/server508/data/mapdata/14901.txt diff --git a/server508/data/mapdata/14902.txt b/servers/server508/data/mapdata/14902.txt similarity index 100% rename from server508/data/mapdata/14902.txt rename to servers/server508/data/mapdata/14902.txt diff --git a/server508/data/mapdata/14903.txt b/servers/server508/data/mapdata/14903.txt similarity index 100% rename from server508/data/mapdata/14903.txt rename to servers/server508/data/mapdata/14903.txt diff --git a/server508/data/mapdata/15149.txt b/servers/server508/data/mapdata/15149.txt similarity index 100% rename from server508/data/mapdata/15149.txt rename to servers/server508/data/mapdata/15149.txt diff --git a/server508/data/mapdata/15150.txt b/servers/server508/data/mapdata/15150.txt similarity index 100% rename from server508/data/mapdata/15150.txt rename to servers/server508/data/mapdata/15150.txt diff --git a/server508/data/mapdata/15151.txt b/servers/server508/data/mapdata/15151.txt similarity index 100% rename from server508/data/mapdata/15151.txt rename to servers/server508/data/mapdata/15151.txt diff --git a/server508/data/mapdata/15152.txt b/servers/server508/data/mapdata/15152.txt similarity index 100% rename from server508/data/mapdata/15152.txt rename to servers/server508/data/mapdata/15152.txt diff --git a/server508/data/mapdata/15406.txt b/servers/server508/data/mapdata/15406.txt similarity index 100% rename from server508/data/mapdata/15406.txt rename to servers/server508/data/mapdata/15406.txt diff --git a/server508/data/mapdata/15407.txt b/servers/server508/data/mapdata/15407.txt similarity index 100% rename from server508/data/mapdata/15407.txt rename to servers/server508/data/mapdata/15407.txt diff --git a/server508/data/mapdata/15408.txt b/servers/server508/data/mapdata/15408.txt similarity index 100% rename from server508/data/mapdata/15408.txt rename to servers/server508/data/mapdata/15408.txt diff --git a/server508/data/mapdata/16123.txt b/servers/server508/data/mapdata/16123.txt similarity index 100% rename from server508/data/mapdata/16123.txt rename to servers/server508/data/mapdata/16123.txt diff --git a/server508/data/mapdata/16124.txt b/servers/server508/data/mapdata/16124.txt similarity index 100% rename from server508/data/mapdata/16124.txt rename to servers/server508/data/mapdata/16124.txt diff --git a/server508/data/mapdata/6230.txt b/servers/server508/data/mapdata/6230.txt similarity index 100% rename from server508/data/mapdata/6230.txt rename to servers/server508/data/mapdata/6230.txt diff --git a/server508/data/mapdata/6231.txt b/servers/server508/data/mapdata/6231.txt similarity index 100% rename from server508/data/mapdata/6231.txt rename to servers/server508/data/mapdata/6231.txt diff --git a/server508/data/mapdata/6232.txt b/servers/server508/data/mapdata/6232.txt similarity index 100% rename from server508/data/mapdata/6232.txt rename to servers/server508/data/mapdata/6232.txt diff --git a/server508/data/mapdata/6484.txt b/servers/server508/data/mapdata/6484.txt similarity index 100% rename from server508/data/mapdata/6484.txt rename to servers/server508/data/mapdata/6484.txt diff --git a/server508/data/mapdata/6485.txt b/servers/server508/data/mapdata/6485.txt similarity index 100% rename from server508/data/mapdata/6485.txt rename to servers/server508/data/mapdata/6485.txt diff --git a/server508/data/mapdata/6486.txt b/servers/server508/data/mapdata/6486.txt similarity index 100% rename from server508/data/mapdata/6486.txt rename to servers/server508/data/mapdata/6486.txt diff --git a/server508/data/mapdata/6487.txt b/servers/server508/data/mapdata/6487.txt similarity index 100% rename from server508/data/mapdata/6487.txt rename to servers/server508/data/mapdata/6487.txt diff --git a/server508/data/mapdata/6488.txt b/servers/server508/data/mapdata/6488.txt similarity index 100% rename from server508/data/mapdata/6488.txt rename to servers/server508/data/mapdata/6488.txt diff --git a/server508/data/mapdata/6732.txt b/servers/server508/data/mapdata/6732.txt similarity index 100% rename from server508/data/mapdata/6732.txt rename to servers/server508/data/mapdata/6732.txt diff --git a/server508/data/mapdata/6733.txt b/servers/server508/data/mapdata/6733.txt similarity index 100% rename from server508/data/mapdata/6733.txt rename to servers/server508/data/mapdata/6733.txt diff --git a/server508/data/mapdata/6734.txt b/servers/server508/data/mapdata/6734.txt similarity index 100% rename from server508/data/mapdata/6734.txt rename to servers/server508/data/mapdata/6734.txt diff --git a/server508/data/mapdata/6740.txt b/servers/server508/data/mapdata/6740.txt similarity index 100% rename from server508/data/mapdata/6740.txt rename to servers/server508/data/mapdata/6740.txt diff --git a/server508/data/mapdata/6741.txt b/servers/server508/data/mapdata/6741.txt similarity index 100% rename from server508/data/mapdata/6741.txt rename to servers/server508/data/mapdata/6741.txt diff --git a/server508/data/mapdata/6742.txt b/servers/server508/data/mapdata/6742.txt similarity index 100% rename from server508/data/mapdata/6742.txt rename to servers/server508/data/mapdata/6742.txt diff --git a/server508/data/mapdata/6743.txt b/servers/server508/data/mapdata/6743.txt similarity index 100% rename from server508/data/mapdata/6743.txt rename to servers/server508/data/mapdata/6743.txt diff --git a/server508/data/mapdata/6744.txt b/servers/server508/data/mapdata/6744.txt similarity index 100% rename from server508/data/mapdata/6744.txt rename to servers/server508/data/mapdata/6744.txt diff --git a/server508/data/mapdata/6988.txt b/servers/server508/data/mapdata/6988.txt similarity index 100% rename from server508/data/mapdata/6988.txt rename to servers/server508/data/mapdata/6988.txt diff --git a/server508/data/mapdata/6989.txt b/servers/server508/data/mapdata/6989.txt similarity index 100% rename from server508/data/mapdata/6989.txt rename to servers/server508/data/mapdata/6989.txt diff --git a/server508/data/mapdata/6990.txt b/servers/server508/data/mapdata/6990.txt similarity index 100% rename from server508/data/mapdata/6990.txt rename to servers/server508/data/mapdata/6990.txt diff --git a/server508/data/mapdata/6996.txt b/servers/server508/data/mapdata/6996.txt similarity index 100% rename from server508/data/mapdata/6996.txt rename to servers/server508/data/mapdata/6996.txt diff --git a/server508/data/mapdata/6997.txt b/servers/server508/data/mapdata/6997.txt similarity index 100% rename from server508/data/mapdata/6997.txt rename to servers/server508/data/mapdata/6997.txt diff --git a/server508/data/mapdata/6998.txt b/servers/server508/data/mapdata/6998.txt similarity index 100% rename from server508/data/mapdata/6998.txt rename to servers/server508/data/mapdata/6998.txt diff --git a/server508/data/mapdata/6999.txt b/servers/server508/data/mapdata/6999.txt similarity index 100% rename from server508/data/mapdata/6999.txt rename to servers/server508/data/mapdata/6999.txt diff --git a/server508/data/mapdata/7000.txt b/servers/server508/data/mapdata/7000.txt similarity index 100% rename from server508/data/mapdata/7000.txt rename to servers/server508/data/mapdata/7000.txt diff --git a/server508/data/mapdata/7244.txt b/servers/server508/data/mapdata/7244.txt similarity index 100% rename from server508/data/mapdata/7244.txt rename to servers/server508/data/mapdata/7244.txt diff --git a/server508/data/mapdata/7245.txt b/servers/server508/data/mapdata/7245.txt similarity index 100% rename from server508/data/mapdata/7245.txt rename to servers/server508/data/mapdata/7245.txt diff --git a/server508/data/mapdata/7246.txt b/servers/server508/data/mapdata/7246.txt similarity index 100% rename from server508/data/mapdata/7246.txt rename to servers/server508/data/mapdata/7246.txt diff --git a/server508/data/mapdata/7248.txt b/servers/server508/data/mapdata/7248.txt similarity index 100% rename from server508/data/mapdata/7248.txt rename to servers/server508/data/mapdata/7248.txt diff --git a/server508/data/mapdata/7249.txt b/servers/server508/data/mapdata/7249.txt similarity index 100% rename from server508/data/mapdata/7249.txt rename to servers/server508/data/mapdata/7249.txt diff --git a/server508/data/mapdata/7250.txt b/servers/server508/data/mapdata/7250.txt similarity index 100% rename from server508/data/mapdata/7250.txt rename to servers/server508/data/mapdata/7250.txt diff --git a/server508/data/mapdata/7492.txt b/servers/server508/data/mapdata/7492.txt similarity index 100% rename from server508/data/mapdata/7492.txt rename to servers/server508/data/mapdata/7492.txt diff --git a/server508/data/mapdata/7493.txt b/servers/server508/data/mapdata/7493.txt similarity index 100% rename from server508/data/mapdata/7493.txt rename to servers/server508/data/mapdata/7493.txt diff --git a/server508/data/mapdata/7494.txt b/servers/server508/data/mapdata/7494.txt similarity index 100% rename from server508/data/mapdata/7494.txt rename to servers/server508/data/mapdata/7494.txt diff --git a/server508/data/mapdata/7497.txt b/servers/server508/data/mapdata/7497.txt similarity index 100% rename from server508/data/mapdata/7497.txt rename to servers/server508/data/mapdata/7497.txt diff --git a/server508/data/mapdata/7498.txt b/servers/server508/data/mapdata/7498.txt similarity index 100% rename from server508/data/mapdata/7498.txt rename to servers/server508/data/mapdata/7498.txt diff --git a/server508/data/mapdata/7499.txt b/servers/server508/data/mapdata/7499.txt similarity index 100% rename from server508/data/mapdata/7499.txt rename to servers/server508/data/mapdata/7499.txt diff --git a/server508/data/mapdata/7503.txt b/servers/server508/data/mapdata/7503.txt similarity index 100% rename from server508/data/mapdata/7503.txt rename to servers/server508/data/mapdata/7503.txt diff --git a/server508/data/mapdata/7504.txt b/servers/server508/data/mapdata/7504.txt similarity index 100% rename from server508/data/mapdata/7504.txt rename to servers/server508/data/mapdata/7504.txt diff --git a/server508/data/mapdata/7505.txt b/servers/server508/data/mapdata/7505.txt similarity index 100% rename from server508/data/mapdata/7505.txt rename to servers/server508/data/mapdata/7505.txt diff --git a/server508/data/mapdata/7506.txt b/servers/server508/data/mapdata/7506.txt similarity index 100% rename from server508/data/mapdata/7506.txt rename to servers/server508/data/mapdata/7506.txt diff --git a/server508/data/mapdata/7509.txt b/servers/server508/data/mapdata/7509.txt similarity index 100% rename from server508/data/mapdata/7509.txt rename to servers/server508/data/mapdata/7509.txt diff --git a/server508/data/mapdata/7748.txt b/servers/server508/data/mapdata/7748.txt similarity index 100% rename from server508/data/mapdata/7748.txt rename to servers/server508/data/mapdata/7748.txt diff --git a/server508/data/mapdata/7749.txt b/servers/server508/data/mapdata/7749.txt similarity index 100% rename from server508/data/mapdata/7749.txt rename to servers/server508/data/mapdata/7749.txt diff --git a/server508/data/mapdata/7750.txt b/servers/server508/data/mapdata/7750.txt similarity index 100% rename from server508/data/mapdata/7750.txt rename to servers/server508/data/mapdata/7750.txt diff --git a/server508/data/mapdata/7753.txt b/servers/server508/data/mapdata/7753.txt similarity index 100% rename from server508/data/mapdata/7753.txt rename to servers/server508/data/mapdata/7753.txt diff --git a/server508/data/mapdata/7754.txt b/servers/server508/data/mapdata/7754.txt similarity index 100% rename from server508/data/mapdata/7754.txt rename to servers/server508/data/mapdata/7754.txt diff --git a/server508/data/mapdata/7755.txt b/servers/server508/data/mapdata/7755.txt similarity index 100% rename from server508/data/mapdata/7755.txt rename to servers/server508/data/mapdata/7755.txt diff --git a/server508/data/mapdata/7757.txt b/servers/server508/data/mapdata/7757.txt similarity index 100% rename from server508/data/mapdata/7757.txt rename to servers/server508/data/mapdata/7757.txt diff --git a/server508/data/mapdata/7758.txt b/servers/server508/data/mapdata/7758.txt similarity index 100% rename from server508/data/mapdata/7758.txt rename to servers/server508/data/mapdata/7758.txt diff --git a/server508/data/mapdata/7759.txt b/servers/server508/data/mapdata/7759.txt similarity index 100% rename from server508/data/mapdata/7759.txt rename to servers/server508/data/mapdata/7759.txt diff --git a/server508/data/mapdata/7760.txt b/servers/server508/data/mapdata/7760.txt similarity index 100% rename from server508/data/mapdata/7760.txt rename to servers/server508/data/mapdata/7760.txt diff --git a/server508/data/mapdata/7761.txt b/servers/server508/data/mapdata/7761.txt similarity index 100% rename from server508/data/mapdata/7761.txt rename to servers/server508/data/mapdata/7761.txt diff --git a/server508/data/mapdata/7762.txt b/servers/server508/data/mapdata/7762.txt similarity index 100% rename from server508/data/mapdata/7762.txt rename to servers/server508/data/mapdata/7762.txt diff --git a/server508/data/mapdata/7763.txt b/servers/server508/data/mapdata/7763.txt similarity index 100% rename from server508/data/mapdata/7763.txt rename to servers/server508/data/mapdata/7763.txt diff --git a/server508/data/mapdata/7764.txt b/servers/server508/data/mapdata/7764.txt similarity index 100% rename from server508/data/mapdata/7764.txt rename to servers/server508/data/mapdata/7764.txt diff --git a/server508/data/mapdata/7765.txt b/servers/server508/data/mapdata/7765.txt similarity index 100% rename from server508/data/mapdata/7765.txt rename to servers/server508/data/mapdata/7765.txt diff --git a/server508/data/mapdata/7995.txt b/servers/server508/data/mapdata/7995.txt similarity index 100% rename from server508/data/mapdata/7995.txt rename to servers/server508/data/mapdata/7995.txt diff --git a/server508/data/mapdata/7996.txt b/servers/server508/data/mapdata/7996.txt similarity index 100% rename from server508/data/mapdata/7996.txt rename to servers/server508/data/mapdata/7996.txt diff --git a/server508/data/mapdata/7997.txt b/servers/server508/data/mapdata/7997.txt similarity index 100% rename from server508/data/mapdata/7997.txt rename to servers/server508/data/mapdata/7997.txt diff --git a/server508/data/mapdata/7998.txt b/servers/server508/data/mapdata/7998.txt similarity index 100% rename from server508/data/mapdata/7998.txt rename to servers/server508/data/mapdata/7998.txt diff --git a/server508/data/mapdata/8009.txt b/servers/server508/data/mapdata/8009.txt similarity index 100% rename from server508/data/mapdata/8009.txt rename to servers/server508/data/mapdata/8009.txt diff --git a/server508/data/mapdata/8010.txt b/servers/server508/data/mapdata/8010.txt similarity index 100% rename from server508/data/mapdata/8010.txt rename to servers/server508/data/mapdata/8010.txt diff --git a/server508/data/mapdata/8011.txt b/servers/server508/data/mapdata/8011.txt similarity index 100% rename from server508/data/mapdata/8011.txt rename to servers/server508/data/mapdata/8011.txt diff --git a/server508/data/mapdata/8013.txt b/servers/server508/data/mapdata/8013.txt similarity index 100% rename from server508/data/mapdata/8013.txt rename to servers/server508/data/mapdata/8013.txt diff --git a/server508/data/mapdata/8014.txt b/servers/server508/data/mapdata/8014.txt similarity index 100% rename from server508/data/mapdata/8014.txt rename to servers/server508/data/mapdata/8014.txt diff --git a/server508/data/mapdata/8016.txt b/servers/server508/data/mapdata/8016.txt similarity index 100% rename from server508/data/mapdata/8016.txt rename to servers/server508/data/mapdata/8016.txt diff --git a/server508/data/mapdata/8017.txt b/servers/server508/data/mapdata/8017.txt similarity index 100% rename from server508/data/mapdata/8017.txt rename to servers/server508/data/mapdata/8017.txt diff --git a/server508/data/mapdata/8018.txt b/servers/server508/data/mapdata/8018.txt similarity index 100% rename from server508/data/mapdata/8018.txt rename to servers/server508/data/mapdata/8018.txt diff --git a/server508/data/mapdata/8019.txt b/servers/server508/data/mapdata/8019.txt similarity index 100% rename from server508/data/mapdata/8019.txt rename to servers/server508/data/mapdata/8019.txt diff --git a/server508/data/mapdata/8020.txt b/servers/server508/data/mapdata/8020.txt similarity index 100% rename from server508/data/mapdata/8020.txt rename to servers/server508/data/mapdata/8020.txt diff --git a/server508/data/mapdata/8021.txt b/servers/server508/data/mapdata/8021.txt similarity index 100% rename from server508/data/mapdata/8021.txt rename to servers/server508/data/mapdata/8021.txt diff --git a/server508/data/mapdata/8240.txt b/servers/server508/data/mapdata/8240.txt similarity index 100% rename from server508/data/mapdata/8240.txt rename to servers/server508/data/mapdata/8240.txt diff --git a/server508/data/mapdata/8241.txt b/servers/server508/data/mapdata/8241.txt similarity index 100% rename from server508/data/mapdata/8241.txt rename to servers/server508/data/mapdata/8241.txt diff --git a/server508/data/mapdata/8251.txt b/servers/server508/data/mapdata/8251.txt similarity index 100% rename from server508/data/mapdata/8251.txt rename to servers/server508/data/mapdata/8251.txt diff --git a/server508/data/mapdata/8252.txt b/servers/server508/data/mapdata/8252.txt similarity index 100% rename from server508/data/mapdata/8252.txt rename to servers/server508/data/mapdata/8252.txt diff --git a/server508/data/mapdata/8253.txt b/servers/server508/data/mapdata/8253.txt similarity index 100% rename from server508/data/mapdata/8253.txt rename to servers/server508/data/mapdata/8253.txt diff --git a/server508/data/mapdata/8254.txt b/servers/server508/data/mapdata/8254.txt similarity index 100% rename from server508/data/mapdata/8254.txt rename to servers/server508/data/mapdata/8254.txt diff --git a/server508/data/mapdata/8265.txt b/servers/server508/data/mapdata/8265.txt similarity index 100% rename from server508/data/mapdata/8265.txt rename to servers/server508/data/mapdata/8265.txt diff --git a/server508/data/mapdata/8266.txt b/servers/server508/data/mapdata/8266.txt similarity index 100% rename from server508/data/mapdata/8266.txt rename to servers/server508/data/mapdata/8266.txt diff --git a/server508/data/mapdata/8267.txt b/servers/server508/data/mapdata/8267.txt similarity index 100% rename from server508/data/mapdata/8267.txt rename to servers/server508/data/mapdata/8267.txt diff --git a/server508/data/mapdata/8268.txt b/servers/server508/data/mapdata/8268.txt similarity index 100% rename from server508/data/mapdata/8268.txt rename to servers/server508/data/mapdata/8268.txt diff --git a/server508/data/mapdata/8272.txt b/servers/server508/data/mapdata/8272.txt similarity index 100% rename from server508/data/mapdata/8272.txt rename to servers/server508/data/mapdata/8272.txt diff --git a/server508/data/mapdata/8273.txt b/servers/server508/data/mapdata/8273.txt similarity index 100% rename from server508/data/mapdata/8273.txt rename to servers/server508/data/mapdata/8273.txt diff --git a/server508/data/mapdata/8274.txt b/servers/server508/data/mapdata/8274.txt similarity index 100% rename from server508/data/mapdata/8274.txt rename to servers/server508/data/mapdata/8274.txt diff --git a/server508/data/mapdata/8275.txt b/servers/server508/data/mapdata/8275.txt similarity index 100% rename from server508/data/mapdata/8275.txt rename to servers/server508/data/mapdata/8275.txt diff --git a/server508/data/mapdata/8276.txt b/servers/server508/data/mapdata/8276.txt similarity index 100% rename from server508/data/mapdata/8276.txt rename to servers/server508/data/mapdata/8276.txt diff --git a/server508/data/mapdata/8277.txt b/servers/server508/data/mapdata/8277.txt similarity index 100% rename from server508/data/mapdata/8277.txt rename to servers/server508/data/mapdata/8277.txt diff --git a/server508/data/mapdata/8496.txt b/servers/server508/data/mapdata/8496.txt similarity index 100% rename from server508/data/mapdata/8496.txt rename to servers/server508/data/mapdata/8496.txt diff --git a/server508/data/mapdata/8497.txt b/servers/server508/data/mapdata/8497.txt similarity index 100% rename from server508/data/mapdata/8497.txt rename to servers/server508/data/mapdata/8497.txt diff --git a/server508/data/mapdata/8498.txt b/servers/server508/data/mapdata/8498.txt similarity index 100% rename from server508/data/mapdata/8498.txt rename to servers/server508/data/mapdata/8498.txt diff --git a/server508/data/mapdata/8499.txt b/servers/server508/data/mapdata/8499.txt similarity index 100% rename from server508/data/mapdata/8499.txt rename to servers/server508/data/mapdata/8499.txt diff --git a/server508/data/mapdata/8506.txt b/servers/server508/data/mapdata/8506.txt similarity index 100% rename from server508/data/mapdata/8506.txt rename to servers/server508/data/mapdata/8506.txt diff --git a/server508/data/mapdata/8507.txt b/servers/server508/data/mapdata/8507.txt similarity index 100% rename from server508/data/mapdata/8507.txt rename to servers/server508/data/mapdata/8507.txt diff --git a/server508/data/mapdata/8508.txt b/servers/server508/data/mapdata/8508.txt similarity index 100% rename from server508/data/mapdata/8508.txt rename to servers/server508/data/mapdata/8508.txt diff --git a/server508/data/mapdata/8509.txt b/servers/server508/data/mapdata/8509.txt similarity index 100% rename from server508/data/mapdata/8509.txt rename to servers/server508/data/mapdata/8509.txt diff --git a/server508/data/mapdata/8510.txt b/servers/server508/data/mapdata/8510.txt similarity index 100% rename from server508/data/mapdata/8510.txt rename to servers/server508/data/mapdata/8510.txt diff --git a/server508/data/mapdata/8522.txt b/servers/server508/data/mapdata/8522.txt similarity index 100% rename from server508/data/mapdata/8522.txt rename to servers/server508/data/mapdata/8522.txt diff --git a/server508/data/mapdata/8523.txt b/servers/server508/data/mapdata/8523.txt similarity index 100% rename from server508/data/mapdata/8523.txt rename to servers/server508/data/mapdata/8523.txt diff --git a/server508/data/mapdata/8524.txt b/servers/server508/data/mapdata/8524.txt similarity index 100% rename from server508/data/mapdata/8524.txt rename to servers/server508/data/mapdata/8524.txt diff --git a/server508/data/mapdata/8525.txt b/servers/server508/data/mapdata/8525.txt similarity index 100% rename from server508/data/mapdata/8525.txt rename to servers/server508/data/mapdata/8525.txt diff --git a/server508/data/mapdata/8529.txt b/servers/server508/data/mapdata/8529.txt similarity index 100% rename from server508/data/mapdata/8529.txt rename to servers/server508/data/mapdata/8529.txt diff --git a/server508/data/mapdata/8530.txt b/servers/server508/data/mapdata/8530.txt similarity index 100% rename from server508/data/mapdata/8530.txt rename to servers/server508/data/mapdata/8530.txt diff --git a/server508/data/mapdata/8531.txt b/servers/server508/data/mapdata/8531.txt similarity index 100% rename from server508/data/mapdata/8531.txt rename to servers/server508/data/mapdata/8531.txt diff --git a/server508/data/mapdata/8532.txt b/servers/server508/data/mapdata/8532.txt similarity index 100% rename from server508/data/mapdata/8532.txt rename to servers/server508/data/mapdata/8532.txt diff --git a/server508/data/mapdata/8533.txt b/servers/server508/data/mapdata/8533.txt similarity index 100% rename from server508/data/mapdata/8533.txt rename to servers/server508/data/mapdata/8533.txt diff --git a/server508/data/mapdata/8752.txt b/servers/server508/data/mapdata/8752.txt similarity index 100% rename from server508/data/mapdata/8752.txt rename to servers/server508/data/mapdata/8752.txt diff --git a/server508/data/mapdata/8753.txt b/servers/server508/data/mapdata/8753.txt similarity index 100% rename from server508/data/mapdata/8753.txt rename to servers/server508/data/mapdata/8753.txt diff --git a/server508/data/mapdata/8754.txt b/servers/server508/data/mapdata/8754.txt similarity index 100% rename from server508/data/mapdata/8754.txt rename to servers/server508/data/mapdata/8754.txt diff --git a/server508/data/mapdata/8755.txt b/servers/server508/data/mapdata/8755.txt similarity index 100% rename from server508/data/mapdata/8755.txt rename to servers/server508/data/mapdata/8755.txt diff --git a/server508/data/mapdata/8756.txt b/servers/server508/data/mapdata/8756.txt similarity index 100% rename from server508/data/mapdata/8756.txt rename to servers/server508/data/mapdata/8756.txt diff --git a/server508/data/mapdata/8757.txt b/servers/server508/data/mapdata/8757.txt similarity index 100% rename from server508/data/mapdata/8757.txt rename to servers/server508/data/mapdata/8757.txt diff --git a/server508/data/mapdata/8762.txt b/servers/server508/data/mapdata/8762.txt similarity index 100% rename from server508/data/mapdata/8762.txt rename to servers/server508/data/mapdata/8762.txt diff --git a/server508/data/mapdata/8763.txt b/servers/server508/data/mapdata/8763.txt similarity index 100% rename from server508/data/mapdata/8763.txt rename to servers/server508/data/mapdata/8763.txt diff --git a/server508/data/mapdata/8764.txt b/servers/server508/data/mapdata/8764.txt similarity index 100% rename from server508/data/mapdata/8764.txt rename to servers/server508/data/mapdata/8764.txt diff --git a/server508/data/mapdata/8765.txt b/servers/server508/data/mapdata/8765.txt similarity index 100% rename from server508/data/mapdata/8765.txt rename to servers/server508/data/mapdata/8765.txt diff --git a/server508/data/mapdata/8776.txt b/servers/server508/data/mapdata/8776.txt similarity index 100% rename from server508/data/mapdata/8776.txt rename to servers/server508/data/mapdata/8776.txt diff --git a/server508/data/mapdata/8777.txt b/servers/server508/data/mapdata/8777.txt similarity index 100% rename from server508/data/mapdata/8777.txt rename to servers/server508/data/mapdata/8777.txt diff --git a/server508/data/mapdata/8778.txt b/servers/server508/data/mapdata/8778.txt similarity index 100% rename from server508/data/mapdata/8778.txt rename to servers/server508/data/mapdata/8778.txt diff --git a/server508/data/mapdata/8779.txt b/servers/server508/data/mapdata/8779.txt similarity index 100% rename from server508/data/mapdata/8779.txt rename to servers/server508/data/mapdata/8779.txt diff --git a/server508/data/mapdata/8780.txt b/servers/server508/data/mapdata/8780.txt similarity index 100% rename from server508/data/mapdata/8780.txt rename to servers/server508/data/mapdata/8780.txt diff --git a/server508/data/mapdata/8781.txt b/servers/server508/data/mapdata/8781.txt similarity index 100% rename from server508/data/mapdata/8781.txt rename to servers/server508/data/mapdata/8781.txt diff --git a/server508/data/mapdata/8785.txt b/servers/server508/data/mapdata/8785.txt similarity index 100% rename from server508/data/mapdata/8785.txt rename to servers/server508/data/mapdata/8785.txt diff --git a/server508/data/mapdata/8786.txt b/servers/server508/data/mapdata/8786.txt similarity index 100% rename from server508/data/mapdata/8786.txt rename to servers/server508/data/mapdata/8786.txt diff --git a/server508/data/mapdata/8787.txt b/servers/server508/data/mapdata/8787.txt similarity index 100% rename from server508/data/mapdata/8787.txt rename to servers/server508/data/mapdata/8787.txt diff --git a/server508/data/mapdata/8788.txt b/servers/server508/data/mapdata/8788.txt similarity index 100% rename from server508/data/mapdata/8788.txt rename to servers/server508/data/mapdata/8788.txt diff --git a/server508/data/mapdata/8789.txt b/servers/server508/data/mapdata/8789.txt similarity index 100% rename from server508/data/mapdata/8789.txt rename to servers/server508/data/mapdata/8789.txt diff --git a/server508/data/mapdata/9008.txt b/servers/server508/data/mapdata/9008.txt similarity index 100% rename from server508/data/mapdata/9008.txt rename to servers/server508/data/mapdata/9008.txt diff --git a/server508/data/mapdata/9009.txt b/servers/server508/data/mapdata/9009.txt similarity index 100% rename from server508/data/mapdata/9009.txt rename to servers/server508/data/mapdata/9009.txt diff --git a/server508/data/mapdata/9010.txt b/servers/server508/data/mapdata/9010.txt similarity index 100% rename from server508/data/mapdata/9010.txt rename to servers/server508/data/mapdata/9010.txt diff --git a/server508/data/mapdata/9011.txt b/servers/server508/data/mapdata/9011.txt similarity index 100% rename from server508/data/mapdata/9011.txt rename to servers/server508/data/mapdata/9011.txt diff --git a/server508/data/mapdata/9012.txt b/servers/server508/data/mapdata/9012.txt similarity index 100% rename from server508/data/mapdata/9012.txt rename to servers/server508/data/mapdata/9012.txt diff --git a/server508/data/mapdata/9013.txt b/servers/server508/data/mapdata/9013.txt similarity index 100% rename from server508/data/mapdata/9013.txt rename to servers/server508/data/mapdata/9013.txt diff --git a/server508/data/mapdata/9014.txt b/servers/server508/data/mapdata/9014.txt similarity index 100% rename from server508/data/mapdata/9014.txt rename to servers/server508/data/mapdata/9014.txt diff --git a/server508/data/mapdata/9015.txt b/servers/server508/data/mapdata/9015.txt similarity index 100% rename from server508/data/mapdata/9015.txt rename to servers/server508/data/mapdata/9015.txt diff --git a/server508/data/mapdata/9016.txt b/servers/server508/data/mapdata/9016.txt similarity index 100% rename from server508/data/mapdata/9016.txt rename to servers/server508/data/mapdata/9016.txt diff --git a/server508/data/mapdata/9017.txt b/servers/server508/data/mapdata/9017.txt similarity index 100% rename from server508/data/mapdata/9017.txt rename to servers/server508/data/mapdata/9017.txt diff --git a/server508/data/mapdata/9018.txt b/servers/server508/data/mapdata/9018.txt similarity index 100% rename from server508/data/mapdata/9018.txt rename to servers/server508/data/mapdata/9018.txt diff --git a/server508/data/mapdata/9019.txt b/servers/server508/data/mapdata/9019.txt similarity index 100% rename from server508/data/mapdata/9019.txt rename to servers/server508/data/mapdata/9019.txt diff --git a/server508/data/mapdata/9020.txt b/servers/server508/data/mapdata/9020.txt similarity index 100% rename from server508/data/mapdata/9020.txt rename to servers/server508/data/mapdata/9020.txt diff --git a/server508/data/mapdata/9032.txt b/servers/server508/data/mapdata/9032.txt similarity index 100% rename from server508/data/mapdata/9032.txt rename to servers/server508/data/mapdata/9032.txt diff --git a/server508/data/mapdata/9033.txt b/servers/server508/data/mapdata/9033.txt similarity index 100% rename from server508/data/mapdata/9033.txt rename to servers/server508/data/mapdata/9033.txt diff --git a/server508/data/mapdata/9034.txt b/servers/server508/data/mapdata/9034.txt similarity index 100% rename from server508/data/mapdata/9034.txt rename to servers/server508/data/mapdata/9034.txt diff --git a/server508/data/mapdata/9035.txt b/servers/server508/data/mapdata/9035.txt similarity index 100% rename from server508/data/mapdata/9035.txt rename to servers/server508/data/mapdata/9035.txt diff --git a/server508/data/mapdata/9036.txt b/servers/server508/data/mapdata/9036.txt similarity index 100% rename from server508/data/mapdata/9036.txt rename to servers/server508/data/mapdata/9036.txt diff --git a/server508/data/mapdata/9037.txt b/servers/server508/data/mapdata/9037.txt similarity index 100% rename from server508/data/mapdata/9037.txt rename to servers/server508/data/mapdata/9037.txt diff --git a/server508/data/mapdata/9040.txt b/servers/server508/data/mapdata/9040.txt similarity index 100% rename from server508/data/mapdata/9040.txt rename to servers/server508/data/mapdata/9040.txt diff --git a/server508/data/mapdata/9041.txt b/servers/server508/data/mapdata/9041.txt similarity index 100% rename from server508/data/mapdata/9041.txt rename to servers/server508/data/mapdata/9041.txt diff --git a/server508/data/mapdata/9042.txt b/servers/server508/data/mapdata/9042.txt similarity index 100% rename from server508/data/mapdata/9042.txt rename to servers/server508/data/mapdata/9042.txt diff --git a/server508/data/mapdata/9043.txt b/servers/server508/data/mapdata/9043.txt similarity index 100% rename from server508/data/mapdata/9043.txt rename to servers/server508/data/mapdata/9043.txt diff --git a/server508/data/mapdata/9044.txt b/servers/server508/data/mapdata/9044.txt similarity index 100% rename from server508/data/mapdata/9044.txt rename to servers/server508/data/mapdata/9044.txt diff --git a/server508/data/mapdata/9045.txt b/servers/server508/data/mapdata/9045.txt similarity index 100% rename from server508/data/mapdata/9045.txt rename to servers/server508/data/mapdata/9045.txt diff --git a/server508/data/mapdata/9048.txt b/servers/server508/data/mapdata/9048.txt similarity index 100% rename from server508/data/mapdata/9048.txt rename to servers/server508/data/mapdata/9048.txt diff --git a/server508/data/mapdata/9049.txt b/servers/server508/data/mapdata/9049.txt similarity index 100% rename from server508/data/mapdata/9049.txt rename to servers/server508/data/mapdata/9049.txt diff --git a/server508/data/mapdata/9050.txt b/servers/server508/data/mapdata/9050.txt similarity index 100% rename from server508/data/mapdata/9050.txt rename to servers/server508/data/mapdata/9050.txt diff --git a/server508/data/mapdata/9109.txt b/servers/server508/data/mapdata/9109.txt similarity index 100% rename from server508/data/mapdata/9109.txt rename to servers/server508/data/mapdata/9109.txt diff --git a/server508/data/mapdata/9110.txt b/servers/server508/data/mapdata/9110.txt similarity index 100% rename from server508/data/mapdata/9110.txt rename to servers/server508/data/mapdata/9110.txt diff --git a/server508/data/mapdata/9111.txt b/servers/server508/data/mapdata/9111.txt similarity index 100% rename from server508/data/mapdata/9111.txt rename to servers/server508/data/mapdata/9111.txt diff --git a/server508/data/mapdata/9120.txt b/servers/server508/data/mapdata/9120.txt similarity index 100% rename from server508/data/mapdata/9120.txt rename to servers/server508/data/mapdata/9120.txt diff --git a/server508/data/mapdata/9121.txt b/servers/server508/data/mapdata/9121.txt similarity index 100% rename from server508/data/mapdata/9121.txt rename to servers/server508/data/mapdata/9121.txt diff --git a/server508/data/mapdata/9122.txt b/servers/server508/data/mapdata/9122.txt similarity index 100% rename from server508/data/mapdata/9122.txt rename to servers/server508/data/mapdata/9122.txt diff --git a/server508/data/mapdata/9262.txt b/servers/server508/data/mapdata/9262.txt similarity index 100% rename from server508/data/mapdata/9262.txt rename to servers/server508/data/mapdata/9262.txt diff --git a/server508/data/mapdata/9263.txt b/servers/server508/data/mapdata/9263.txt similarity index 100% rename from server508/data/mapdata/9263.txt rename to servers/server508/data/mapdata/9263.txt diff --git a/server508/data/mapdata/9264.txt b/servers/server508/data/mapdata/9264.txt similarity index 100% rename from server508/data/mapdata/9264.txt rename to servers/server508/data/mapdata/9264.txt diff --git a/server508/data/mapdata/9265.txt b/servers/server508/data/mapdata/9265.txt similarity index 100% rename from server508/data/mapdata/9265.txt rename to servers/server508/data/mapdata/9265.txt diff --git a/server508/data/mapdata/9266.txt b/servers/server508/data/mapdata/9266.txt similarity index 100% rename from server508/data/mapdata/9266.txt rename to servers/server508/data/mapdata/9266.txt diff --git a/server508/data/mapdata/9267.txt b/servers/server508/data/mapdata/9267.txt similarity index 100% rename from server508/data/mapdata/9267.txt rename to servers/server508/data/mapdata/9267.txt diff --git a/server508/data/mapdata/9268.txt b/servers/server508/data/mapdata/9268.txt similarity index 100% rename from server508/data/mapdata/9268.txt rename to servers/server508/data/mapdata/9268.txt diff --git a/server508/data/mapdata/9269.txt b/servers/server508/data/mapdata/9269.txt similarity index 100% rename from server508/data/mapdata/9269.txt rename to servers/server508/data/mapdata/9269.txt diff --git a/server508/data/mapdata/9270.txt b/servers/server508/data/mapdata/9270.txt similarity index 100% rename from server508/data/mapdata/9270.txt rename to servers/server508/data/mapdata/9270.txt diff --git a/server508/data/mapdata/9271.txt b/servers/server508/data/mapdata/9271.txt similarity index 100% rename from server508/data/mapdata/9271.txt rename to servers/server508/data/mapdata/9271.txt diff --git a/server508/data/mapdata/9272.txt b/servers/server508/data/mapdata/9272.txt similarity index 100% rename from server508/data/mapdata/9272.txt rename to servers/server508/data/mapdata/9272.txt diff --git a/server508/data/mapdata/9273.txt b/servers/server508/data/mapdata/9273.txt similarity index 100% rename from server508/data/mapdata/9273.txt rename to servers/server508/data/mapdata/9273.txt diff --git a/server508/data/mapdata/9274.txt b/servers/server508/data/mapdata/9274.txt similarity index 100% rename from server508/data/mapdata/9274.txt rename to servers/server508/data/mapdata/9274.txt diff --git a/server508/data/mapdata/9275.txt b/servers/server508/data/mapdata/9275.txt similarity index 100% rename from server508/data/mapdata/9275.txt rename to servers/server508/data/mapdata/9275.txt diff --git a/server508/data/mapdata/9276.txt b/servers/server508/data/mapdata/9276.txt similarity index 100% rename from server508/data/mapdata/9276.txt rename to servers/server508/data/mapdata/9276.txt diff --git a/server508/data/mapdata/9277.txt b/servers/server508/data/mapdata/9277.txt similarity index 100% rename from server508/data/mapdata/9277.txt rename to servers/server508/data/mapdata/9277.txt diff --git a/server508/data/mapdata/9284.txt b/servers/server508/data/mapdata/9284.txt similarity index 100% rename from server508/data/mapdata/9284.txt rename to servers/server508/data/mapdata/9284.txt diff --git a/server508/data/mapdata/9285.txt b/servers/server508/data/mapdata/9285.txt similarity index 100% rename from server508/data/mapdata/9285.txt rename to servers/server508/data/mapdata/9285.txt diff --git a/server508/data/mapdata/9286.txt b/servers/server508/data/mapdata/9286.txt similarity index 100% rename from server508/data/mapdata/9286.txt rename to servers/server508/data/mapdata/9286.txt diff --git a/server508/data/mapdata/9288.txt b/servers/server508/data/mapdata/9288.txt similarity index 100% rename from server508/data/mapdata/9288.txt rename to servers/server508/data/mapdata/9288.txt diff --git a/server508/data/mapdata/9289.txt b/servers/server508/data/mapdata/9289.txt similarity index 100% rename from server508/data/mapdata/9289.txt rename to servers/server508/data/mapdata/9289.txt diff --git a/server508/data/mapdata/9290.txt b/servers/server508/data/mapdata/9290.txt similarity index 100% rename from server508/data/mapdata/9290.txt rename to servers/server508/data/mapdata/9290.txt diff --git a/server508/data/mapdata/9291.txt b/servers/server508/data/mapdata/9291.txt similarity index 100% rename from server508/data/mapdata/9291.txt rename to servers/server508/data/mapdata/9291.txt diff --git a/server508/data/mapdata/9292.txt b/servers/server508/data/mapdata/9292.txt similarity index 100% rename from server508/data/mapdata/9292.txt rename to servers/server508/data/mapdata/9292.txt diff --git a/server508/data/mapdata/9295.txt b/servers/server508/data/mapdata/9295.txt similarity index 100% rename from server508/data/mapdata/9295.txt rename to servers/server508/data/mapdata/9295.txt diff --git a/server508/data/mapdata/9296.txt b/servers/server508/data/mapdata/9296.txt similarity index 100% rename from server508/data/mapdata/9296.txt rename to servers/server508/data/mapdata/9296.txt diff --git a/server508/data/mapdata/9297.txt b/servers/server508/data/mapdata/9297.txt similarity index 100% rename from server508/data/mapdata/9297.txt rename to servers/server508/data/mapdata/9297.txt diff --git a/server508/data/mapdata/9298.txt b/servers/server508/data/mapdata/9298.txt similarity index 100% rename from server508/data/mapdata/9298.txt rename to servers/server508/data/mapdata/9298.txt diff --git a/server508/data/mapdata/9299.txt b/servers/server508/data/mapdata/9299.txt similarity index 100% rename from server508/data/mapdata/9299.txt rename to servers/server508/data/mapdata/9299.txt diff --git a/server508/data/mapdata/9300.txt b/servers/server508/data/mapdata/9300.txt similarity index 100% rename from server508/data/mapdata/9300.txt rename to servers/server508/data/mapdata/9300.txt diff --git a/server508/data/mapdata/9301.txt b/servers/server508/data/mapdata/9301.txt similarity index 100% rename from server508/data/mapdata/9301.txt rename to servers/server508/data/mapdata/9301.txt diff --git a/server508/data/mapdata/9304.txt b/servers/server508/data/mapdata/9304.txt similarity index 100% rename from server508/data/mapdata/9304.txt rename to servers/server508/data/mapdata/9304.txt diff --git a/server508/data/mapdata/9305.txt b/servers/server508/data/mapdata/9305.txt similarity index 100% rename from server508/data/mapdata/9305.txt rename to servers/server508/data/mapdata/9305.txt diff --git a/server508/data/mapdata/9306.txt b/servers/server508/data/mapdata/9306.txt similarity index 100% rename from server508/data/mapdata/9306.txt rename to servers/server508/data/mapdata/9306.txt diff --git a/server508/data/mapdata/9363.txt b/servers/server508/data/mapdata/9363.txt similarity index 100% rename from server508/data/mapdata/9363.txt rename to servers/server508/data/mapdata/9363.txt diff --git a/server508/data/mapdata/9364.txt b/servers/server508/data/mapdata/9364.txt similarity index 100% rename from server508/data/mapdata/9364.txt rename to servers/server508/data/mapdata/9364.txt diff --git a/server508/data/mapdata/9365.txt b/servers/server508/data/mapdata/9365.txt similarity index 100% rename from server508/data/mapdata/9365.txt rename to servers/server508/data/mapdata/9365.txt diff --git a/server508/data/mapdata/9366.txt b/servers/server508/data/mapdata/9366.txt similarity index 100% rename from server508/data/mapdata/9366.txt rename to servers/server508/data/mapdata/9366.txt diff --git a/server508/data/mapdata/9367.txt b/servers/server508/data/mapdata/9367.txt similarity index 100% rename from server508/data/mapdata/9367.txt rename to servers/server508/data/mapdata/9367.txt diff --git a/server508/data/mapdata/9376.txt b/servers/server508/data/mapdata/9376.txt similarity index 100% rename from server508/data/mapdata/9376.txt rename to servers/server508/data/mapdata/9376.txt diff --git a/server508/data/mapdata/9377.txt b/servers/server508/data/mapdata/9377.txt similarity index 100% rename from server508/data/mapdata/9377.txt rename to servers/server508/data/mapdata/9377.txt diff --git a/server508/data/mapdata/9378.txt b/servers/server508/data/mapdata/9378.txt similarity index 100% rename from server508/data/mapdata/9378.txt rename to servers/server508/data/mapdata/9378.txt diff --git a/server508/data/mapdata/9515.txt b/servers/server508/data/mapdata/9515.txt similarity index 100% rename from server508/data/mapdata/9515.txt rename to servers/server508/data/mapdata/9515.txt diff --git a/server508/data/mapdata/9516.txt b/servers/server508/data/mapdata/9516.txt similarity index 100% rename from server508/data/mapdata/9516.txt rename to servers/server508/data/mapdata/9516.txt diff --git a/server508/data/mapdata/9517.txt b/servers/server508/data/mapdata/9517.txt similarity index 100% rename from server508/data/mapdata/9517.txt rename to servers/server508/data/mapdata/9517.txt diff --git a/server508/data/mapdata/9518.txt b/servers/server508/data/mapdata/9518.txt similarity index 100% rename from server508/data/mapdata/9518.txt rename to servers/server508/data/mapdata/9518.txt diff --git a/server508/data/mapdata/9519.txt b/servers/server508/data/mapdata/9519.txt similarity index 100% rename from server508/data/mapdata/9519.txt rename to servers/server508/data/mapdata/9519.txt diff --git a/server508/data/mapdata/9520.txt b/servers/server508/data/mapdata/9520.txt similarity index 100% rename from server508/data/mapdata/9520.txt rename to servers/server508/data/mapdata/9520.txt diff --git a/server508/data/mapdata/9521.txt b/servers/server508/data/mapdata/9521.txt similarity index 100% rename from server508/data/mapdata/9521.txt rename to servers/server508/data/mapdata/9521.txt diff --git a/server508/data/mapdata/9522.txt b/servers/server508/data/mapdata/9522.txt similarity index 100% rename from server508/data/mapdata/9522.txt rename to servers/server508/data/mapdata/9522.txt diff --git a/server508/data/mapdata/9523.txt b/servers/server508/data/mapdata/9523.txt similarity index 100% rename from server508/data/mapdata/9523.txt rename to servers/server508/data/mapdata/9523.txt diff --git a/server508/data/mapdata/9524.txt b/servers/server508/data/mapdata/9524.txt similarity index 100% rename from server508/data/mapdata/9524.txt rename to servers/server508/data/mapdata/9524.txt diff --git a/server508/data/mapdata/9525.txt b/servers/server508/data/mapdata/9525.txt similarity index 100% rename from server508/data/mapdata/9525.txt rename to servers/server508/data/mapdata/9525.txt diff --git a/server508/data/mapdata/9526.txt b/servers/server508/data/mapdata/9526.txt similarity index 100% rename from server508/data/mapdata/9526.txt rename to servers/server508/data/mapdata/9526.txt diff --git a/server508/data/mapdata/9527.txt b/servers/server508/data/mapdata/9527.txt similarity index 100% rename from server508/data/mapdata/9527.txt rename to servers/server508/data/mapdata/9527.txt diff --git a/server508/data/mapdata/9528.txt b/servers/server508/data/mapdata/9528.txt similarity index 100% rename from server508/data/mapdata/9528.txt rename to servers/server508/data/mapdata/9528.txt diff --git a/server508/data/mapdata/9529.txt b/servers/server508/data/mapdata/9529.txt similarity index 100% rename from server508/data/mapdata/9529.txt rename to servers/server508/data/mapdata/9529.txt diff --git a/server508/data/mapdata/9530.txt b/servers/server508/data/mapdata/9530.txt similarity index 100% rename from server508/data/mapdata/9530.txt rename to servers/server508/data/mapdata/9530.txt diff --git a/server508/data/mapdata/9531.txt b/servers/server508/data/mapdata/9531.txt similarity index 100% rename from server508/data/mapdata/9531.txt rename to servers/server508/data/mapdata/9531.txt diff --git a/server508/data/mapdata/9532.txt b/servers/server508/data/mapdata/9532.txt similarity index 100% rename from server508/data/mapdata/9532.txt rename to servers/server508/data/mapdata/9532.txt diff --git a/server508/data/mapdata/9533.txt b/servers/server508/data/mapdata/9533.txt similarity index 100% rename from server508/data/mapdata/9533.txt rename to servers/server508/data/mapdata/9533.txt diff --git a/server508/data/mapdata/9540.txt b/servers/server508/data/mapdata/9540.txt similarity index 100% rename from server508/data/mapdata/9540.txt rename to servers/server508/data/mapdata/9540.txt diff --git a/server508/data/mapdata/9541.txt b/servers/server508/data/mapdata/9541.txt similarity index 100% rename from server508/data/mapdata/9541.txt rename to servers/server508/data/mapdata/9541.txt diff --git a/server508/data/mapdata/9542.txt b/servers/server508/data/mapdata/9542.txt similarity index 100% rename from server508/data/mapdata/9542.txt rename to servers/server508/data/mapdata/9542.txt diff --git a/server508/data/mapdata/9546.txt b/servers/server508/data/mapdata/9546.txt similarity index 100% rename from server508/data/mapdata/9546.txt rename to servers/server508/data/mapdata/9546.txt diff --git a/server508/data/mapdata/9547.txt b/servers/server508/data/mapdata/9547.txt similarity index 100% rename from server508/data/mapdata/9547.txt rename to servers/server508/data/mapdata/9547.txt diff --git a/server508/data/mapdata/9548.txt b/servers/server508/data/mapdata/9548.txt similarity index 100% rename from server508/data/mapdata/9548.txt rename to servers/server508/data/mapdata/9548.txt diff --git a/server508/data/mapdata/9551.txt b/servers/server508/data/mapdata/9551.txt similarity index 100% rename from server508/data/mapdata/9551.txt rename to servers/server508/data/mapdata/9551.txt diff --git a/server508/data/mapdata/9552.txt b/servers/server508/data/mapdata/9552.txt similarity index 100% rename from server508/data/mapdata/9552.txt rename to servers/server508/data/mapdata/9552.txt diff --git a/server508/data/mapdata/9553.txt b/servers/server508/data/mapdata/9553.txt similarity index 100% rename from server508/data/mapdata/9553.txt rename to servers/server508/data/mapdata/9553.txt diff --git a/server508/data/mapdata/9554.txt b/servers/server508/data/mapdata/9554.txt similarity index 100% rename from server508/data/mapdata/9554.txt rename to servers/server508/data/mapdata/9554.txt diff --git a/server508/data/mapdata/9555.txt b/servers/server508/data/mapdata/9555.txt similarity index 100% rename from server508/data/mapdata/9555.txt rename to servers/server508/data/mapdata/9555.txt diff --git a/server508/data/mapdata/9556.txt b/servers/server508/data/mapdata/9556.txt similarity index 100% rename from server508/data/mapdata/9556.txt rename to servers/server508/data/mapdata/9556.txt diff --git a/server508/data/mapdata/9557.txt b/servers/server508/data/mapdata/9557.txt similarity index 100% rename from server508/data/mapdata/9557.txt rename to servers/server508/data/mapdata/9557.txt diff --git a/server508/data/mapdata/9560.txt b/servers/server508/data/mapdata/9560.txt similarity index 100% rename from server508/data/mapdata/9560.txt rename to servers/server508/data/mapdata/9560.txt diff --git a/server508/data/mapdata/9561.txt b/servers/server508/data/mapdata/9561.txt similarity index 100% rename from server508/data/mapdata/9561.txt rename to servers/server508/data/mapdata/9561.txt diff --git a/server508/data/mapdata/9562.txt b/servers/server508/data/mapdata/9562.txt similarity index 100% rename from server508/data/mapdata/9562.txt rename to servers/server508/data/mapdata/9562.txt diff --git a/server508/data/mapdata/9619.txt b/servers/server508/data/mapdata/9619.txt similarity index 100% rename from server508/data/mapdata/9619.txt rename to servers/server508/data/mapdata/9619.txt diff --git a/server508/data/mapdata/9620.txt b/servers/server508/data/mapdata/9620.txt similarity index 100% rename from server508/data/mapdata/9620.txt rename to servers/server508/data/mapdata/9620.txt diff --git a/server508/data/mapdata/9621.txt b/servers/server508/data/mapdata/9621.txt similarity index 100% rename from server508/data/mapdata/9621.txt rename to servers/server508/data/mapdata/9621.txt diff --git a/server508/data/mapdata/9622.txt b/servers/server508/data/mapdata/9622.txt similarity index 100% rename from server508/data/mapdata/9622.txt rename to servers/server508/data/mapdata/9622.txt diff --git a/server508/data/mapdata/9623.txt b/servers/server508/data/mapdata/9623.txt similarity index 100% rename from server508/data/mapdata/9623.txt rename to servers/server508/data/mapdata/9623.txt diff --git a/server508/data/mapdata/9625.txt b/servers/server508/data/mapdata/9625.txt similarity index 100% rename from server508/data/mapdata/9625.txt rename to servers/server508/data/mapdata/9625.txt diff --git a/server508/data/mapdata/9626.txt b/servers/server508/data/mapdata/9626.txt similarity index 100% rename from server508/data/mapdata/9626.txt rename to servers/server508/data/mapdata/9626.txt diff --git a/server508/data/mapdata/9627.txt b/servers/server508/data/mapdata/9627.txt similarity index 100% rename from server508/data/mapdata/9627.txt rename to servers/server508/data/mapdata/9627.txt diff --git a/server508/data/mapdata/9632.txt b/servers/server508/data/mapdata/9632.txt similarity index 100% rename from server508/data/mapdata/9632.txt rename to servers/server508/data/mapdata/9632.txt diff --git a/server508/data/mapdata/9633.txt b/servers/server508/data/mapdata/9633.txt similarity index 100% rename from server508/data/mapdata/9633.txt rename to servers/server508/data/mapdata/9633.txt diff --git a/server508/data/mapdata/9634.txt b/servers/server508/data/mapdata/9634.txt similarity index 100% rename from server508/data/mapdata/9634.txt rename to servers/server508/data/mapdata/9634.txt diff --git a/server508/data/mapdata/9771.txt b/servers/server508/data/mapdata/9771.txt similarity index 100% rename from server508/data/mapdata/9771.txt rename to servers/server508/data/mapdata/9771.txt diff --git a/server508/data/mapdata/9772.txt b/servers/server508/data/mapdata/9772.txt similarity index 100% rename from server508/data/mapdata/9772.txt rename to servers/server508/data/mapdata/9772.txt diff --git a/server508/data/mapdata/9773.txt b/servers/server508/data/mapdata/9773.txt similarity index 100% rename from server508/data/mapdata/9773.txt rename to servers/server508/data/mapdata/9773.txt diff --git a/server508/data/mapdata/9774.txt b/servers/server508/data/mapdata/9774.txt similarity index 100% rename from server508/data/mapdata/9774.txt rename to servers/server508/data/mapdata/9774.txt diff --git a/server508/data/mapdata/9775.txt b/servers/server508/data/mapdata/9775.txt similarity index 100% rename from server508/data/mapdata/9775.txt rename to servers/server508/data/mapdata/9775.txt diff --git a/server508/data/mapdata/9776.txt b/servers/server508/data/mapdata/9776.txt similarity index 100% rename from server508/data/mapdata/9776.txt rename to servers/server508/data/mapdata/9776.txt diff --git a/server508/data/mapdata/9777.txt b/servers/server508/data/mapdata/9777.txt similarity index 100% rename from server508/data/mapdata/9777.txt rename to servers/server508/data/mapdata/9777.txt diff --git a/server508/data/mapdata/9778.txt b/servers/server508/data/mapdata/9778.txt similarity index 100% rename from server508/data/mapdata/9778.txt rename to servers/server508/data/mapdata/9778.txt diff --git a/server508/data/mapdata/9779.txt b/servers/server508/data/mapdata/9779.txt similarity index 100% rename from server508/data/mapdata/9779.txt rename to servers/server508/data/mapdata/9779.txt diff --git a/server508/data/mapdata/9780.txt b/servers/server508/data/mapdata/9780.txt similarity index 100% rename from server508/data/mapdata/9780.txt rename to servers/server508/data/mapdata/9780.txt diff --git a/server508/data/mapdata/9781.txt b/servers/server508/data/mapdata/9781.txt similarity index 100% rename from server508/data/mapdata/9781.txt rename to servers/server508/data/mapdata/9781.txt diff --git a/server508/data/mapdata/9782.txt b/servers/server508/data/mapdata/9782.txt similarity index 100% rename from server508/data/mapdata/9782.txt rename to servers/server508/data/mapdata/9782.txt diff --git a/server508/data/mapdata/9783.txt b/servers/server508/data/mapdata/9783.txt similarity index 100% rename from server508/data/mapdata/9783.txt rename to servers/server508/data/mapdata/9783.txt diff --git a/server508/data/mapdata/9784.txt b/servers/server508/data/mapdata/9784.txt similarity index 100% rename from server508/data/mapdata/9784.txt rename to servers/server508/data/mapdata/9784.txt diff --git a/server508/data/mapdata/9785.txt b/servers/server508/data/mapdata/9785.txt similarity index 100% rename from server508/data/mapdata/9785.txt rename to servers/server508/data/mapdata/9785.txt diff --git a/server508/data/mapdata/9786.txt b/servers/server508/data/mapdata/9786.txt similarity index 100% rename from server508/data/mapdata/9786.txt rename to servers/server508/data/mapdata/9786.txt diff --git a/server508/data/mapdata/9787.txt b/servers/server508/data/mapdata/9787.txt similarity index 100% rename from server508/data/mapdata/9787.txt rename to servers/server508/data/mapdata/9787.txt diff --git a/server508/data/mapdata/9788.txt b/servers/server508/data/mapdata/9788.txt similarity index 100% rename from server508/data/mapdata/9788.txt rename to servers/server508/data/mapdata/9788.txt diff --git a/server508/data/mapdata/9789.txt b/servers/server508/data/mapdata/9789.txt similarity index 100% rename from server508/data/mapdata/9789.txt rename to servers/server508/data/mapdata/9789.txt diff --git a/server508/data/mapdata/9796.txt b/servers/server508/data/mapdata/9796.txt similarity index 100% rename from server508/data/mapdata/9796.txt rename to servers/server508/data/mapdata/9796.txt diff --git a/server508/data/mapdata/9797.txt b/servers/server508/data/mapdata/9797.txt similarity index 100% rename from server508/data/mapdata/9797.txt rename to servers/server508/data/mapdata/9797.txt diff --git a/server508/data/mapdata/9798.txt b/servers/server508/data/mapdata/9798.txt similarity index 100% rename from server508/data/mapdata/9798.txt rename to servers/server508/data/mapdata/9798.txt diff --git a/server508/data/mapdata/9800.txt b/servers/server508/data/mapdata/9800.txt similarity index 100% rename from server508/data/mapdata/9800.txt rename to servers/server508/data/mapdata/9800.txt diff --git a/server508/data/mapdata/9801.txt b/servers/server508/data/mapdata/9801.txt similarity index 100% rename from server508/data/mapdata/9801.txt rename to servers/server508/data/mapdata/9801.txt diff --git a/server508/data/mapdata/9802.txt b/servers/server508/data/mapdata/9802.txt similarity index 100% rename from server508/data/mapdata/9802.txt rename to servers/server508/data/mapdata/9802.txt diff --git a/server508/data/mapdata/9803.txt b/servers/server508/data/mapdata/9803.txt similarity index 100% rename from server508/data/mapdata/9803.txt rename to servers/server508/data/mapdata/9803.txt diff --git a/server508/data/mapdata/9804.txt b/servers/server508/data/mapdata/9804.txt similarity index 100% rename from server508/data/mapdata/9804.txt rename to servers/server508/data/mapdata/9804.txt diff --git a/server508/data/mapdata/9805.txt b/servers/server508/data/mapdata/9805.txt similarity index 100% rename from server508/data/mapdata/9805.txt rename to servers/server508/data/mapdata/9805.txt diff --git a/server508/data/mapdata/9806.txt b/servers/server508/data/mapdata/9806.txt similarity index 100% rename from server508/data/mapdata/9806.txt rename to servers/server508/data/mapdata/9806.txt diff --git a/server508/data/mapdata/9807.txt b/servers/server508/data/mapdata/9807.txt similarity index 100% rename from server508/data/mapdata/9807.txt rename to servers/server508/data/mapdata/9807.txt diff --git a/server508/data/mapdata/9808.txt b/servers/server508/data/mapdata/9808.txt similarity index 100% rename from server508/data/mapdata/9808.txt rename to servers/server508/data/mapdata/9808.txt diff --git a/server508/data/mapdata/9809.txt b/servers/server508/data/mapdata/9809.txt similarity index 100% rename from server508/data/mapdata/9809.txt rename to servers/server508/data/mapdata/9809.txt diff --git a/server508/data/mapdata/9810.txt b/servers/server508/data/mapdata/9810.txt similarity index 100% rename from server508/data/mapdata/9810.txt rename to servers/server508/data/mapdata/9810.txt diff --git a/server508/data/mapdata/9811.txt b/servers/server508/data/mapdata/9811.txt similarity index 100% rename from server508/data/mapdata/9811.txt rename to servers/server508/data/mapdata/9811.txt diff --git a/server508/data/mapdata/9812.txt b/servers/server508/data/mapdata/9812.txt similarity index 100% rename from server508/data/mapdata/9812.txt rename to servers/server508/data/mapdata/9812.txt diff --git a/server508/data/mapdata/9813.txt b/servers/server508/data/mapdata/9813.txt similarity index 100% rename from server508/data/mapdata/9813.txt rename to servers/server508/data/mapdata/9813.txt diff --git a/server508/data/mapdata/9875.txt b/servers/server508/data/mapdata/9875.txt similarity index 100% rename from server508/data/mapdata/9875.txt rename to servers/server508/data/mapdata/9875.txt diff --git a/server508/data/mapdata/9876.txt b/servers/server508/data/mapdata/9876.txt similarity index 100% rename from server508/data/mapdata/9876.txt rename to servers/server508/data/mapdata/9876.txt diff --git a/server508/data/mapdata/9877.txt b/servers/server508/data/mapdata/9877.txt similarity index 100% rename from server508/data/mapdata/9877.txt rename to servers/server508/data/mapdata/9877.txt diff --git a/server508/data/mapdata/9881.txt b/servers/server508/data/mapdata/9881.txt similarity index 100% rename from server508/data/mapdata/9881.txt rename to servers/server508/data/mapdata/9881.txt diff --git a/server508/data/mapdata/9882.txt b/servers/server508/data/mapdata/9882.txt similarity index 100% rename from server508/data/mapdata/9882.txt rename to servers/server508/data/mapdata/9882.txt diff --git a/server508/data/mapdata/9883.txt b/servers/server508/data/mapdata/9883.txt similarity index 100% rename from server508/data/mapdata/9883.txt rename to servers/server508/data/mapdata/9883.txt diff --git a/server508/data/mapdata/9884.txt b/servers/server508/data/mapdata/9884.txt similarity index 100% rename from server508/data/mapdata/9884.txt rename to servers/server508/data/mapdata/9884.txt diff --git a/server508/data/mapdata/9885.txt b/servers/server508/data/mapdata/9885.txt similarity index 100% rename from server508/data/mapdata/9885.txt rename to servers/server508/data/mapdata/9885.txt diff --git a/server508/data/mapdata/9887.txt b/servers/server508/data/mapdata/9887.txt similarity index 100% rename from server508/data/mapdata/9887.txt rename to servers/server508/data/mapdata/9887.txt diff --git a/server508/data/mapdata/9888.txt b/servers/server508/data/mapdata/9888.txt similarity index 100% rename from server508/data/mapdata/9888.txt rename to servers/server508/data/mapdata/9888.txt diff --git a/server508/data/mapdata/9889.txt b/servers/server508/data/mapdata/9889.txt similarity index 100% rename from server508/data/mapdata/9889.txt rename to servers/server508/data/mapdata/9889.txt diff --git a/server508/data/npcs/npcdrops.cfg b/servers/server508/data/npcs/npcdrops.cfg similarity index 100% rename from server508/data/npcs/npcdrops.cfg rename to servers/server508/data/npcs/npcdrops.cfg diff --git a/server508/data/npcs/npclist.cfg b/servers/server508/data/npcs/npclist.cfg similarity index 100% rename from server508/data/npcs/npclist.cfg rename to servers/server508/data/npcs/npclist.cfg diff --git a/server508/data/npcs/npcspawn.cfg b/servers/server508/data/npcs/npcspawn.cfg similarity index 100% rename from server508/data/npcs/npcspawn.cfg rename to servers/server508/data/npcs/npcspawn.cfg diff --git a/server508/data/objects.cfg b/servers/server508/data/objects.cfg similarity index 100% rename from server508/data/objects.cfg rename to servers/server508/data/objects.cfg diff --git a/servers/server508/pom.xml b/servers/server508/pom.xml new file mode 100644 index 0000000..2611799 --- /dev/null +++ b/servers/server508/pom.xml @@ -0,0 +1,37 @@ + + + + + + org.moparscape.client + servers + 0.1-SNAPSHOT + + 4.0.0 + server508 + + + + maven-antrun-plugin + + + + \ No newline at end of file diff --git a/server508/src/DavidScape/ClanChat/ClanList.java b/servers/server508/src/main/java/DavidScape/ClanChat/ClanList.java similarity index 100% rename from server508/src/DavidScape/ClanChat/ClanList.java rename to servers/server508/src/main/java/DavidScape/ClanChat/ClanList.java diff --git a/server508/src/DavidScape/ClanChat/ClanMain.java b/servers/server508/src/main/java/DavidScape/ClanChat/ClanMain.java similarity index 100% rename from server508/src/DavidScape/ClanChat/ClanMain.java rename to servers/server508/src/main/java/DavidScape/ClanChat/ClanMain.java diff --git a/server508/src/DavidScape/ClanChat/SaveChats.java b/servers/server508/src/main/java/DavidScape/ClanChat/SaveChats.java similarity index 100% rename from server508/src/DavidScape/ClanChat/SaveChats.java rename to servers/server508/src/main/java/DavidScape/ClanChat/SaveChats.java diff --git a/server508/src/DavidScape/ClanChat/inChat.java b/servers/server508/src/main/java/DavidScape/ClanChat/inChat.java similarity index 100% rename from server508/src/DavidScape/ClanChat/inChat.java rename to servers/server508/src/main/java/DavidScape/ClanChat/inChat.java diff --git a/server508/src/DavidScape/Engine.java b/servers/server508/src/main/java/DavidScape/Engine.java similarity index 100% rename from server508/src/DavidScape/Engine.java rename to servers/server508/src/main/java/DavidScape/Engine.java diff --git a/server508/src/DavidScape/Server.java b/servers/server508/src/main/java/DavidScape/Server.java similarity index 100% rename from server508/src/DavidScape/Server.java rename to servers/server508/src/main/java/DavidScape/Server.java diff --git a/server508/src/DavidScape/Skills/Fishing.java b/servers/server508/src/main/java/DavidScape/Skills/Fishing.java similarity index 100% rename from server508/src/DavidScape/Skills/Fishing.java rename to servers/server508/src/main/java/DavidScape/Skills/Fishing.java diff --git a/server508/src/DavidScape/Skills/Mining.java b/servers/server508/src/main/java/DavidScape/Skills/Mining.java similarity index 100% rename from server508/src/DavidScape/Skills/Mining.java rename to servers/server508/src/main/java/DavidScape/Skills/Mining.java diff --git a/server508/src/DavidScape/Skills/Smithing.java b/servers/server508/src/main/java/DavidScape/Skills/Smithing.java similarity index 100% rename from server508/src/DavidScape/Skills/Smithing.java rename to servers/server508/src/main/java/DavidScape/Skills/Smithing.java diff --git a/server508/src/DavidScape/Skills/Woodcutting.java b/servers/server508/src/main/java/DavidScape/Skills/Woodcutting.java similarity index 100% rename from server508/src/DavidScape/Skills/Woodcutting.java rename to servers/server508/src/main/java/DavidScape/Skills/Woodcutting.java diff --git a/server508/src/DavidScape/Skills/construction/Construction.java b/servers/server508/src/main/java/DavidScape/Skills/construction/Construction.java similarity index 100% rename from server508/src/DavidScape/Skills/construction/Construction.java rename to servers/server508/src/main/java/DavidScape/Skills/construction/Construction.java diff --git a/server508/src/DavidScape/io/FileManager.java b/servers/server508/src/main/java/DavidScape/io/FileManager.java similarity index 100% rename from server508/src/DavidScape/io/FileManager.java rename to servers/server508/src/main/java/DavidScape/io/FileManager.java diff --git a/server508/src/DavidScape/io/Frames.java b/servers/server508/src/main/java/DavidScape/io/Frames.java similarity index 100% rename from server508/src/DavidScape/io/Frames.java rename to servers/server508/src/main/java/DavidScape/io/Frames.java diff --git a/server508/src/DavidScape/io/Login.java b/servers/server508/src/main/java/DavidScape/io/Login.java similarity index 100% rename from server508/src/DavidScape/io/Login.java rename to servers/server508/src/main/java/DavidScape/io/Login.java diff --git a/server508/src/DavidScape/io/PacketManager.java b/servers/server508/src/main/java/DavidScape/io/PacketManager.java similarity index 100% rename from server508/src/DavidScape/io/PacketManager.java rename to servers/server508/src/main/java/DavidScape/io/PacketManager.java diff --git a/server508/src/DavidScape/io/Packets.java b/servers/server508/src/main/java/DavidScape/io/Packets.java similarity index 100% rename from server508/src/DavidScape/io/Packets.java rename to servers/server508/src/main/java/DavidScape/io/Packets.java diff --git a/server508/src/DavidScape/io/packets/ActionButtons.java b/servers/server508/src/main/java/DavidScape/io/packets/ActionButtons.java similarity index 100% rename from server508/src/DavidScape/io/packets/ActionButtons.java rename to servers/server508/src/main/java/DavidScape/io/packets/ActionButtons.java diff --git a/server508/src/DavidScape/io/packets/Assault.java b/servers/server508/src/main/java/DavidScape/io/packets/Assault.java similarity index 100% rename from server508/src/DavidScape/io/packets/Assault.java rename to servers/server508/src/main/java/DavidScape/io/packets/Assault.java diff --git a/server508/src/DavidScape/io/packets/ClanChat.java b/servers/server508/src/main/java/DavidScape/io/packets/ClanChat.java similarity index 100% rename from server508/src/DavidScape/io/packets/ClanChat.java rename to servers/server508/src/main/java/DavidScape/io/packets/ClanChat.java diff --git a/server508/src/DavidScape/io/packets/Commands.java b/servers/server508/src/main/java/DavidScape/io/packets/Commands.java similarity index 100% rename from server508/src/DavidScape/io/packets/Commands.java rename to servers/server508/src/main/java/DavidScape/io/packets/Commands.java diff --git a/server508/src/DavidScape/io/packets/DropItem.java b/servers/server508/src/main/java/DavidScape/io/packets/DropItem.java similarity index 100% rename from server508/src/DavidScape/io/packets/DropItem.java rename to servers/server508/src/main/java/DavidScape/io/packets/DropItem.java diff --git a/server508/src/DavidScape/io/packets/Equipment.java b/servers/server508/src/main/java/DavidScape/io/packets/Equipment.java similarity index 100% rename from server508/src/DavidScape/io/packets/Equipment.java rename to servers/server508/src/main/java/DavidScape/io/packets/Equipment.java diff --git a/server508/src/DavidScape/io/packets/ItemGive.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemGive.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemGive.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemGive.java diff --git a/server508/src/DavidScape/io/packets/ItemOnItem.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOnItem.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOnItem.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOnItem.java diff --git a/server508/src/DavidScape/io/packets/ItemOnNPC.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOnNPC.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOnNPC.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOnNPC.java diff --git a/server508/src/DavidScape/io/packets/ItemOnObject.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOnObject.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOnObject.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOnObject.java diff --git a/server508/src/DavidScape/io/packets/ItemOperate.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOperate.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOperate.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOperate.java diff --git a/server508/src/DavidScape/io/packets/ItemOption1.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOption1.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOption1.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOption1.java diff --git a/server508/src/DavidScape/io/packets/ItemOption2.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemOption2.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemOption2.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemOption2.java diff --git a/server508/src/DavidScape/io/packets/ItemSelect.java b/servers/server508/src/main/java/DavidScape/io/packets/ItemSelect.java similarity index 100% rename from server508/src/DavidScape/io/packets/ItemSelect.java rename to servers/server508/src/main/java/DavidScape/io/packets/ItemSelect.java diff --git a/server508/src/DavidScape/io/packets/MagicOnNPC.java b/servers/server508/src/main/java/DavidScape/io/packets/MagicOnNPC.java similarity index 100% rename from server508/src/DavidScape/io/packets/MagicOnNPC.java rename to servers/server508/src/main/java/DavidScape/io/packets/MagicOnNPC.java diff --git a/server508/src/DavidScape/io/packets/MagicOnPlayer.java b/servers/server508/src/main/java/DavidScape/io/packets/MagicOnPlayer.java similarity index 100% rename from server508/src/DavidScape/io/packets/MagicOnPlayer.java rename to servers/server508/src/main/java/DavidScape/io/packets/MagicOnPlayer.java diff --git a/server508/src/DavidScape/io/packets/NPCAttack.java b/servers/server508/src/main/java/DavidScape/io/packets/NPCAttack.java similarity index 100% rename from server508/src/DavidScape/io/packets/NPCAttack.java rename to servers/server508/src/main/java/DavidScape/io/packets/NPCAttack.java diff --git a/server508/src/DavidScape/io/packets/NPCOption1.java b/servers/server508/src/main/java/DavidScape/io/packets/NPCOption1.java similarity index 100% rename from server508/src/DavidScape/io/packets/NPCOption1.java rename to servers/server508/src/main/java/DavidScape/io/packets/NPCOption1.java diff --git a/server508/src/DavidScape/io/packets/NPCOption2.java b/servers/server508/src/main/java/DavidScape/io/packets/NPCOption2.java similarity index 100% rename from server508/src/DavidScape/io/packets/NPCOption2.java rename to servers/server508/src/main/java/DavidScape/io/packets/NPCOption2.java diff --git a/server508/src/DavidScape/io/packets/NPCOption3.java b/servers/server508/src/main/java/DavidScape/io/packets/NPCOption3.java similarity index 100% rename from server508/src/DavidScape/io/packets/NPCOption3.java rename to servers/server508/src/main/java/DavidScape/io/packets/NPCOption3.java diff --git a/server508/src/DavidScape/io/packets/ObjectOption1.java b/servers/server508/src/main/java/DavidScape/io/packets/ObjectOption1.java similarity index 100% rename from server508/src/DavidScape/io/packets/ObjectOption1.java rename to servers/server508/src/main/java/DavidScape/io/packets/ObjectOption1.java diff --git a/server508/src/DavidScape/io/packets/ObjectOption2.java b/servers/server508/src/main/java/DavidScape/io/packets/ObjectOption2.java similarity index 100% rename from server508/src/DavidScape/io/packets/ObjectOption2.java rename to servers/server508/src/main/java/DavidScape/io/packets/ObjectOption2.java diff --git a/server508/src/DavidScape/io/packets/Packet.java b/servers/server508/src/main/java/DavidScape/io/packets/Packet.java similarity index 100% rename from server508/src/DavidScape/io/packets/Packet.java rename to servers/server508/src/main/java/DavidScape/io/packets/Packet.java diff --git a/server508/src/DavidScape/io/packets/PickupItem.java b/servers/server508/src/main/java/DavidScape/io/packets/PickupItem.java similarity index 100% rename from server508/src/DavidScape/io/packets/PickupItem.java rename to servers/server508/src/main/java/DavidScape/io/packets/PickupItem.java diff --git a/server508/src/DavidScape/io/packets/PlayerOption1.java b/servers/server508/src/main/java/DavidScape/io/packets/PlayerOption1.java similarity index 100% rename from server508/src/DavidScape/io/packets/PlayerOption1.java rename to servers/server508/src/main/java/DavidScape/io/packets/PlayerOption1.java diff --git a/server508/src/DavidScape/io/packets/PlayerOption2.java b/servers/server508/src/main/java/DavidScape/io/packets/PlayerOption2.java similarity index 100% rename from server508/src/DavidScape/io/packets/PlayerOption2.java rename to servers/server508/src/main/java/DavidScape/io/packets/PlayerOption2.java diff --git a/server508/src/DavidScape/io/packets/PlayerOption3.java b/servers/server508/src/main/java/DavidScape/io/packets/PlayerOption3.java similarity index 100% rename from server508/src/DavidScape/io/packets/PlayerOption3.java rename to servers/server508/src/main/java/DavidScape/io/packets/PlayerOption3.java diff --git a/server508/src/DavidScape/io/packets/Prayer.java b/servers/server508/src/main/java/DavidScape/io/packets/Prayer.java similarity index 100% rename from server508/src/DavidScape/io/packets/Prayer.java rename to servers/server508/src/main/java/DavidScape/io/packets/Prayer.java diff --git a/server508/src/DavidScape/io/packets/PublicChat.java b/servers/server508/src/main/java/DavidScape/io/packets/PublicChat.java similarity index 100% rename from server508/src/DavidScape/io/packets/PublicChat.java rename to servers/server508/src/main/java/DavidScape/io/packets/PublicChat.java diff --git a/server508/src/DavidScape/io/packets/SwitchItems.java b/servers/server508/src/main/java/DavidScape/io/packets/SwitchItems.java similarity index 100% rename from server508/src/DavidScape/io/packets/SwitchItems.java rename to servers/server508/src/main/java/DavidScape/io/packets/SwitchItems.java diff --git a/server508/src/DavidScape/io/packets/SwitchItems2.java b/servers/server508/src/main/java/DavidScape/io/packets/SwitchItems2.java similarity index 100% rename from server508/src/DavidScape/io/packets/SwitchItems2.java rename to servers/server508/src/main/java/DavidScape/io/packets/SwitchItems2.java diff --git a/server508/src/DavidScape/io/packets/Walking.java b/servers/server508/src/main/java/DavidScape/io/packets/Walking.java similarity index 100% rename from server508/src/DavidScape/io/packets/Walking.java rename to servers/server508/src/main/java/DavidScape/io/packets/Walking.java diff --git a/server508/src/DavidScape/io/packets/bountyHunter.java b/servers/server508/src/main/java/DavidScape/io/packets/bountyHunter.java similarity index 100% rename from server508/src/DavidScape/io/packets/bountyHunter.java rename to servers/server508/src/main/java/DavidScape/io/packets/bountyHunter.java diff --git a/server508/src/DavidScape/io/packets/desktop.ini b/servers/server508/src/main/java/DavidScape/io/packets/desktop.ini similarity index 100% rename from server508/src/DavidScape/io/packets/desktop.ini rename to servers/server508/src/main/java/DavidScape/io/packets/desktop.ini diff --git a/server508/src/DavidScape/net/ConnectionManager.java b/servers/server508/src/main/java/DavidScape/net/ConnectionManager.java similarity index 100% rename from server508/src/DavidScape/net/ConnectionManager.java rename to servers/server508/src/main/java/DavidScape/net/ConnectionManager.java diff --git a/server508/src/DavidScape/net/Monitor.java b/servers/server508/src/main/java/DavidScape/net/Monitor.java similarity index 100% rename from server508/src/DavidScape/net/Monitor.java rename to servers/server508/src/main/java/DavidScape/net/Monitor.java diff --git a/server508/src/DavidScape/net/PlayerSocket.java b/servers/server508/src/main/java/DavidScape/net/PlayerSocket.java similarity index 100% rename from server508/src/DavidScape/net/PlayerSocket.java rename to servers/server508/src/main/java/DavidScape/net/PlayerSocket.java diff --git a/server508/src/DavidScape/net/Protect.java b/servers/server508/src/main/java/DavidScape/net/Protect.java similarity index 100% rename from server508/src/DavidScape/net/Protect.java rename to servers/server508/src/main/java/DavidScape/net/Protect.java diff --git a/server508/src/DavidScape/net/SocketListener.java b/servers/server508/src/main/java/DavidScape/net/SocketListener.java similarity index 100% rename from server508/src/DavidScape/net/SocketListener.java rename to servers/server508/src/main/java/DavidScape/net/SocketListener.java diff --git a/server508/src/DavidScape/net/desktop.ini b/servers/server508/src/main/java/DavidScape/net/desktop.ini similarity index 100% rename from server508/src/DavidScape/net/desktop.ini rename to servers/server508/src/main/java/DavidScape/net/desktop.ini diff --git a/server508/src/DavidScape/npcs/NPC.java b/servers/server508/src/main/java/DavidScape/npcs/NPC.java similarity index 100% rename from server508/src/DavidScape/npcs/NPC.java rename to servers/server508/src/main/java/DavidScape/npcs/NPC.java diff --git a/server508/src/DavidScape/npcs/combat/NPCPlayerCombat.java b/servers/server508/src/main/java/DavidScape/npcs/combat/NPCPlayerCombat.java similarity index 100% rename from server508/src/DavidScape/npcs/combat/NPCPlayerCombat.java rename to servers/server508/src/main/java/DavidScape/npcs/combat/NPCPlayerCombat.java diff --git a/server508/src/DavidScape/npcs/loading/LoadNPCLists.java b/servers/server508/src/main/java/DavidScape/npcs/loading/LoadNPCLists.java similarity index 100% rename from server508/src/DavidScape/npcs/loading/LoadNPCLists.java rename to servers/server508/src/main/java/DavidScape/npcs/loading/LoadNPCLists.java diff --git a/server508/src/DavidScape/npcs/loading/NPCList.java b/servers/server508/src/main/java/DavidScape/npcs/loading/NPCList.java similarity index 100% rename from server508/src/DavidScape/npcs/loading/NPCList.java rename to servers/server508/src/main/java/DavidScape/npcs/loading/NPCList.java diff --git a/server508/src/DavidScape/npcs/loading/desktop.ini b/servers/server508/src/main/java/DavidScape/npcs/loading/desktop.ini similarity index 100% rename from server508/src/DavidScape/npcs/loading/desktop.ini rename to servers/server508/src/main/java/DavidScape/npcs/loading/desktop.ini diff --git a/server508/src/DavidScape/npcs/update/NPCMovement.java b/servers/server508/src/main/java/DavidScape/npcs/update/NPCMovement.java similarity index 100% rename from server508/src/DavidScape/npcs/update/NPCMovement.java rename to servers/server508/src/main/java/DavidScape/npcs/update/NPCMovement.java diff --git a/server508/src/DavidScape/npcs/update/NPCUpdate.java b/servers/server508/src/main/java/DavidScape/npcs/update/NPCUpdate.java similarity index 100% rename from server508/src/DavidScape/npcs/update/NPCUpdate.java rename to servers/server508/src/main/java/DavidScape/npcs/update/NPCUpdate.java diff --git a/server508/src/DavidScape/npcs/update/NPCUpdateMasks.java b/servers/server508/src/main/java/DavidScape/npcs/update/NPCUpdateMasks.java similarity index 100% rename from server508/src/DavidScape/npcs/update/NPCUpdateMasks.java rename to servers/server508/src/main/java/DavidScape/npcs/update/NPCUpdateMasks.java diff --git a/server508/src/DavidScape/players/Magic.java b/servers/server508/src/main/java/DavidScape/players/Magic.java similarity index 100% rename from server508/src/DavidScape/players/Magic.java rename to servers/server508/src/main/java/DavidScape/players/Magic.java diff --git a/server508/src/DavidScape/players/Player.java b/servers/server508/src/main/java/DavidScape/players/Player.java similarity index 100% rename from server508/src/DavidScape/players/Player.java rename to servers/server508/src/main/java/DavidScape/players/Player.java diff --git a/server508/src/DavidScape/players/PlayerFollow.java b/servers/server508/src/main/java/DavidScape/players/PlayerFollow.java similarity index 100% rename from server508/src/DavidScape/players/PlayerFollow.java rename to servers/server508/src/main/java/DavidScape/players/PlayerFollow.java diff --git a/server508/src/DavidScape/players/PlayerSave.java b/servers/server508/src/main/java/DavidScape/players/PlayerSave.java similarity index 100% rename from server508/src/DavidScape/players/PlayerSave.java rename to servers/server508/src/main/java/DavidScape/players/PlayerSave.java diff --git a/server508/src/DavidScape/players/UserInput.java b/servers/server508/src/main/java/DavidScape/players/UserInput.java similarity index 100% rename from server508/src/DavidScape/players/UserInput.java rename to servers/server508/src/main/java/DavidScape/players/UserInput.java diff --git a/server508/src/DavidScape/players/castlewars/CastleWarsFL.java b/servers/server508/src/main/java/DavidScape/players/castlewars/CastleWarsFL.java similarity index 100% rename from server508/src/DavidScape/players/castlewars/CastleWarsFL.java rename to servers/server508/src/main/java/DavidScape/players/castlewars/CastleWarsFL.java diff --git a/server508/src/DavidScape/players/combat/MagicNPC.java b/servers/server508/src/main/java/DavidScape/players/combat/MagicNPC.java similarity index 100% rename from server508/src/DavidScape/players/combat/MagicNPC.java rename to servers/server508/src/main/java/DavidScape/players/combat/MagicNPC.java diff --git a/server508/src/DavidScape/players/combat/PlayerCombat.java b/servers/server508/src/main/java/DavidScape/players/combat/PlayerCombat.java similarity index 100% rename from server508/src/DavidScape/players/combat/PlayerCombat.java rename to servers/server508/src/main/java/DavidScape/players/combat/PlayerCombat.java diff --git a/server508/src/DavidScape/players/combat/PlayerNPCCombat.java b/servers/server508/src/main/java/DavidScape/players/combat/PlayerNPCCombat.java similarity index 100% rename from server508/src/DavidScape/players/combat/PlayerNPCCombat.java rename to servers/server508/src/main/java/DavidScape/players/combat/PlayerNPCCombat.java diff --git a/server508/src/DavidScape/players/items/BankUtils.java b/servers/server508/src/main/java/DavidScape/players/items/BankUtils.java similarity index 100% rename from server508/src/DavidScape/players/items/BankUtils.java rename to servers/server508/src/main/java/DavidScape/players/items/BankUtils.java diff --git a/server508/src/DavidScape/players/items/ItemObject.java b/servers/server508/src/main/java/DavidScape/players/items/ItemObject.java similarity index 100% rename from server508/src/DavidScape/players/items/ItemObject.java rename to servers/server508/src/main/java/DavidScape/players/items/ItemObject.java diff --git a/server508/src/DavidScape/players/items/PlayerBank.java b/servers/server508/src/main/java/DavidScape/players/items/PlayerBank.java similarity index 100% rename from server508/src/DavidScape/players/items/PlayerBank.java rename to servers/server508/src/main/java/DavidScape/players/items/PlayerBank.java diff --git a/server508/src/DavidScape/players/items/PlayerItems.java b/servers/server508/src/main/java/DavidScape/players/items/PlayerItems.java similarity index 100% rename from server508/src/DavidScape/players/items/PlayerItems.java rename to servers/server508/src/main/java/DavidScape/players/items/PlayerItems.java diff --git a/server508/src/DavidScape/players/items/PlayerTrade.java b/servers/server508/src/main/java/DavidScape/players/items/PlayerTrade.java similarity index 100% rename from server508/src/DavidScape/players/items/PlayerTrade.java rename to servers/server508/src/main/java/DavidScape/players/items/PlayerTrade.java diff --git a/server508/src/DavidScape/players/items/PlayerWeapon.java b/servers/server508/src/main/java/DavidScape/players/items/PlayerWeapon.java similarity index 100% rename from server508/src/DavidScape/players/items/PlayerWeapon.java rename to servers/server508/src/main/java/DavidScape/players/items/PlayerWeapon.java diff --git a/server508/src/DavidScape/players/items/ReqItems.java b/servers/server508/src/main/java/DavidScape/players/items/ReqItems.java similarity index 100% rename from server508/src/DavidScape/players/items/ReqItems.java rename to servers/server508/src/main/java/DavidScape/players/items/ReqItems.java diff --git a/server508/src/DavidScape/players/objectLoader.java b/servers/server508/src/main/java/DavidScape/players/objectLoader.java similarity index 100% rename from server508/src/DavidScape/players/objectLoader.java rename to servers/server508/src/main/java/DavidScape/players/objectLoader.java diff --git a/server508/src/DavidScape/players/ptrade/PTrade.java b/servers/server508/src/main/java/DavidScape/players/ptrade/PTrade.java similarity index 100% rename from server508/src/DavidScape/players/ptrade/PTrade.java rename to servers/server508/src/main/java/DavidScape/players/ptrade/PTrade.java diff --git a/server508/src/DavidScape/players/ptrade/TButtons.java b/servers/server508/src/main/java/DavidScape/players/ptrade/TButtons.java similarity index 100% rename from server508/src/DavidScape/players/ptrade/TButtons.java rename to servers/server508/src/main/java/DavidScape/players/ptrade/TButtons.java diff --git a/server508/src/DavidScape/players/ptrade/TItem.java b/servers/server508/src/main/java/DavidScape/players/ptrade/TItem.java similarity index 100% rename from server508/src/DavidScape/players/ptrade/TItem.java rename to servers/server508/src/main/java/DavidScape/players/ptrade/TItem.java diff --git a/server508/src/DavidScape/players/update/PlayerMovement.java b/servers/server508/src/main/java/DavidScape/players/update/PlayerMovement.java similarity index 100% rename from server508/src/DavidScape/players/update/PlayerMovement.java rename to servers/server508/src/main/java/DavidScape/players/update/PlayerMovement.java diff --git a/server508/src/DavidScape/players/update/PlayerUpdate.java b/servers/server508/src/main/java/DavidScape/players/update/PlayerUpdate.java similarity index 100% rename from server508/src/DavidScape/players/update/PlayerUpdate.java rename to servers/server508/src/main/java/DavidScape/players/update/PlayerUpdate.java diff --git a/server508/src/DavidScape/players/update/PlayerUpdateMasks.java b/servers/server508/src/main/java/DavidScape/players/update/PlayerUpdateMasks.java similarity index 100% rename from server508/src/DavidScape/players/update/PlayerUpdateMasks.java rename to servers/server508/src/main/java/DavidScape/players/update/PlayerUpdateMasks.java diff --git a/server508/src/DavidScape/util/Misc.java b/servers/server508/src/main/java/DavidScape/util/Misc.java similarity index 100% rename from server508/src/DavidScape/util/Misc.java rename to servers/server508/src/main/java/DavidScape/util/Misc.java diff --git a/server508/src/DavidScape/util/ShopHandler.java b/servers/server508/src/main/java/DavidScape/util/ShopHandler.java similarity index 100% rename from server508/src/DavidScape/util/ShopHandler.java rename to servers/server508/src/main/java/DavidScape/util/ShopHandler.java diff --git a/server508/src/DavidScape/util/Stream.java b/servers/server508/src/main/java/DavidScape/util/Stream.java similarity index 100% rename from server508/src/DavidScape/util/Stream.java rename to servers/server508/src/main/java/DavidScape/util/Stream.java diff --git a/server508/src/DavidScape/util/Vars.java b/servers/server508/src/main/java/DavidScape/util/Vars.java similarity index 100% rename from server508/src/DavidScape/util/Vars.java rename to servers/server508/src/main/java/DavidScape/util/Vars.java diff --git a/server508/src/DavidScape/world/items/BankUtils.java b/servers/server508/src/main/java/DavidScape/world/items/BankUtils.java similarity index 100% rename from server508/src/DavidScape/world/items/BankUtils.java rename to servers/server508/src/main/java/DavidScape/world/items/BankUtils.java diff --git a/server508/src/DavidScape/world/items/GroundItem.java b/servers/server508/src/main/java/DavidScape/world/items/GroundItem.java similarity index 100% rename from server508/src/DavidScape/world/items/GroundItem.java rename to servers/server508/src/main/java/DavidScape/world/items/GroundItem.java diff --git a/server508/src/DavidScape/world/items/ItemList.java b/servers/server508/src/main/java/DavidScape/world/items/ItemList.java similarity index 100% rename from server508/src/DavidScape/world/items/ItemList.java rename to servers/server508/src/main/java/DavidScape/world/items/ItemList.java diff --git a/server508/src/DavidScape/world/items/Items.java b/servers/server508/src/main/java/DavidScape/world/items/Items.java similarity index 100% rename from server508/src/DavidScape/world/items/Items.java rename to servers/server508/src/main/java/DavidScape/world/items/Items.java diff --git a/server508/src/DavidScape/world/mapdata/MapData.java b/servers/server508/src/main/java/DavidScape/world/mapdata/MapData.java similarity index 100% rename from server508/src/DavidScape/world/mapdata/MapData.java rename to servers/server508/src/main/java/DavidScape/world/mapdata/MapData.java diff --git a/server508/src/DavidScape/world/mapdata/MapList.java b/servers/server508/src/main/java/DavidScape/world/mapdata/MapList.java similarity index 100% rename from server508/src/DavidScape/world/mapdata/MapList.java rename to servers/server508/src/main/java/DavidScape/world/mapdata/MapList.java diff --git a/server508/src/server.java b/servers/server508/src/main/java/server.java similarity index 100% rename from server508/src/server.java rename to servers/server508/src/main/java/server.java