1
.gitignore
vendored
1
.gitignore
vendored
@@ -12,3 +12,4 @@ runelite-client/src/main/resources/META-INF/MANIFEST.MF
|
||||
git
|
||||
classes/artifacts/client_jar/run.bat
|
||||
classes/artifacts/client_jar/client.jar
|
||||
*.jar
|
||||
|
||||
24
README.md
24
README.md
@@ -2,25 +2,23 @@
|
||||
|
||||
|
||||
|
||||
# RuneLitePlus-PS rev180 [](https://travis-ci.org/zeruth/runeliteplus-ps) [](https://discord.gg/HN5gf3m)
|
||||
# RuneLitePlus [](https://travis-ci.org/runelite-extended/runelite) [](https://discord.gg/HN5gf3m)
|
||||
|
||||
[RuneLitePlus-PS](https://runelitepl.us) is a fork of [RuneLite](https://github.com/runelite/runelite) that provides more functionality and less restrictions while staying open source. This is a specific version meant for rs-mod which can be found here:
|
||||
https://www.rune-server.ee/runescape-development/rs2-server/downloads/684206-180-rs-mod-release.html
|
||||
[RuneLitePlus](https://runelitepl.us) is a fork of [RuneLite](https://github.com/runelite/runelite) that provides more functionality and less restrictions while staying open source. This is meant to directly compete with 3rd party RL clients that are trying to sell their code.
|
||||
|
||||
## Usage
|
||||
## Project Layout
|
||||
|
||||
By default, this connects to our sandbox server, which is for client testing.
|
||||
|
||||
To setup your rsa keys, navigate to runelite-mixins and go to RSBufferMixin and set modulus and exponent
|
||||
To setup your codebase, navigate to runelite-client/rs and go to Launcher and set codebase = new URL("http://IP_OR_URL_HERE/");
|
||||
|
||||
After that it's ran much like RuneLite or RuneLitePlus, install then run RuneLite.main()
|
||||
|
||||
To release the built jar publicly, you'd have to host your injected client remotely and make some small modifications to rs.ClientLoader
|
||||
- [cache](cache/src/main/java/net/runelite/cache) - Libraries used for reading/writing cache files, as well as the data in it
|
||||
- [http-api](http-api/src/main/java/net/runelite/http/api) - API for api.runelite.net
|
||||
- [http-service](http-service/src/main/java/net/runelite/http/service) - Service for api.runelite.net
|
||||
- [runelite-api](runelite-api/src/main/java/net/runelite/api) - RuneLite API, interfaces for accessing the client
|
||||
- [runelite-mixins](runelite-mixins/src/main/java/net/runelite) - Mixins which are injected into the injected client's classes
|
||||
- [runescape-api](runescape-api/src/main/java/net/runelite) - Mappings correspond to these interfaces, runelite-api is a subset of this
|
||||
- [runelite-client](runelite-client/src/main/java/net/runelite/client) - Game client with plugins
|
||||
|
||||
## License
|
||||
|
||||
RuneLitePlus-PS is licensed under the BSD 2-clause license. See the license header in the respective file to be sure.
|
||||
RuneLitePlus is licensed under the BSD 2-clause license. See the license header in the respective file to be sure.
|
||||
|
||||
## Contribute and Develop
|
||||
|
||||
|
||||
@@ -25,10 +25,7 @@
|
||||
package net.runelite.http.api;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.OkHttpClient;
|
||||
@@ -36,23 +33,45 @@ import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Properties;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class RuneLiteAPI
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(RuneLiteAPI.class);
|
||||
|
||||
public static final String RUNELITE_AUTH = "RUNELITE-AUTH";
|
||||
|
||||
public static final OkHttpClient CLIENT;
|
||||
public static final Gson GSON = new Gson();
|
||||
public static String userAgent;
|
||||
|
||||
public static final OkHttpClient RLP_CLIENT;
|
||||
public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
|
||||
private static final Logger logger = LoggerFactory.getLogger(RuneLiteAPI.class);
|
||||
private static final String BASE = "https://api.runelite.net";
|
||||
private static final String PLUS_BASE = "https://api.runelitepl.us";
|
||||
private static final String RLPLUS = "https://session.runelitepl.us";
|
||||
private static final String WSBASE = "https://api.runelite.net/ws";
|
||||
private static final String STATICBASE = "https://static.runelite.net";
|
||||
private static final String MAVEN_METADATA =
|
||||
"http://repo.runelite.net/net/runelite/runelite-parent/maven-metadata.xml";
|
||||
private static final String GITHUB_API = "https://api.github.com/repos/runelite/runelite/commits/master";
|
||||
private static final String ALPHA_NUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
|
||||
private static final Properties properties = new Properties();
|
||||
private static String userAgent;
|
||||
private static String rlpUserAgent;
|
||||
private static String version;
|
||||
private static String rlpVersion;
|
||||
private static int rsVersion;
|
||||
|
||||
static
|
||||
@@ -62,12 +81,16 @@ public class RuneLiteAPI
|
||||
InputStream in = RuneLiteAPI.class.getResourceAsStream("/runelite.properties");
|
||||
properties.load(in);
|
||||
|
||||
version = properties.getProperty("runelite.version");
|
||||
parseMavenVersion();
|
||||
String commit = parseGithubCommit();
|
||||
|
||||
rlpVersion = properties.getProperty("runelite.version");
|
||||
rsVersion = Integer.parseInt(properties.getProperty("rs.version"));
|
||||
String commit = properties.getProperty("runelite.commit");
|
||||
String rlpCommit = properties.getProperty("runelite.commit");
|
||||
boolean dirty = Boolean.parseBoolean(properties.getProperty("runelite.dirty"));
|
||||
|
||||
userAgent = "RuneLite/" + version + "-" + commit + (dirty ? "+" : "");
|
||||
rlpUserAgent = "RuneLite/" + rlpVersion + "-" + rlpCommit + (dirty ? "+" : "");
|
||||
}
|
||||
catch (NumberFormatException e)
|
||||
{
|
||||
@@ -82,7 +105,6 @@ public class RuneLiteAPI
|
||||
.pingInterval(30, TimeUnit.SECONDS)
|
||||
.addNetworkInterceptor(new Interceptor()
|
||||
{
|
||||
|
||||
@Override
|
||||
public Response intercept(Chain chain) throws IOException
|
||||
{
|
||||
@@ -94,6 +116,22 @@ public class RuneLiteAPI
|
||||
}
|
||||
})
|
||||
.build();
|
||||
|
||||
RLP_CLIENT = new OkHttpClient.Builder()
|
||||
.pingInterval(30, TimeUnit.SECONDS)
|
||||
.addNetworkInterceptor(new Interceptor()
|
||||
{
|
||||
@Override
|
||||
public Response intercept(Chain chain) throws IOException
|
||||
{
|
||||
Request userAgentRequest = chain.request()
|
||||
.newBuilder()
|
||||
.header("User-Agent", rlpUserAgent)
|
||||
.build();
|
||||
return chain.proceed(userAgentRequest);
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
public static HttpUrl getSessionBase()
|
||||
@@ -125,6 +163,11 @@ public class RuneLiteAPI
|
||||
return HttpUrl.parse(BASE + "/runelite-" + getVersion());
|
||||
}
|
||||
|
||||
public static HttpUrl getPlusApiBase()
|
||||
{
|
||||
return HttpUrl.parse(PLUS_BASE + "/runelite-" + getRlpVersion());
|
||||
}
|
||||
|
||||
public static HttpUrl getStaticBase()
|
||||
{
|
||||
final String prop = System.getProperty("runelite.static.url");
|
||||
@@ -164,4 +207,94 @@ public class RuneLiteAPI
|
||||
return rsVersion;
|
||||
}
|
||||
|
||||
public static String getRlpVersion()
|
||||
{
|
||||
return rlpVersion;
|
||||
}
|
||||
|
||||
private static byte[] downloadUrl(URL toDownload)
|
||||
{
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
InputStream stream;
|
||||
try
|
||||
{
|
||||
byte[] chunk = new byte[4096];
|
||||
int bytesRead;
|
||||
URLConnection conn = toDownload.openConnection();
|
||||
conn.setRequestProperty("User-Agent", toDownload.getHost().contains("runelite") ? randomAlphaNumeric(8) : "runelite-extended");
|
||||
stream = conn.getInputStream();
|
||||
|
||||
while ((bytesRead = stream.read(chunk)) > 0)
|
||||
{
|
||||
outputStream.write(chunk, 0, bytesRead);
|
||||
}
|
||||
stream.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
|
||||
return outputStream.toByteArray();
|
||||
}
|
||||
|
||||
private static void parseMavenVersion()
|
||||
{
|
||||
try (ByteArrayInputStream fis = new ByteArrayInputStream(downloadUrl(new URL(MAVEN_METADATA))))
|
||||
{
|
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||
factory.setValidating(false);
|
||||
factory.setIgnoringElementContentWhitespace(true);
|
||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||
Document doc = builder.parse(fis);
|
||||
NodeList versionList = doc.getElementsByTagName("version");
|
||||
for (int i = 0; i != versionList.getLength(); i++)
|
||||
{
|
||||
Node node = versionList.item(i);
|
||||
if (node.getTextContent() != null)
|
||||
{
|
||||
version = node.getTextContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (ParserConfigurationException | IOException | SAXException ex)
|
||||
{
|
||||
logger.error(null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
private static String parseGithubCommit()
|
||||
{
|
||||
try
|
||||
{
|
||||
String jsonData = new String(downloadUrl(new URL(GITHUB_API)));
|
||||
for (String s : jsonData.split("\n"))
|
||||
{
|
||||
if (s.startsWith("\"sha\":"))
|
||||
{
|
||||
s = s.replace(",", "");
|
||||
s = s.replace(" ", "");
|
||||
s = s.replace("\"", "");
|
||||
return s.split(":")[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String randomAlphaNumeric(int count)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder();
|
||||
while (count-- != 0)
|
||||
{
|
||||
int character = (int) (Math.random() * ALPHA_NUMERIC_STRING.length());
|
||||
builder.append(ALPHA_NUMERIC_STRING.charAt(character));
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class XteaClient
|
||||
{
|
||||
String json = RuneLiteAPI.GSON.toJson(xteaRequest);
|
||||
|
||||
HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
|
||||
HttpUrl url = RuneLiteAPI.getPlusApiBase().newBuilder()
|
||||
.addPathSegment("xtea")
|
||||
.build();
|
||||
|
||||
@@ -62,7 +62,19 @@ public class XteaClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
|
||||
try
|
||||
{
|
||||
try (Response response = RuneLiteAPI.RLP_CLIENT.newCall(request).execute())
|
||||
{
|
||||
logger.debug("xtea response " + response.code());
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
RuneLiteAPI.RLP_CLIENT.newCall(request).enqueue(new Callback()
|
||||
{
|
||||
@Override
|
||||
public void onFailure(Call call, IOException e)
|
||||
@@ -102,7 +114,9 @@ public class XteaClient
|
||||
{
|
||||
InputStream in = response.body().byteStream();
|
||||
// CHECKSTYLE:OFF
|
||||
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<XteaKey>>() { }.getType());
|
||||
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<XteaKey>>()
|
||||
{
|
||||
}.getType());
|
||||
// CHECKSTYLE:ON
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
|
||||
@@ -27,7 +27,7 @@ package net.runelite.http.api.xtea;
|
||||
public class XteaKey
|
||||
{
|
||||
private int region;
|
||||
private int keys[];
|
||||
private int[] keys;
|
||||
|
||||
public int getRegion()
|
||||
{
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.http.api;
|
||||
|
||||
import java.io.IOException;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.mockwebserver.MockResponse;
|
||||
import okhttp3.mockwebserver.MockWebServer;
|
||||
import org.junit.After;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
public class RuneLiteAPITest
|
||||
{
|
||||
private final MockWebServer server = new MockWebServer();
|
||||
|
||||
@Before
|
||||
public void before() throws IOException
|
||||
{
|
||||
server.enqueue(new MockResponse().setBody("OK"));
|
||||
|
||||
server.start();
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() throws IOException
|
||||
{
|
||||
server.shutdown();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUserAgent() throws IOException, InterruptedException
|
||||
{
|
||||
Request request = new Request.Builder()
|
||||
.url(server.url("/").url())
|
||||
.build();
|
||||
RuneLiteAPI.CLIENT.newCall(request).execute().close();
|
||||
|
||||
// rest of UA depends on if git is found
|
||||
assertTrue(server.takeRequest().getHeader("User-Agent").startsWith("RuneLite/" + RuneLiteAPI.getVersion()));
|
||||
}
|
||||
}
|
||||
@@ -1,123 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.injector;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import net.runelite.asm.ClassFile;
|
||||
import net.runelite.asm.ClassGroup;
|
||||
import net.runelite.asm.ClassUtil;
|
||||
import net.runelite.asm.Method;
|
||||
import net.runelite.asm.Type;
|
||||
import net.runelite.asm.attributes.Code;
|
||||
import net.runelite.asm.attributes.code.instructions.InvokeStatic;
|
||||
import net.runelite.asm.signature.Signature;
|
||||
import static net.runelite.injector.Inject.RL_API_PACKAGE_BASE;
|
||||
import static net.runelite.injector.InjectHookMethod.HOOKS;
|
||||
import net.runelite.mapping.ObfuscatedName;
|
||||
import net.runelite.mapping.ObfuscatedSignature;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import org.junit.Test;
|
||||
|
||||
abstract class Obfuscated
|
||||
{
|
||||
public int foo(Obfuscated o, int i)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ObfuscatedName("Obfuscated")
|
||||
class Actor
|
||||
{
|
||||
@ObfuscatedName("foo")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(LObfuscated;I)I"
|
||||
)
|
||||
public int bar(Actor actor, int i)
|
||||
{
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
public class InjectHookMethodTest
|
||||
{
|
||||
|
||||
@Test
|
||||
public void testProcess() throws IOException, InjectionException
|
||||
{
|
||||
InputStream in = getClass().getResourceAsStream("Actor.class");
|
||||
ClassFile cf = ClassUtil.loadClass(in);
|
||||
cf.setName("Actor");
|
||||
cf.findMethod("bar").setDescriptor(new Signature("(LActor;I)I"));
|
||||
|
||||
ClassGroup deobfuscated = new ClassGroup();
|
||||
deobfuscated.addClass(cf);
|
||||
|
||||
in = getClass().getResourceAsStream("Obfuscated.class");
|
||||
ClassFile obcf = ClassUtil.loadClass(in);
|
||||
obcf.setName("Obfuscated");
|
||||
obcf.findMethod("foo").setDescriptor(new Signature("(LObfuscated;I)I"));
|
||||
|
||||
ClassGroup obfuscated = new ClassGroup();
|
||||
obfuscated.addClass(obcf);
|
||||
|
||||
Method method = cf.findMethod("bar");
|
||||
assert method != null;
|
||||
|
||||
Inject inject = new Inject(deobfuscated, obfuscated);
|
||||
InjectHookMethod injectHookMethod = new InjectHookMethod(inject);
|
||||
injectHookMethod.process(method);
|
||||
|
||||
method = obcf.findMethod("foo");
|
||||
assert method != null;
|
||||
Code code = method.getCode();
|
||||
List<InvokeStatic> invokeIns = code.getInstructions().getInstructions().stream()
|
||||
.filter(i -> i instanceof InvokeStatic)
|
||||
.map(i -> (InvokeStatic) i)
|
||||
.filter(i -> i.getMethod().getClazz().getName().equals(HOOKS))
|
||||
.collect(Collectors.toList());
|
||||
assertTrue(!invokeIns.isEmpty());
|
||||
assertEquals(2, invokeIns.size());
|
||||
|
||||
InvokeStatic invokeStatic = invokeIns.get(0);
|
||||
Signature signature = invokeStatic.getMethod().getType();
|
||||
assertEquals(3, signature.size()); // this + patamers
|
||||
|
||||
Type arg = signature.getTypeOfArg(1);
|
||||
assertEquals(RL_API_PACKAGE_BASE.replace('.', '/') + "Actor", arg.getInternalName());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -56,19 +56,19 @@ public class DrawAfterWidgetsTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInjectDrawWidgetsRev153() throws Exception
|
||||
public void testInjectDrawWidgetsRev180() throws Exception
|
||||
{
|
||||
// Rev 153 has the drawWidgets call inlined
|
||||
// Rev 180 has the drawWidgets call inlined
|
||||
|
||||
ClassFile deobClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_deob153.class"));
|
||||
ClassFile deobRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob153.class"));
|
||||
ClassFile deobClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_deob180.class"));
|
||||
ClassFile deobRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob180.class"));
|
||||
|
||||
ClassGroup deob = new ClassGroup();
|
||||
deob.addClass(deobClient);
|
||||
deob.addClass(deobRasterizer);
|
||||
|
||||
ClassFile obClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_ob153.class"));
|
||||
ClassFile obRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob153.class"));
|
||||
ClassFile obClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_ob180.class"));
|
||||
ClassFile obRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob180.class"));
|
||||
|
||||
ClassGroup vanilla = new ClassGroup();
|
||||
vanilla.addClass(obClient);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
24
params.txt
24
params.txt
@@ -1,24 +0,0 @@
|
||||
Created at Thu Jun 13 05:48:12 CDT 2019
|
||||
|
||||
codebase=http://oldschool7.runescape.com/
|
||||
mainclass=client.class
|
||||
|
||||
param=1=1
|
||||
param=2=https://payments.jagex.com/operator/v1/
|
||||
param=3=true
|
||||
param=4=7505
|
||||
param=5=1
|
||||
param=6=0
|
||||
param=7=0
|
||||
param=8=true
|
||||
param=9=ElZAIrq5NpKN6D3mDdihco3oPeYN2KFy2DCquj7JMmECPmLrDP3Bnw
|
||||
param=10=5
|
||||
param=11=https://auth.jagex.com/
|
||||
param=12=307
|
||||
param=13=.runescape.com
|
||||
param=14=0
|
||||
param=15=0
|
||||
param=16=false
|
||||
param=17=http://www.runescape.com/g=oldscape/slr.ws?order=LPWM
|
||||
param=18=
|
||||
param=19=196515767263-1oo20deqm6edn7ujlihl6rpadk9drhva.apps.googleusercontent.com
|
||||
@@ -127,6 +127,13 @@ public interface Client extends GameShell
|
||||
*/
|
||||
GameState getGameState();
|
||||
|
||||
/**
|
||||
* Sets the current game state.
|
||||
*
|
||||
* @param gameState new game state
|
||||
*/
|
||||
void setGameState(int gameState);
|
||||
|
||||
/**
|
||||
* Gets the current logged in username.
|
||||
*
|
||||
|
||||
@@ -24,74 +24,119 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.alchemicalhydra;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.inject.Singleton;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Prayer;
|
||||
import net.runelite.api.ProjectileID;
|
||||
import net.runelite.api.SpriteID;
|
||||
import net.runelite.client.game.SpriteManager;
|
||||
import net.runelite.client.util.ImageUtil;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@RequiredArgsConstructor
|
||||
@Singleton
|
||||
class Hydra
|
||||
{
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@RequiredArgsConstructor
|
||||
enum AttackStyle
|
||||
{
|
||||
MAGIC(ProjectileID.HYDRA_MAGIC, Prayer.PROTECT_FROM_MAGIC),
|
||||
RANGED(ProjectileID.HYDRA_RANGED, Prayer.PROTECT_FROM_MISSILES);
|
||||
MAGIC(ProjectileID.HYDRA_MAGIC, Prayer.PROTECT_FROM_MAGIC, SpriteID.PRAYER_PROTECT_FROM_MAGIC),
|
||||
RANGED(ProjectileID.HYDRA_RANGED, Prayer.PROTECT_FROM_MISSILES, SpriteID.PRAYER_PROTECT_FROM_MISSILES);
|
||||
|
||||
@Getter
|
||||
private int projId;
|
||||
private final int projectileID;
|
||||
private final Prayer prayer;
|
||||
private final int spriteID;
|
||||
|
||||
@Getter
|
||||
private Prayer prayer;
|
||||
@Getter(AccessLevel.NONE)
|
||||
private BufferedImage image;
|
||||
|
||||
AttackStyle(int projId, Prayer prayer)
|
||||
BufferedImage getImage(SpriteManager spriteManager)
|
||||
{
|
||||
this.projId = projId;
|
||||
this.prayer = prayer;
|
||||
if (image == null)
|
||||
{
|
||||
BufferedImage tmp = spriteManager.getSprite(spriteID, 0);
|
||||
image = tmp == null ? null : ImageUtil.resizeImage(tmp, HydraOverlay.IMGSIZE, HydraOverlay.IMGSIZE);
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
private NPC npc;
|
||||
private final NPC npc;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private HydraPhase phase;
|
||||
private HydraPhase phase = HydraPhase.ONE;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int attackCount;
|
||||
private int attackCount = 0;
|
||||
private int nextSwitch = phase.getAttacksPerSwitch();
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int nextSwitch;
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
private int nextSpecial = 3;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private int nextSpecial;
|
||||
private AttackStyle nextAttack = AttackStyle.MAGIC;
|
||||
private AttackStyle lastAttack = AttackStyle.MAGIC;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private AttackStyle nextAttack;
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
private boolean weakened = false;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private AttackStyle lastAttack;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean weakened;
|
||||
|
||||
Hydra(NPC npc)
|
||||
void changePhase(HydraPhase newPhase)
|
||||
{
|
||||
this.npc = npc;
|
||||
this.phase = HydraPhase.ONE;
|
||||
this.nextAttack = AttackStyle.MAGIC;
|
||||
this.lastAttack = AttackStyle.MAGIC; // important, else we wouldn't switch if the first attack is ranged
|
||||
this.nextSpecial = 3;
|
||||
this.nextSwitch = phase.getAttacksPerSwitch();
|
||||
this.attackCount = 0;
|
||||
this.weakened = false;
|
||||
phase = newPhase;
|
||||
nextSpecial = 3;
|
||||
attackCount = 0;
|
||||
weakened = false;
|
||||
|
||||
if (newPhase == HydraPhase.FOUR)
|
||||
{
|
||||
weakened = true;
|
||||
switchStyles();
|
||||
nextSwitch = phase.getAttacksPerSwitch();
|
||||
}
|
||||
}
|
||||
|
||||
private void switchStyles()
|
||||
{
|
||||
nextAttack = lastAttack == Hydra.AttackStyle.MAGIC
|
||||
? Hydra.AttackStyle.RANGED
|
||||
: Hydra.AttackStyle.MAGIC;
|
||||
}
|
||||
|
||||
void handleAttack(int id)
|
||||
{
|
||||
if (id != nextAttack.getProjectileID())
|
||||
{
|
||||
if (id == lastAttack.getProjectileID())
|
||||
{
|
||||
// If the current attack isn't what was expected and we accidentally counted 1 too much
|
||||
return;
|
||||
}
|
||||
|
||||
// If the current attack isn't what was expected and we should have switched prayers
|
||||
switchStyles();
|
||||
nextSwitch = phase.getAttacksPerSwitch() - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
nextSwitch--;
|
||||
}
|
||||
|
||||
lastAttack = nextAttack;
|
||||
attackCount++;
|
||||
|
||||
if (nextSwitch <= 0)
|
||||
{
|
||||
switchStyles();
|
||||
nextSwitch = phase.getAttacksPerSwitch();
|
||||
}
|
||||
}
|
||||
|
||||
int getNextSpecialRelative()
|
||||
{
|
||||
return nextSpecial - attackCount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,16 +26,12 @@ package net.runelite.client.plugins.alchemicalhydra;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Prayer;
|
||||
import net.runelite.api.SpriteID;
|
||||
import net.runelite.client.game.SpriteManager;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
@@ -46,13 +42,16 @@ import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||
@Singleton
|
||||
class HydraOverlay extends Overlay
|
||||
{
|
||||
|
||||
private static final Color RED_BG_COL = new Color(156, 0, 0, 156);
|
||||
private static final Color YEL_BG_COL = new Color(200, 156, 0, 156);
|
||||
private static final Color GRN_BG_COL = new Color(0, 156, 0, 156);
|
||||
static final int IMGSIZE = 36;
|
||||
|
||||
private final HydraPlugin plugin;
|
||||
private final Client client;
|
||||
private final SpriteManager spriteManager;
|
||||
private final PanelComponent panelComponent = new PanelComponent();
|
||||
private static final Color redBgCol = new Color(156, 0, 0, 156);
|
||||
private static final Color yelBgCol = new Color(200, 156, 0, 156);
|
||||
private static final Color grnBgCol = new Color(0, 156, 0, 156);
|
||||
|
||||
@Inject
|
||||
HydraOverlay(HydraPlugin plugin, Client client, SpriteManager spriteManager)
|
||||
@@ -76,9 +75,8 @@ class HydraOverlay extends Overlay
|
||||
}
|
||||
|
||||
//Add spec overlay first, to keep it above pray
|
||||
HydraPhase phase = hydra.getPhase();
|
||||
int attackCount = hydra.getAttackCount();
|
||||
int nextSpec = hydra.getNextSpecial() - attackCount;
|
||||
final HydraPhase phase = hydra.getPhase();
|
||||
final int nextSpec = hydra.getNextSpecialRelative();
|
||||
|
||||
if (nextSpec <= 3)
|
||||
{
|
||||
@@ -86,37 +84,34 @@ class HydraOverlay extends Overlay
|
||||
|
||||
if (nextSpec == 0)
|
||||
{
|
||||
specComponent.setBackgroundColor(redBgCol);
|
||||
specComponent.setBackgroundColor(RED_BG_COL);
|
||||
}
|
||||
else if (nextSpec == 1)
|
||||
{
|
||||
specComponent.setBackgroundColor(yelBgCol);
|
||||
specComponent.setBackgroundColor(YEL_BG_COL);
|
||||
}
|
||||
Image specImg = scaleImg(spriteManager.getSprite(phase.getSpecImage(), 0));
|
||||
|
||||
specComponent.setImage(specImg);
|
||||
specComponent.setImage(phase.getSpecImage(spriteManager));
|
||||
specComponent.setText(" " + (nextSpec)); //hacky way to not have to figure out how to move text
|
||||
specComponent.setPreferredSize(new Dimension(40, 40));
|
||||
panelComponent.getChildren().add(specComponent);
|
||||
}
|
||||
|
||||
|
||||
Prayer nextPrayer = hydra.getNextAttack().getPrayer();
|
||||
Image prayImg = scaleImg(getPrayerImage(hydra.getNextAttack().getPrayer()));
|
||||
int nextSwitch = hydra.getNextSwitch();
|
||||
final Prayer nextPrayer = hydra.getNextAttack().getPrayer();
|
||||
final int nextSwitch = hydra.getNextSwitch();
|
||||
|
||||
InfoBoxComponent prayComponent = new InfoBoxComponent();
|
||||
|
||||
if (nextSwitch == 1)
|
||||
{
|
||||
prayComponent.setBackgroundColor(client.isPrayerActive(nextPrayer) ? yelBgCol : redBgCol);
|
||||
prayComponent.setBackgroundColor(client.isPrayerActive(nextPrayer) ? YEL_BG_COL : RED_BG_COL);
|
||||
}
|
||||
else
|
||||
{
|
||||
prayComponent.setBackgroundColor(client.isPrayerActive(nextPrayer) ? grnBgCol : redBgCol);
|
||||
prayComponent.setBackgroundColor(client.isPrayerActive(nextPrayer) ? GRN_BG_COL : RED_BG_COL);
|
||||
}
|
||||
|
||||
prayComponent.setImage(prayImg);
|
||||
prayComponent.setImage(hydra.getNextAttack().getImage(spriteManager));
|
||||
prayComponent.setText(" " + nextSwitch);
|
||||
prayComponent.setColor(Color.white);
|
||||
prayComponent.setPreferredSize(new Dimension(40, 40));
|
||||
@@ -126,32 +121,4 @@ class HydraOverlay extends Overlay
|
||||
panelComponent.setBorder(new Rectangle(0, 0, 0, 0));
|
||||
return panelComponent.render(graphics2D);
|
||||
}
|
||||
|
||||
private BufferedImage getPrayerImage(Prayer pray)
|
||||
{
|
||||
return pray == Prayer.PROTECT_FROM_MAGIC
|
||||
? spriteManager.getSprite(SpriteID.PRAYER_PROTECT_FROM_MAGIC, 0)
|
||||
: spriteManager.getSprite(SpriteID.PRAYER_PROTECT_FROM_MISSILES, 0);
|
||||
}
|
||||
|
||||
private Image scaleImg(final Image img)
|
||||
{
|
||||
if (img == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
final double width = img.getWidth(null);
|
||||
final double height = img.getHeight(null);
|
||||
final double size = 36; // Limit size to 2 as that is minimum size not causing breakage
|
||||
final double scalex = size / width;
|
||||
final double scaley = size / height;
|
||||
final double scale = Math.min(scalex, scaley);
|
||||
final int newWidth = (int) (width * scale);
|
||||
final int newHeight = (int) (height * scale);
|
||||
final BufferedImage scaledImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
|
||||
final Graphics g = scaledImage.createGraphics();
|
||||
g.drawImage(img, 0, 0, newWidth, newHeight, null);
|
||||
g.dispose();
|
||||
return scaledImage;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,48 +24,46 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.alchemicalhydra;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.runelite.api.AnimationID;
|
||||
import net.runelite.api.ProjectileID;
|
||||
import net.runelite.api.SpriteID;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.client.game.SpriteManager;
|
||||
import net.runelite.client.util.ImageUtil;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@RequiredArgsConstructor
|
||||
enum HydraPhase
|
||||
{ // Sorry for the autism
|
||||
{
|
||||
ONE(3, AnimationID.HYDRA_1_1, AnimationID.HYDRA_1_2, ProjectileID.HYDRA_POISON, 0, SpriteID.BIG_ASS_GUTHIX_SPELL, new WorldPoint(1371, 10263, 0)),
|
||||
TWO(3, AnimationID.HYDRA_2_1, AnimationID.HYDRA_2_2, 0, AnimationID.HYDRA_LIGHTNING, SpriteID.BIG_SPEC_TRANSFER, new WorldPoint(1371, 10272, 0)),
|
||||
THREE(3, AnimationID.HYDRA_3_1, AnimationID.HYDRA_3_2, 0, AnimationID.HYDRA_FIRE, SpriteID.BIG_SUPERHEAT, new WorldPoint(1362, 10272, 0)),
|
||||
FOUR(1, AnimationID.HYDRA_4_1, AnimationID.HYDRA_4_2, ProjectileID.HYDRA_POISON, 0, SpriteID.BIG_ASS_GUTHIX_SPELL, null);
|
||||
|
||||
@Getter
|
||||
private final int attacksPerSwitch;
|
||||
|
||||
@Getter
|
||||
private final int deathAnim1;
|
||||
|
||||
@Getter
|
||||
private final int deathAnim2;
|
||||
|
||||
@Getter
|
||||
private final int specProjectileId;
|
||||
|
||||
@Getter
|
||||
private final int specAnimationId;
|
||||
|
||||
@Getter
|
||||
private final int specImage;
|
||||
@Getter(AccessLevel.NONE)
|
||||
private final int specImageID;
|
||||
private final WorldPoint fountain;
|
||||
|
||||
@Getter
|
||||
private WorldPoint fountain;
|
||||
private BufferedImage specImage;
|
||||
|
||||
HydraPhase(int attacksPerSwitch, int deathAnim1, int deathAnim2, int specProjectileId, int specAnimationId, int specImage, WorldPoint fountain)
|
||||
BufferedImage getSpecImage(SpriteManager spriteManager)
|
||||
{
|
||||
this.attacksPerSwitch = attacksPerSwitch;
|
||||
this.deathAnim1 = deathAnim1;
|
||||
this.deathAnim2 = deathAnim2;
|
||||
this.specProjectileId = specProjectileId;
|
||||
this.specAnimationId = specAnimationId;
|
||||
this.specImage = specImage;
|
||||
this.fountain = fountain;
|
||||
if (specImage == null)
|
||||
{
|
||||
BufferedImage tmp = spriteManager.getSprite(specImageID, 0);
|
||||
specImage = tmp == null ? null : ImageUtil.resizeImage(tmp, HydraOverlay.IMGSIZE, HydraOverlay.IMGSIZE);
|
||||
}
|
||||
|
||||
return specImage;
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import javax.inject.Inject;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Actor;
|
||||
@@ -60,10 +61,10 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
||||
@Slf4j
|
||||
public class HydraPlugin extends Plugin
|
||||
{
|
||||
@Getter
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private Map<LocalPoint, Projectile> poisonProjectiles = new HashMap<>();
|
||||
|
||||
@Getter
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private Hydra hydra;
|
||||
|
||||
private boolean inHydraInstance;
|
||||
@@ -84,7 +85,7 @@ public class HydraPlugin extends Plugin
|
||||
private HydraOverlay overlay;
|
||||
|
||||
@Inject
|
||||
private HydraPoisonOverlay poisonOverlay;
|
||||
private HydraSceneOverlay poisonOverlay;
|
||||
|
||||
@Override
|
||||
protected void startUp()
|
||||
@@ -124,18 +125,16 @@ public class HydraPlugin extends Plugin
|
||||
}
|
||||
return;
|
||||
}
|
||||
NPC hydraNpc = null;
|
||||
|
||||
for (NPC npc : client.getNpcs())
|
||||
{
|
||||
if (npc.getId() == NpcID.ALCHEMICAL_HYDRA)
|
||||
{
|
||||
hydraNpc = npc;
|
||||
hydra = new Hydra(npc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
hydra = new Hydra(hydraNpc);
|
||||
addOverlays();
|
||||
}
|
||||
|
||||
@@ -171,13 +170,13 @@ public class HydraPlugin extends Plugin
|
||||
switch (phase)
|
||||
{
|
||||
case ONE:
|
||||
changePhase(HydraPhase.TWO);
|
||||
hydra.changePhase(HydraPhase.TWO);
|
||||
return;
|
||||
case TWO:
|
||||
changePhase(HydraPhase.THREE);
|
||||
hydra.changePhase(HydraPhase.THREE);
|
||||
return;
|
||||
case THREE:
|
||||
changePhase(HydraPhase.FOUR);
|
||||
hydra.changePhase(HydraPhase.FOUR);
|
||||
return;
|
||||
case FOUR:
|
||||
hydra = null;
|
||||
@@ -237,9 +236,9 @@ public class HydraPlugin extends Plugin
|
||||
poisonProjectiles.put(event.getPosition(), projectile);
|
||||
}
|
||||
else if (client.getTickCount() != lastAttackTick
|
||||
&& (id == Hydra.AttackStyle.MAGIC.getProjId() || id == Hydra.AttackStyle.RANGED.getProjId()))
|
||||
&& (id == Hydra.AttackStyle.MAGIC.getProjectileID() || id == Hydra.AttackStyle.RANGED.getProjectileID()))
|
||||
{
|
||||
handleAttack(id);
|
||||
hydra.handleAttack(id);
|
||||
lastAttackTick = client.getTickCount();
|
||||
}
|
||||
}
|
||||
@@ -271,53 +270,4 @@ public class HydraPlugin extends Plugin
|
||||
overlayManager.remove(overlay);
|
||||
overlayManager.remove(poisonOverlay);
|
||||
}
|
||||
|
||||
private void changePhase(HydraPhase newPhase)
|
||||
{
|
||||
hydra.setPhase(newPhase);
|
||||
hydra.setNextSpecial(3);
|
||||
hydra.setAttackCount(0);
|
||||
hydra.setWeakened(false);
|
||||
|
||||
if (newPhase == HydraPhase.FOUR)
|
||||
{
|
||||
hydra.setWeakened(true);
|
||||
switchStyles();
|
||||
hydra.setNextSwitch(newPhase.getAttacksPerSwitch());
|
||||
}
|
||||
}
|
||||
|
||||
private void switchStyles()
|
||||
{
|
||||
hydra.setNextAttack(hydra.getLastAttack() == Hydra.AttackStyle.MAGIC
|
||||
? Hydra.AttackStyle.RANGED
|
||||
: Hydra.AttackStyle.MAGIC);
|
||||
}
|
||||
|
||||
private void handleAttack(int id)
|
||||
{
|
||||
if (id != hydra.getNextAttack().getProjId() && id != hydra.getLastAttack().getProjId())
|
||||
{ // If the current attack isn't what was expected and we should have switched prayers
|
||||
switchStyles();
|
||||
hydra.setNextSwitch(hydra.getPhase().getAttacksPerSwitch() - 1);
|
||||
hydra.setLastAttack(hydra.getNextAttack());
|
||||
}
|
||||
else if (id != hydra.getNextAttack().getProjId() && id == hydra.getLastAttack().getProjId())
|
||||
{ // If the current attack isn't what was expected and we accidentally counted 1 too much
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
hydra.setNextSwitch(hydra.getNextSwitch() - 1);
|
||||
hydra.setLastAttack(hydra.getNextAttack());
|
||||
}
|
||||
|
||||
hydra.setAttackCount(hydra.getAttackCount() + 1);
|
||||
|
||||
if (hydra.getNextSwitch() <= 0)
|
||||
{
|
||||
switchStyles();
|
||||
hydra.setNextSwitch(hydra.getPhase().getAttacksPerSwitch());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,13 +45,17 @@ import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
|
||||
@Singleton
|
||||
class HydraPoisonOverlay extends Overlay
|
||||
class HydraSceneOverlay extends Overlay
|
||||
{
|
||||
private static final Color GREEN = new Color(0, 255, 0, 100);
|
||||
private static final Color RED = new Color(255, 0, 0, 100);
|
||||
private static final Color REDFILL = new Color(255, 0, 0, 50);
|
||||
|
||||
private final HydraPlugin plugin;
|
||||
private final Client client;
|
||||
|
||||
@Inject
|
||||
public HydraPoisonOverlay(Client client, HydraPlugin plugin)
|
||||
public HydraSceneOverlay(Client client, HydraPlugin plugin)
|
||||
{
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setLayer(OverlayLayer.UNDER_WIDGETS);
|
||||
@@ -99,9 +103,9 @@ class HydraPoisonOverlay extends Overlay
|
||||
}
|
||||
|
||||
graphics.setPaintMode();
|
||||
graphics.setColor(new Color(255, 0, 0, 100));
|
||||
graphics.setColor(RED);
|
||||
graphics.draw(poisonTiles);
|
||||
graphics.setColor(new Color(255, 0, 0, 50));
|
||||
graphics.setColor(REDFILL);
|
||||
graphics.fill(poisonTiles);
|
||||
}
|
||||
|
||||
@@ -133,11 +137,15 @@ class HydraPoisonOverlay extends Overlay
|
||||
return;
|
||||
}
|
||||
|
||||
Color color = new Color(255, 0, 0, 100); // like
|
||||
Color color; // like
|
||||
|
||||
if (hydra.getNpc().getWorldArea().intersectsWith(new WorldArea(wp, 1, 1))) // coords
|
||||
{ // WHICH FUCKING RETARD DID X, Y, dX, dY, Z???? IT'S XYZdXdY REEEEEEEEEE
|
||||
color = new Color(0, 255, 0, 100);
|
||||
color = GREEN;
|
||||
}
|
||||
else
|
||||
{
|
||||
color = RED;
|
||||
}
|
||||
|
||||
graphics.setColor(color);
|
||||
@@ -45,6 +45,7 @@ public class FpsDrawListener implements Runnable
|
||||
private static final int SAMPLE_SIZE = 4;
|
||||
|
||||
private final FpsConfig config;
|
||||
private final FpsPlugin plugin;
|
||||
|
||||
private long targetDelay = 0;
|
||||
|
||||
@@ -58,9 +59,10 @@ public class FpsDrawListener implements Runnable
|
||||
private long sleepDelay = 0;
|
||||
|
||||
@Inject
|
||||
private FpsDrawListener(FpsConfig config)
|
||||
private FpsDrawListener(FpsConfig config, FpsPlugin plugin)
|
||||
{
|
||||
this.config = config;
|
||||
this.plugin = plugin;
|
||||
reloadConfig();
|
||||
}
|
||||
|
||||
@@ -83,8 +85,8 @@ public class FpsDrawListener implements Runnable
|
||||
|
||||
private boolean isEnforced()
|
||||
{
|
||||
return FpsLimitMode.ALWAYS == config.limitMode()
|
||||
|| (FpsLimitMode.UNFOCUSED == config.limitMode() && !isFocused);
|
||||
return FpsLimitMode.ALWAYS == plugin.getLimitMode()
|
||||
|| (FpsLimitMode.UNFOCUSED == plugin.getLimitMode() && !isFocused);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -50,7 +50,6 @@ import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
public class FpsOverlay extends Overlay
|
||||
{
|
||||
// Local dependencies
|
||||
private final FpsConfig config;
|
||||
private final Client client;
|
||||
private final FpsPlugin plugin;
|
||||
|
||||
@@ -58,9 +57,8 @@ public class FpsOverlay extends Overlay
|
||||
private boolean isFocused = true;
|
||||
|
||||
@Inject
|
||||
private FpsOverlay(FpsPlugin plugin, FpsConfig config, Client client)
|
||||
private FpsOverlay(FpsPlugin plugin, Client client)
|
||||
{
|
||||
this.config = config;
|
||||
this.client = client;
|
||||
this.plugin = plugin;
|
||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||
@@ -75,8 +73,8 @@ public class FpsOverlay extends Overlay
|
||||
|
||||
private boolean isEnforced()
|
||||
{
|
||||
return FpsLimitMode.ALWAYS == config.limitMode()
|
||||
|| (FpsLimitMode.UNFOCUSED == config.limitMode() && !isFocused);
|
||||
return FpsLimitMode.ALWAYS == plugin.getLimitMode()
|
||||
|| (FpsLimitMode.UNFOCUSED == plugin.getLimitMode() && !isFocused);
|
||||
}
|
||||
|
||||
private Color getFpsValueColor()
|
||||
@@ -110,7 +108,7 @@ public class FpsOverlay extends Overlay
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
{
|
||||
if (!config.drawFps() && !config.drawPing())
|
||||
if (!plugin.isDrawFps() && !plugin.isDrawPing())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
@@ -121,7 +119,7 @@ public class FpsOverlay extends Overlay
|
||||
|
||||
int baseYOffset = (fontMetrics.getAscent() - fontMetrics.getDescent()) + 1;
|
||||
|
||||
if (config.drawFps())
|
||||
if (plugin.isDrawFps())
|
||||
{
|
||||
final String fpsText = String.format("%d FPS", client.getFPS());
|
||||
final int textWidth = fontMetrics.stringWidth(fpsText);
|
||||
@@ -132,7 +130,7 @@ public class FpsOverlay extends Overlay
|
||||
baseYOffset += 11;
|
||||
}
|
||||
|
||||
if (config.drawPing())
|
||||
if (plugin.isDrawPing())
|
||||
{
|
||||
final String pingText = String.format("%dms", plugin.getPing());
|
||||
final int textWidth = fontMetrics.stringWidth(pingText);
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.google.inject.Provides;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
@@ -90,6 +91,15 @@ public class FpsPlugin extends Plugin
|
||||
|
||||
private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private FpsLimitMode limitMode;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private boolean drawFps;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private boolean drawPing;
|
||||
|
||||
@Provides
|
||||
FpsConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
@@ -102,6 +112,10 @@ public class FpsPlugin extends Plugin
|
||||
if (event.getGroup().equals(CONFIG_GROUP_KEY))
|
||||
{
|
||||
drawListener.reloadConfig();
|
||||
|
||||
limitMode = fpsConfig.limitMode();
|
||||
drawFps = fpsConfig.drawFps();
|
||||
drawPing = fpsConfig.drawPing();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,6 +129,9 @@ public class FpsPlugin extends Plugin
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
limitMode = fpsConfig.limitMode();
|
||||
drawFps = fpsConfig.drawFps();
|
||||
drawPing = fpsConfig.drawPing();
|
||||
overlayManager.add(overlay);
|
||||
drawManager.registerEveryFrameListener(drawListener);
|
||||
drawListener.reloadConfig();
|
||||
@@ -131,7 +148,7 @@ public class FpsPlugin extends Plugin
|
||||
|
||||
private void getPingToCurrentWorld()
|
||||
{
|
||||
if (client.getGameState().equals(GameState.LOGGED_IN) && fpsConfig.drawPing())
|
||||
if (client.getGameState().equals(GameState.LOGGED_IN) && drawPing)
|
||||
{
|
||||
ping = Ping.ping(String.format("oldschool%d.runescape.com", client.getWorld() - 300));
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ class GroundItem
|
||||
private int offset;
|
||||
private boolean tradeable;
|
||||
private boolean isMine;
|
||||
private int ticks;
|
||||
private int durationMillis;
|
||||
private boolean isAlwaysPrivate;
|
||||
private boolean isOwnedByPlayer;
|
||||
|
||||
@@ -606,4 +606,16 @@ public interface GroundItemsConfig extends Config
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "showTimer",
|
||||
name = "Show ground item tick countdown timer",
|
||||
description = "Shows how many ticks left until disappearing.",
|
||||
position = 48,
|
||||
parent = "miscStub"
|
||||
)
|
||||
default boolean showTimer()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,6 +277,13 @@ public class GroundItemsOverlay extends Overlay
|
||||
}
|
||||
}
|
||||
|
||||
if (item.getTicks() > 0 && config.showTimer())
|
||||
{
|
||||
itemStringBuilder
|
||||
.append(" - ")
|
||||
.append(item.getTicks());
|
||||
}
|
||||
|
||||
final String itemString = itemStringBuilder.toString();
|
||||
itemStringBuilder.setLength(0);
|
||||
|
||||
|
||||
@@ -69,6 +69,7 @@ import net.runelite.api.events.ItemDespawned;
|
||||
import net.runelite.api.events.ItemQuantityChanged;
|
||||
import net.runelite.api.events.ItemSpawned;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
@@ -204,6 +205,16 @@ public class GroundItemsPlugin extends Plugin
|
||||
collectedGroundItems.clear();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
{
|
||||
for (GroundItem item : collectedGroundItems.values())
|
||||
{
|
||||
if (item.getTicks() == -1) continue;
|
||||
item.setTicks(item.getTicks() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
@@ -461,6 +472,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
if (groundItem != null)
|
||||
{
|
||||
groundItem.setMine(true);
|
||||
groundItem.setTicks(200);
|
||||
|
||||
boolean shouldNotify = config.onlyShowLoot() && config.highlightedColor().equals(getHighlighted(
|
||||
groundItem.getName(),
|
||||
@@ -511,6 +523,7 @@ public class GroundItemsPlugin extends Plugin
|
||||
.durationMillis(durationMillis)
|
||||
.isAlwaysPrivate(client.isInInstancedRegion() || (!itemComposition.isTradeable() && realItemId != COINS))
|
||||
.isOwnedByPlayer(tile.getWorldLocation().equals(playerLocation))
|
||||
.ticks(tile.getWorldLocation().equals(client.getLocalPlayer().getWorldLocation()) ? 200 : 100)
|
||||
.build();
|
||||
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ public interface InfernoConfig extends Config
|
||||
|
||||
@ConfigItem(
|
||||
position = 2,
|
||||
keyName = "Wave Display",
|
||||
keyName = "waveDisplay",
|
||||
name = "Wave display",
|
||||
description = "Shows monsters that will spawn on the selected wave(s)."
|
||||
)
|
||||
|
||||
@@ -1,439 +1,477 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Jacky <liangj97@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.client.plugins.inferno;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.HeadIcon;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.NpcID;
|
||||
import net.runelite.api.events.AnimationChanged;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.NpcSpawned;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.PluginType;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Inferno",
|
||||
description = "Inferno helper",
|
||||
tags = {"combat", "overlay", "pve", "pvm"},
|
||||
type = PluginType.PVM
|
||||
)
|
||||
public class InfernoPlugin extends Plugin
|
||||
{
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@Inject
|
||||
private InfernoOverlay infernoOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoWaveOverlay waveOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoJadOverlay jadOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoInfobox infernoInfobox;
|
||||
|
||||
@Inject
|
||||
private InfernoNibblerOverlay nibblerOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoConfig config;
|
||||
|
||||
@Getter
|
||||
private int currentWave = -1;
|
||||
|
||||
@Getter
|
||||
private Map<NPC, InfernoNPC> monsters;
|
||||
|
||||
@Getter
|
||||
private Map<Integer, ArrayList<InfernoNPC>> monsterCurrentAttackMap;
|
||||
|
||||
@Getter
|
||||
private List<NPC> nibblers;
|
||||
|
||||
@Getter
|
||||
private InfernoNPC[] priorityNPC;
|
||||
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@Nullable
|
||||
private InfernoJadAttack attack;
|
||||
|
||||
private NPC jad;
|
||||
private static final int INFERNO_REGION = 9043;
|
||||
private int currentWaveNumber;
|
||||
private int nextWaveNumber;
|
||||
private Map<Integer, String> monster;
|
||||
private Map<Integer, int[]> waves;
|
||||
private List<Actor> waveMonsters;
|
||||
|
||||
public InfernoPlugin()
|
||||
{
|
||||
waveMonsters = new ArrayList<Actor>();
|
||||
}
|
||||
|
||||
@Provides
|
||||
InfernoConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
return configManager.getConfig(InfernoConfig.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
overlayManager.add(infernoOverlay);
|
||||
overlayManager.add(infernoInfobox);
|
||||
overlayManager.add(nibblerOverlay);
|
||||
overlayManager.add(waveOverlay);
|
||||
overlayManager.add(jadOverlay);
|
||||
monster = InfernoWaveMappings.npcNameMapping();
|
||||
waves = InfernoWaveMappings.waveMapping();
|
||||
monsters = new HashMap<>();
|
||||
monsterCurrentAttackMap = new HashMap<>(6);
|
||||
for (int i = 1; i <= 6; i++)
|
||||
{
|
||||
monsterCurrentAttackMap.put(i, new ArrayList<>());
|
||||
}
|
||||
nibblers = new ArrayList<>();
|
||||
priorityNPC = new InfernoNPC[4];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
overlayManager.remove(infernoInfobox);
|
||||
overlayManager.remove(infernoOverlay);
|
||||
overlayManager.remove(nibblerOverlay);
|
||||
overlayManager.remove(waveOverlay);
|
||||
overlayManager.remove(jadOverlay);
|
||||
jad = null;
|
||||
attack = null;
|
||||
monster = null;
|
||||
monsters = null;
|
||||
waves = null;
|
||||
currentWaveNumber = -1;
|
||||
nextWaveNumber = -1;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcSpawned(NpcSpawned event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
NPC npc = event.getNpc();
|
||||
if (isValidInfernoMob(npc))
|
||||
{
|
||||
monsters.put(npc, new InfernoNPC(npc));
|
||||
System.out.println(monsters.size());
|
||||
}
|
||||
if (npc.getId() == NpcID.JALNIB)
|
||||
{
|
||||
nibblers.add(npc);
|
||||
}
|
||||
|
||||
final int id = event.getNpc().getId();
|
||||
|
||||
if (id == NpcID.JALTOKJAD || id == NpcID.JALTOKJAD_7704)
|
||||
{
|
||||
jad = event.getNpc();
|
||||
}
|
||||
final Actor actor = event.getActor();
|
||||
if (actor != null)
|
||||
{
|
||||
waveMonsters.add(actor);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
NPC npc = event.getNpc();
|
||||
if (monsters.containsKey(npc))
|
||||
{
|
||||
monsters.remove(npc);
|
||||
System.out.println(monsters.size());
|
||||
}
|
||||
|
||||
if (npc.getId() == NpcID.JALNIB)
|
||||
{
|
||||
nibblers.remove(npc);
|
||||
}
|
||||
|
||||
if (jad == event.getNpc())
|
||||
{
|
||||
jad = null;
|
||||
attack = null;
|
||||
}
|
||||
final Actor actor = event.getActor();
|
||||
if (actor != null)
|
||||
{
|
||||
waveMonsters.remove(actor);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() != GameState.LOGGED_IN)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!inInferno())
|
||||
{
|
||||
currentWave = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage event)
|
||||
{
|
||||
|
||||
if (event.getType() != ChatMessageType.GAMEMESSAGE || !inInferno())
|
||||
{
|
||||
return;
|
||||
}
|
||||
String message = event.getMessage();
|
||||
if (event.getMessage().contains("Wave:"))
|
||||
{
|
||||
message = message.substring(message.indexOf(": ") + 2);
|
||||
currentWaveNumber = Integer.parseInt(message.substring(0, message.indexOf("<")));
|
||||
nextWaveNumber = ((currentWaveNumber < 63) ? (currentWaveNumber + 1) : -1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
clearMapAndPriority();
|
||||
|
||||
for (InfernoNPC monster : monsters.values())
|
||||
{
|
||||
calculateDistanceToPlayer(monster);
|
||||
|
||||
NPC npc = monster.getNpc();
|
||||
|
||||
// if they are not attacking but are still attacking
|
||||
if (monster.isAttacking())
|
||||
{
|
||||
monster.setTicksTillAttack(monster.getTicksTillAttack() - 1);
|
||||
|
||||
// sets the blobs attack style
|
||||
if (monster.getName().equals("blob") && monster.getTicksTillAttack() == 3 && monster.getDistanceToPlayer() <= 15)
|
||||
{
|
||||
if (client.getLocalPlayer().getOverheadIcon() == null)
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.RANDOM);
|
||||
}
|
||||
else if (client.getLocalPlayer().getOverheadIcon().equals(HeadIcon.MAGIC))
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.RANGE);
|
||||
}
|
||||
else if (client.getLocalPlayer().getOverheadIcon().equals(HeadIcon.RANGED))
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.MAGE);
|
||||
}
|
||||
}
|
||||
|
||||
// we know the monster is not attacking because it should have attacked and is idling
|
||||
if (monster.getTicksTillAttack() == 0)
|
||||
{
|
||||
if (npc.getAnimation() == -1)
|
||||
{
|
||||
monster.setAttacking(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// want to reset the monsters attack back to attacking
|
||||
monster.attacked();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// they've just attacked
|
||||
if (npc.getAnimation() == monster.getAttackAnimation() || npc.getAnimation() == 7581) // special case for blob
|
||||
{
|
||||
monster.attacked();
|
||||
}
|
||||
}
|
||||
|
||||
if (monster.getTicksTillAttack() >= 1)
|
||||
{
|
||||
monsterCurrentAttackMap.get(monster.getTicksTillAttack()).add(monster);
|
||||
}
|
||||
}
|
||||
|
||||
calculatePriorityNPC();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAnimationChanged(final AnimationChanged event)
|
||||
{
|
||||
if (event.getActor() != jad)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (jad.getAnimation() == InfernoJadAttack.MAGIC.getAnimation())
|
||||
{
|
||||
attack = InfernoJadAttack.MAGIC;
|
||||
}
|
||||
else if (jad.getAnimation() == InfernoJadAttack.RANGE.getAnimation())
|
||||
{
|
||||
attack = InfernoJadAttack.RANGE;
|
||||
}
|
||||
}
|
||||
|
||||
private void calculatePriorityNPC()
|
||||
{
|
||||
for (int i = 0; i < priorityNPC.length; i++)
|
||||
{
|
||||
ArrayList<InfernoNPC> monsters = monsterCurrentAttackMap.get(i + 1);
|
||||
|
||||
if (monsters.size() == 0) continue;
|
||||
|
||||
int priority = monsters.get(0).getPriority();
|
||||
|
||||
InfernoNPC infernoNPC = monsters.get(0);
|
||||
|
||||
for (InfernoNPC npc : monsters)
|
||||
{
|
||||
if (npc.getPriority() < priority)
|
||||
{
|
||||
priority = npc.getPriority();
|
||||
infernoNPC = npc;
|
||||
}
|
||||
}
|
||||
priorityNPC[i] = infernoNPC;
|
||||
System.out.println("i: " + i + " " + infernoNPC.getName());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: blob calculator
|
||||
private void calculateDistanceToPlayer(InfernoNPC monster)
|
||||
{
|
||||
monster.setDistanceToPlayer(client.getLocalPlayer().getWorldLocation().distanceTo(monster.getNpc().getWorldArea()));
|
||||
}
|
||||
|
||||
private void clearMapAndPriority()
|
||||
{
|
||||
for (List<InfernoNPC> l : monsterCurrentAttackMap.values())
|
||||
{
|
||||
l.clear();
|
||||
}
|
||||
|
||||
for (int i = 0; i < priorityNPC.length; i++)
|
||||
{
|
||||
priorityNPC[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isValidInfernoMob(NPC npc)
|
||||
{
|
||||
// we only want the bat, blob, melee, ranger and mager
|
||||
if (npc.getId() == NpcID.JALMEJRAH ||
|
||||
npc.getId() == NpcID.JALAK ||
|
||||
npc.getId() == NpcID.JALIMKOT ||
|
||||
npc.getId() == NpcID.JALXIL ||
|
||||
npc.getId() == NpcID.JALZEK) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean inInferno()
|
||||
{
|
||||
return ArrayUtils.contains(client.getMapRegions(), INFERNO_REGION);
|
||||
}
|
||||
|
||||
public boolean isNotFinalWave()
|
||||
{
|
||||
return currentWaveNumber <= 68;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
InfernoJadAttack getAttack()
|
||||
{
|
||||
return attack;
|
||||
}
|
||||
|
||||
int getCurrentWaveNumber()
|
||||
{
|
||||
return currentWaveNumber;
|
||||
}
|
||||
|
||||
int getNextWaveNumber()
|
||||
{
|
||||
return nextWaveNumber;
|
||||
}
|
||||
|
||||
Map<Integer, String> getMonster()
|
||||
{
|
||||
return monster;
|
||||
}
|
||||
|
||||
Map<Integer, int[]> getWaves()
|
||||
{
|
||||
return waves;
|
||||
}
|
||||
|
||||
List<Actor> getWaveMonsters()
|
||||
{
|
||||
return waveMonsters;
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
* Copyright (c) 2019, Jacky <liangj97@gmail.com>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.client.plugins.inferno;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.HeadIcon;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.NpcID;
|
||||
import net.runelite.api.events.AnimationChanged;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.NpcSpawned;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.PluginType;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Inferno",
|
||||
description = "Inferno helper",
|
||||
tags = {"combat", "overlay", "pve", "pvm"},
|
||||
type = PluginType.PVM
|
||||
)
|
||||
@Slf4j
|
||||
public class InfernoPlugin extends Plugin
|
||||
{
|
||||
private static final int INFERNO_REGION = 9043;
|
||||
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@Inject
|
||||
private InfernoOverlay infernoOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoWaveOverlay waveOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoJadOverlay jadOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoInfobox infernoInfobox;
|
||||
|
||||
@Inject
|
||||
private InfernoNibblerOverlay nibblerOverlay;
|
||||
|
||||
@Inject
|
||||
private InfernoConfig config;
|
||||
|
||||
@Getter
|
||||
private int currentWave = -1;
|
||||
|
||||
@Getter
|
||||
private Map<NPC, InfernoNPC> monsters;
|
||||
|
||||
@Getter
|
||||
private Map<Integer, ArrayList<InfernoNPC>> monsterCurrentAttackMap;
|
||||
|
||||
@Getter
|
||||
private List<NPC> nibblers;
|
||||
|
||||
@Getter
|
||||
private InfernoNPC[] priorityNPC;
|
||||
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@Nullable
|
||||
private InfernoJadAttack attack;
|
||||
|
||||
private NPC jad;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private int currentWaveNumber;
|
||||
|
||||
private List<Actor> waveMonsters;
|
||||
|
||||
public InfernoPlugin()
|
||||
{
|
||||
waveMonsters = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Provides
|
||||
InfernoConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
return configManager.getConfig(InfernoConfig.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
waveOverlay.setDisplayMode(config.waveDisplay());
|
||||
|
||||
if (isInInferno())
|
||||
{
|
||||
overlayManager.add(infernoOverlay);
|
||||
overlayManager.add(infernoInfobox);
|
||||
overlayManager.add(nibblerOverlay);
|
||||
|
||||
if (config.waveDisplay() != InfernoWaveDisplayMode.NONE)
|
||||
{
|
||||
overlayManager.add(waveOverlay);
|
||||
}
|
||||
|
||||
overlayManager.add(jadOverlay);
|
||||
}
|
||||
|
||||
waveOverlay.setWaveHeaderColor(config.getWaveOverlayHeaderColor());
|
||||
waveOverlay.setWaveTextColor(config.getWaveTextColor());
|
||||
|
||||
monsters = new HashMap<>();
|
||||
monsterCurrentAttackMap = new HashMap<>(6);
|
||||
|
||||
for (int i = 1; i <= 6; i++)
|
||||
{
|
||||
monsterCurrentAttackMap.put(i, new ArrayList<>());
|
||||
}
|
||||
|
||||
nibblers = new ArrayList<>();
|
||||
priorityNPC = new InfernoNPC[4];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
overlayManager.remove(infernoInfobox);
|
||||
overlayManager.remove(infernoOverlay);
|
||||
overlayManager.remove(nibblerOverlay);
|
||||
overlayManager.remove(waveOverlay);
|
||||
overlayManager.remove(jadOverlay);
|
||||
jad = null;
|
||||
attack = null;
|
||||
monsters = null;
|
||||
currentWaveNumber = -1;
|
||||
}
|
||||
@Subscribe
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!"inferno".equals(event.getGroup()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getKey().endsWith("color"))
|
||||
{
|
||||
waveOverlay.setWaveHeaderColor(config.getWaveOverlayHeaderColor());
|
||||
waveOverlay.setWaveTextColor(config.getWaveTextColor());
|
||||
}
|
||||
else if ("waveDisplay".equals(event.getKey()))
|
||||
{
|
||||
overlayManager.remove(waveOverlay);
|
||||
|
||||
waveOverlay.setDisplayMode(config.waveDisplay());
|
||||
|
||||
if (isInInferno() && config.waveDisplay() != InfernoWaveDisplayMode.NONE)
|
||||
{
|
||||
overlayManager.add(waveOverlay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcSpawned(NpcSpawned event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
NPC npc = event.getNpc();
|
||||
if (isValidInfernoMob(npc))
|
||||
{
|
||||
monsters.put(npc, new InfernoNPC(npc));
|
||||
log.debug(String.valueOf(monsters.size()));
|
||||
}
|
||||
|
||||
if (npc.getId() == NpcID.JALNIB)
|
||||
{
|
||||
nibblers.add(npc);
|
||||
}
|
||||
|
||||
final int id = event.getNpc().getId();
|
||||
|
||||
if (id == NpcID.JALTOKJAD || id == NpcID.JALTOKJAD_7704)
|
||||
{
|
||||
jad = event.getNpc();
|
||||
}
|
||||
|
||||
final Actor actor = event.getActor();
|
||||
|
||||
if (actor != null)
|
||||
{
|
||||
waveMonsters.add(actor);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
NPC npc = event.getNpc();
|
||||
if (monsters.containsKey(npc))
|
||||
{
|
||||
monsters.remove(npc);
|
||||
log.debug(String.valueOf(monsters.size()));
|
||||
}
|
||||
|
||||
if (npc.getId() == NpcID.JALNIB)
|
||||
{
|
||||
nibblers.remove(npc);
|
||||
}
|
||||
|
||||
if (jad == event.getNpc())
|
||||
{
|
||||
jad = null;
|
||||
attack = null;
|
||||
}
|
||||
final Actor actor = event.getActor();
|
||||
if (actor != null)
|
||||
{
|
||||
waveMonsters.remove(actor);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() != GameState.LOGGED_IN)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isInInferno())
|
||||
{
|
||||
currentWaveNumber = -1;
|
||||
overlayManager.remove(infernoInfobox);
|
||||
overlayManager.remove(infernoOverlay);
|
||||
overlayManager.remove(nibblerOverlay);
|
||||
overlayManager.remove(waveOverlay);
|
||||
overlayManager.remove(jadOverlay);
|
||||
}
|
||||
else if (currentWaveNumber == -1)
|
||||
{
|
||||
currentWaveNumber = 1;
|
||||
overlayManager.add(infernoOverlay);
|
||||
overlayManager.add(infernoInfobox);
|
||||
overlayManager.add(nibblerOverlay);
|
||||
|
||||
if (config.waveDisplay() != InfernoWaveDisplayMode.NONE)
|
||||
{
|
||||
overlayManager.add(waveOverlay);
|
||||
}
|
||||
|
||||
overlayManager.add(jadOverlay);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage event)
|
||||
{
|
||||
if (!isInInferno() || event.getType() != ChatMessageType.GAMEMESSAGE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String message = event.getMessage();
|
||||
|
||||
if (event.getMessage().contains("Wave:"))
|
||||
{
|
||||
message = message.substring(message.indexOf(": ") + 2);
|
||||
currentWaveNumber = Integer.parseInt(message.substring(0, message.indexOf("<")));
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
{
|
||||
if (client.getMapRegions()[0] != 9043) return;
|
||||
|
||||
clearMapAndPriority();
|
||||
|
||||
for (InfernoNPC monster : monsters.values())
|
||||
{
|
||||
calculateDistanceToPlayer(monster);
|
||||
|
||||
NPC npc = monster.getNpc();
|
||||
|
||||
// if they are not attacking but are still attacking
|
||||
if (monster.isAttacking())
|
||||
{
|
||||
monster.setTicksTillAttack(monster.getTicksTillAttack() - 1);
|
||||
|
||||
// sets the blobs attack style
|
||||
if (monster.getName().equals("blob") && monster.getTicksTillAttack() == 3 && monster.getDistanceToPlayer() <= 15)
|
||||
{
|
||||
if (client.getLocalPlayer().getOverheadIcon() == null)
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.RANDOM);
|
||||
}
|
||||
else if (client.getLocalPlayer().getOverheadIcon().equals(HeadIcon.MAGIC))
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.RANGE);
|
||||
}
|
||||
else if (client.getLocalPlayer().getOverheadIcon().equals(HeadIcon.RANGED))
|
||||
{
|
||||
monster.setAttackstyle(InfernoNPC.Attackstyle.MAGE);
|
||||
}
|
||||
}
|
||||
|
||||
// we know the monster is not attacking because it should have attacked and is idling
|
||||
if (monster.getTicksTillAttack() == 0)
|
||||
{
|
||||
if (npc.getAnimation() == -1)
|
||||
{
|
||||
monster.setAttacking(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
// want to reset the monsters attack back to attacking
|
||||
monster.attacked();
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// they've just attacked
|
||||
if (npc.getAnimation() == monster.getAttackAnimation() || npc.getAnimation() == 7581) // special case for blob
|
||||
{
|
||||
monster.attacked();
|
||||
}
|
||||
}
|
||||
|
||||
if (monster.getTicksTillAttack() >= 1)
|
||||
{
|
||||
monsterCurrentAttackMap.get(monster.getTicksTillAttack()).add(monster);
|
||||
}
|
||||
}
|
||||
|
||||
calculatePriorityNPC();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAnimationChanged(final AnimationChanged event)
|
||||
{
|
||||
if (event.getActor() != jad)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (jad.getAnimation() == InfernoJadAttack.MAGIC.getAnimation())
|
||||
{
|
||||
attack = InfernoJadAttack.MAGIC;
|
||||
}
|
||||
else if (jad.getAnimation() == InfernoJadAttack.RANGE.getAnimation())
|
||||
{
|
||||
attack = InfernoJadAttack.RANGE;
|
||||
}
|
||||
}
|
||||
|
||||
private void calculatePriorityNPC()
|
||||
{
|
||||
for (int i = 0; i < priorityNPC.length; i++)
|
||||
{
|
||||
ArrayList<InfernoNPC> monsters = monsterCurrentAttackMap.get(i + 1);
|
||||
|
||||
if (monsters.size() == 0) continue;
|
||||
|
||||
int priority = monsters.get(0).getPriority();
|
||||
|
||||
InfernoNPC infernoNPC = monsters.get(0);
|
||||
|
||||
for (InfernoNPC npc : monsters)
|
||||
{
|
||||
if (npc.getPriority() < priority)
|
||||
{
|
||||
priority = npc.getPriority();
|
||||
infernoNPC = npc;
|
||||
}
|
||||
}
|
||||
|
||||
priorityNPC[i] = infernoNPC;
|
||||
|
||||
log.debug("i: " + i + " " + infernoNPC.getName());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: blob calculator
|
||||
private void calculateDistanceToPlayer(InfernoNPC monster)
|
||||
{
|
||||
monster.setDistanceToPlayer(client.getLocalPlayer().getWorldLocation().distanceTo(monster.getNpc().getWorldArea()));
|
||||
}
|
||||
|
||||
private void clearMapAndPriority()
|
||||
{
|
||||
for (List<InfernoNPC> l : monsterCurrentAttackMap.values())
|
||||
{
|
||||
l.clear();
|
||||
}
|
||||
|
||||
for (int i = 0; i < priorityNPC.length; i++)
|
||||
{
|
||||
priorityNPC[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidInfernoMob(NPC npc)
|
||||
{
|
||||
// we only want the bat, blob, melee, ranger and mager
|
||||
return npc.getId() == NpcID.JALMEJRAH ||
|
||||
npc.getId() == NpcID.JALAK ||
|
||||
npc.getId() == NpcID.JALIMKOT ||
|
||||
npc.getId() == NpcID.JALXIL ||
|
||||
npc.getId() == NpcID.JALZEK;
|
||||
}
|
||||
|
||||
private boolean isInInferno()
|
||||
{
|
||||
return ArrayUtils.contains(client.getMapRegions(), INFERNO_REGION);
|
||||
}
|
||||
|
||||
boolean isNotFinalWave()
|
||||
{
|
||||
return currentWaveNumber <= 68;
|
||||
}
|
||||
|
||||
List<Actor> getWaveMonsters()
|
||||
{
|
||||
return waveMonsters;
|
||||
}
|
||||
|
||||
int getNextWaveNumber()
|
||||
{
|
||||
return currentWaveNumber == -1 || currentWaveNumber == 69 ? -1 : currentWaveNumber + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,8 @@ public enum InfernoWaveDisplayMode
|
||||
{
|
||||
CURRENT("Current wave"),
|
||||
NEXT("Next wave"),
|
||||
BOTH("Both");
|
||||
BOTH("Both"),
|
||||
NONE("None");
|
||||
|
||||
private final String name;
|
||||
|
||||
|
||||
@@ -26,121 +26,143 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.inferno;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import java.awt.Color;
|
||||
import lombok.Getter;
|
||||
import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||
import net.runelite.client.ui.overlay.components.TitleComponent;
|
||||
|
||||
public class InfernoWaveMappings
|
||||
class InfernoWaveMappings
|
||||
{
|
||||
@Getter
|
||||
private static final ImmutableMap<Integer, int[]> waveMapping;
|
||||
|
||||
@Getter
|
||||
private static final ImmutableMap<Integer, String> npcNameMapping;
|
||||
|
||||
static
|
||||
{
|
||||
static Map<Integer, int[]> waveMapping()
|
||||
ImmutableMap.Builder<Integer, int[]> waveMapBuilder = new ImmutableMap.Builder<>();
|
||||
|
||||
waveMapBuilder.put(1, new int[]{32, 32, 32, 85});
|
||||
waveMapBuilder.put(2, new int[]{32, 32, 32, 85, 85});
|
||||
waveMapBuilder.put(3, new int[]{32, 32, 32, 32, 32, 32});
|
||||
waveMapBuilder.put(4, new int[]{32, 32, 32, 165});
|
||||
waveMapBuilder.put(5, new int[]{32, 32, 32, 85, 165});
|
||||
waveMapBuilder.put(6, new int[]{32, 32, 32, 85, 85, 165});
|
||||
waveMapBuilder.put(7, new int[]{32, 32, 32, 165, 165});
|
||||
waveMapBuilder.put(8, new int[]{32, 32, 32, 32, 32, 32});
|
||||
waveMapBuilder.put(9, new int[]{32, 32, 32, 240});
|
||||
waveMapBuilder.put(10, new int[]{32, 32, 32, 85, 240});
|
||||
waveMapBuilder.put(11, new int[]{32, 32, 32, 85, 85, 240});
|
||||
waveMapBuilder.put(12, new int[]{32, 32, 32, 165, 240});
|
||||
waveMapBuilder.put(13, new int[]{32, 32, 32, 85, 165, 240});
|
||||
waveMapBuilder.put(14, new int[]{32, 32, 32, 85, 85, 165, 240});
|
||||
waveMapBuilder.put(15, new int[]{32, 32, 32, 165, 165, 240});
|
||||
waveMapBuilder.put(16, new int[]{32, 32, 32, 240, 240});
|
||||
waveMapBuilder.put(17, new int[]{32, 32, 32, 32, 32, 32});
|
||||
waveMapBuilder.put(18, new int[]{32, 32, 32, 370});
|
||||
waveMapBuilder.put(19, new int[]{32, 32, 32, 85, 370});
|
||||
waveMapBuilder.put(20, new int[]{32, 32, 32, 85, 85, 370});
|
||||
waveMapBuilder.put(21, new int[]{32, 32, 32, 165, 370});
|
||||
waveMapBuilder.put(22, new int[]{32, 32, 32, 85, 165, 370});
|
||||
waveMapBuilder.put(23, new int[]{32, 32, 32, 85, 85, 165, 370});
|
||||
waveMapBuilder.put(24, new int[]{32, 32, 32, 165, 165, 370});
|
||||
waveMapBuilder.put(25, new int[]{32, 32, 32, 240, 370});
|
||||
waveMapBuilder.put(26, new int[]{32, 32, 32, 85, 240, 370});
|
||||
waveMapBuilder.put(27, new int[]{32, 32, 32, 85, 85, 240, 370});
|
||||
waveMapBuilder.put(28, new int[]{32, 32, 32, 165, 240, 370});
|
||||
waveMapBuilder.put(29, new int[]{32, 32, 32, 85, 165, 240, 370});
|
||||
waveMapBuilder.put(30, new int[]{32, 32, 32, 85, 85, 165, 240, 370});
|
||||
waveMapBuilder.put(31, new int[]{32, 32, 32, 165, 165, 240, 370});
|
||||
waveMapBuilder.put(32, new int[]{32, 32, 32, 240, 240, 370});
|
||||
waveMapBuilder.put(33, new int[]{32, 32, 32, 370, 370});
|
||||
waveMapBuilder.put(34, new int[]{32, 32, 32, 32, 32, 32});
|
||||
waveMapBuilder.put(35, new int[]{32, 32, 32, 490});
|
||||
waveMapBuilder.put(36, new int[]{32, 32, 32, 85, 490});
|
||||
waveMapBuilder.put(37, new int[]{32, 32, 32, 85, 85, 490});
|
||||
waveMapBuilder.put(38, new int[]{32, 32, 32, 165, 490});
|
||||
waveMapBuilder.put(39, new int[]{32, 32, 32, 85, 165, 490});
|
||||
waveMapBuilder.put(40, new int[]{32, 32, 32, 85, 85, 165, 490});
|
||||
waveMapBuilder.put(41, new int[]{32, 32, 32, 165, 165, 490});
|
||||
waveMapBuilder.put(42, new int[]{32, 32, 32, 240, 490});
|
||||
waveMapBuilder.put(43, new int[]{32, 32, 32, 85, 240, 490});
|
||||
waveMapBuilder.put(44, new int[]{32, 32, 32, 85, 85, 240, 490});
|
||||
waveMapBuilder.put(45, new int[]{32, 32, 32, 165, 240, 490 });
|
||||
waveMapBuilder.put(46, new int[]{32, 32, 32, 85, 165, 240, 490});
|
||||
waveMapBuilder.put(47, new int[]{32, 32, 32, 85, 85, 165, 240, 490});
|
||||
waveMapBuilder.put(48, new int[]{32, 32, 32, 165, 165, 240, 490});
|
||||
waveMapBuilder.put(49, new int[]{32, 32, 32, 240, 240, 490});
|
||||
waveMapBuilder.put(50, new int[]{32, 32, 32, 370, 490});
|
||||
waveMapBuilder.put(51, new int[]{32, 32, 32, 85, 370, 490});
|
||||
waveMapBuilder.put(52, new int[]{32, 32, 32, 85, 85, 370, 490});
|
||||
waveMapBuilder.put(53, new int[]{32, 32, 32, 165, 370, 490});
|
||||
waveMapBuilder.put(54, new int[]{32, 32, 32, 85, 165, 370, 490});
|
||||
waveMapBuilder.put(55, new int[]{32, 32, 32, 85, 85, 165, 370, 490});
|
||||
waveMapBuilder.put(56, new int[]{32, 32, 32, 165, 165, 370, 490});
|
||||
waveMapBuilder.put(57, new int[]{32, 32, 32, 240, 370, 490});
|
||||
waveMapBuilder.put(58, new int[]{32, 32, 32, 85, 240, 370, 490});
|
||||
waveMapBuilder.put(59, new int[]{32, 32, 32, 85, 85, 240, 370, 490});
|
||||
waveMapBuilder.put(60, new int[]{32, 32, 32, 165, 240, 370, 490});
|
||||
waveMapBuilder.put(61, new int[]{32, 32, 32, 85, 165, 240, 370, 490});
|
||||
waveMapBuilder.put(62, new int[]{32, 32, 32, 85, 85, 165, 240, 370, 490});
|
||||
waveMapBuilder.put(63, new int[]{32, 32, 32, 165, 165, 240, 370, 490});
|
||||
waveMapBuilder.put(64, new int[]{32, 32, 32, 85, 240, 240, 370, 490});
|
||||
waveMapBuilder.put(65, new int[]{32, 32, 32, 85, 370, 370, 490});
|
||||
waveMapBuilder.put(66, new int[]{32, 32, 32, 85, 490, 490});
|
||||
waveMapBuilder.put(67, new int[]{900});
|
||||
waveMapBuilder.put(68, new int[]{900, 900, 900});
|
||||
waveMapBuilder.put(69, new int[]{1400});
|
||||
|
||||
waveMapping = waveMapBuilder.build();
|
||||
|
||||
ImmutableMap.Builder<Integer, String> nameMapBuilder = new ImmutableMap.Builder<>();
|
||||
|
||||
nameMapBuilder.put(32, "Jal-Nib - Level 32");
|
||||
nameMapBuilder.put(85, "Jal-MejRah - Level 85");
|
||||
nameMapBuilder.put(165, "Jal-Ak - Level 165");
|
||||
nameMapBuilder.put(240, "Jal-ImKot - Level 240");
|
||||
nameMapBuilder.put(370, "Jal-Xil - Level 370");
|
||||
nameMapBuilder.put(490, "Jal-Zek - Level 490");
|
||||
nameMapBuilder.put(900, "JalTok-Jad - Level 900");
|
||||
nameMapBuilder.put(1400, "TzKal-Zuk - Level 1400");
|
||||
|
||||
npcNameMapping = nameMapBuilder.build();
|
||||
}
|
||||
|
||||
static void addWaveComponent(PanelComponent panelComponent, String header, int wave, Color titleColor, Color color)
|
||||
{
|
||||
int[] monsters = waveMapping.get(wave);
|
||||
|
||||
if (monsters == null)
|
||||
{
|
||||
return new HashMap<Integer, int[]>()
|
||||
return;
|
||||
}
|
||||
|
||||
panelComponent.getChildren()
|
||||
.add(TitleComponent.builder()
|
||||
.text(header)
|
||||
.color(titleColor)
|
||||
.build()
|
||||
);
|
||||
|
||||
|
||||
for (int i = 0; i < monsters.length; i++)
|
||||
{
|
||||
int monsterType = monsters[i];
|
||||
int count = 1;
|
||||
|
||||
for (; i < monsters.length - 1 && monsters[i + 1] == monsterType; i++)
|
||||
{
|
||||
{
|
||||
put(1, new int[]{32, 32, 32, 85});
|
||||
put(2, new int[]{32, 32, 32, 85, 85});
|
||||
put(3, new int[]{32, 32, 32, 32, 32, 32});
|
||||
put(4, new int[]{32, 32, 32, 165});
|
||||
put(5, new int[]{32, 32, 32, 85, 165});
|
||||
put(6, new int[]{32, 32, 32, 85, 85, 165});
|
||||
put(7, new int[]{32, 32, 32, 165, 165});
|
||||
put(8, new int[]{32, 32, 32, 32, 32, 32});
|
||||
put(9, new int[]{32, 32, 32, 240});
|
||||
put(10, new int[]{32, 32, 32, 85, 240});
|
||||
put(11, new int[]{32, 32, 32, 85, 85, 240});
|
||||
put(12, new int[]{32, 32, 32, 165, 240});
|
||||
put(13, new int[]{32, 32, 32, 85, 165, 240});
|
||||
put(14, new int[]{32, 32, 32, 85, 85, 165, 240});
|
||||
put(15, new int[]{32, 32, 32, 165, 165, 240});
|
||||
put(16, new int[]{32, 32, 32, 240, 240});
|
||||
put(17, new int[]{32, 32, 32, 32, 32, 32});
|
||||
put(18, new int[]{32, 32, 32, 370});
|
||||
put(19, new int[]{32, 32, 32, 85, 370});
|
||||
put(20, new int[]{32, 32, 32, 85, 85, 370});
|
||||
put(21, new int[]{32, 32, 32, 165, 370});
|
||||
put(22, new int[]{32, 32, 32, 85, 165, 370});
|
||||
put(23, new int[]{32, 32, 32, 85, 85, 165, 370});
|
||||
put(24, new int[]{32, 32, 32, 165, 165, 370});
|
||||
put(25, new int[]{32, 32, 32, 240, 370});
|
||||
put(26, new int[]{32, 32, 32, 85, 240, 370});
|
||||
put(27, new int[]{32, 32, 32, 85, 85, 240, 370});
|
||||
put(28, new int[]{32, 32, 32, 165, 240, 370});
|
||||
put(29, new int[]{32, 32, 32, 85, 165, 240, 370});
|
||||
put(30, new int[]{32, 32, 32, 85, 85, 165, 240, 370});
|
||||
put(31, new int[]{32, 32, 32, 165, 165, 240, 370});
|
||||
put(32, new int[]{32, 32, 32, 240, 240, 370});
|
||||
put(33, new int[]{32, 32, 32, 370, 370});
|
||||
put(34, new int[]{32, 32, 32, 32, 32, 32});
|
||||
put(35, new int[]{32, 32, 32, 490});
|
||||
put(36, new int[]{32, 32, 32, 85, 490});
|
||||
put(37, new int[]{32, 32, 32, 85, 85, 490});
|
||||
put(38, new int[]{32, 32, 32, 165, 490});
|
||||
put(39, new int[]{32, 32, 32, 85, 165, 490});
|
||||
put(40, new int[]{32, 32, 32, 85, 85, 165, 490});
|
||||
put(41, new int[]{32, 32, 32, 165, 165, 490});
|
||||
put(42, new int[]{32, 32, 32, 240, 490});
|
||||
put(43, new int[]{32, 32, 32, 85, 240, 490});
|
||||
put(44, new int[]{32, 32, 32, 85, 85, 240, 490});
|
||||
put(45, new int[]{32, 32, 32, 165, 240, 490 });
|
||||
put(46, new int[]{32, 32, 32, 85, 165, 240, 490});
|
||||
put(47, new int[]{32, 32, 32, 85, 85, 165, 240, 490});
|
||||
put(48, new int[]{32, 32, 32, 165, 165, 240, 490});
|
||||
put(49, new int[]{32, 32, 32, 240, 240, 490});
|
||||
put(50, new int[]{32, 32, 32, 370, 490});
|
||||
put(51, new int[]{32, 32, 32, 85, 370, 490});
|
||||
put(52, new int[]{32, 32, 32, 85, 85, 370, 490});
|
||||
put(53, new int[]{32, 32, 32, 165, 370, 490});
|
||||
put(54, new int[]{32, 32, 32, 85, 165, 370, 490});
|
||||
put(55, new int[]{32, 32, 32, 85, 85, 165, 370, 490});
|
||||
put(56, new int[]{32, 32, 32, 165, 165, 370, 490});
|
||||
put(57, new int[]{32, 32, 32, 240, 370, 490});
|
||||
put(58, new int[]{32, 32, 32, 85, 240, 370, 490});
|
||||
put(59, new int[]{32, 32, 32, 85, 85, 240, 370, 490});
|
||||
put(60, new int[]{32, 32, 32, 165, 240, 370, 490});
|
||||
put(61, new int[]{32, 32, 32, 85, 165, 240, 370, 490});
|
||||
put(62, new int[]{32, 32, 32, 85, 85, 165, 240, 370, 490});
|
||||
put(63, new int[]{32, 32, 32, 165, 165, 240, 370, 490});
|
||||
put(64, new int[]{32, 32, 32, 85, 240, 240, 370, 490});
|
||||
put(65, new int[]{32, 32, 32, 85, 370, 370, 490});
|
||||
put(66, new int[]{32, 32, 32, 85, 490, 490});
|
||||
put(67, new int[]{900});
|
||||
put(68, new int[]{900, 900, 900});
|
||||
put(69, new int[]{1400});
|
||||
count++;
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
TitleComponent.TitleComponentBuilder builder = TitleComponent.builder();
|
||||
|
||||
static Map<Integer, String> npcNameMapping()
|
||||
{
|
||||
return new HashMap<Integer, String>()
|
||||
{
|
||||
{
|
||||
put(32, "Jal-Nib - Level 32");
|
||||
put(85, " Jal-MejRah - Level 85");
|
||||
put(165, "Jal-Ak - Level 165");
|
||||
put(240, "Jal-ImKot - Level 240");
|
||||
put(370, "Jal-Xil - Level 370");
|
||||
put(490, "Jal-Zek - Level 490");
|
||||
put(900, "JalTok-Jad - Level 900");
|
||||
put(1400, "TzKal-Zuk - Level 1400");
|
||||
}
|
||||
};
|
||||
}
|
||||
builder.text(count + "x " + npcNameMapping.get(monsterType));
|
||||
builder.color(color);
|
||||
|
||||
static HashMap intArrayToHashmap(int inputArray[])
|
||||
{
|
||||
HashMap<Integer, Integer> elementCountMap = new HashMap<Integer, Integer>();
|
||||
for (int i : inputArray)
|
||||
{
|
||||
if (elementCountMap.containsKey(i))
|
||||
{
|
||||
elementCountMap.put(i, elementCountMap.get(i) + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
elementCountMap.put(i, 1);
|
||||
}
|
||||
}
|
||||
return elementCountMap;
|
||||
panelComponent.getChildren().add(builder.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,69 +1,69 @@
|
||||
package net.runelite.client.plugins.inferno;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.awt.Color;
|
||||
import com.google.inject.Inject;
|
||||
import net.runelite.client.ui.overlay.components.TitleComponent;
|
||||
import lombok.Setter;
|
||||
import static net.runelite.client.plugins.inferno.InfernoWaveMappings.addWaveComponent;
|
||||
import java.awt.Graphics2D;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import java.awt.Dimension;
|
||||
import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
|
||||
public class InfernoWaveOverlay extends Overlay
|
||||
{
|
||||
private final Client client;
|
||||
private final InfernoPlugin plugin;
|
||||
private final InfernoConfig config;
|
||||
private PanelComponent panelComponent;
|
||||
private final PanelComponent panelComponent;
|
||||
|
||||
@Setter
|
||||
private Color waveHeaderColor;
|
||||
|
||||
@Setter
|
||||
private Color waveTextColor;
|
||||
|
||||
@Setter
|
||||
private InfernoWaveDisplayMode displayMode;
|
||||
|
||||
@Inject
|
||||
InfernoWaveOverlay(final Client client, final InfernoPlugin plugin, final InfernoConfig config)
|
||||
{
|
||||
(this.panelComponent = new PanelComponent()).setPreferredSize(new Dimension(150, 0));
|
||||
this.setPosition(OverlayPosition.TOP_RIGHT);
|
||||
this.setPriority(OverlayPriority.HIGH);
|
||||
this.client = client;
|
||||
this.plugin = plugin;
|
||||
this.config = config;
|
||||
}
|
||||
InfernoWaveOverlay(final InfernoPlugin plugin)
|
||||
{
|
||||
this.panelComponent = new PanelComponent();
|
||||
this.setPosition(OverlayPosition.TOP_RIGHT);
|
||||
this.setPriority(OverlayPriority.HIGH);
|
||||
this.plugin = plugin;
|
||||
|
||||
panelComponent.setPreferredSize(new Dimension(160, 0));
|
||||
}
|
||||
|
||||
public Dimension render(final Graphics2D graphics)
|
||||
{
|
||||
panelComponent.getChildren().clear();
|
||||
|
||||
if (displayMode == InfernoWaveDisplayMode.CURRENT ||
|
||||
displayMode == InfernoWaveDisplayMode.BOTH)
|
||||
{
|
||||
if (!plugin.inInferno() || plugin.getCurrentWaveNumber() == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
panelComponent.getChildren().clear();
|
||||
if (config.waveDisplay() == InfernoWaveDisplayMode.CURRENT
|
||||
|| config.waveDisplay() == InfernoWaveDisplayMode.BOTH)
|
||||
{
|
||||
renderWave("Current Wave (Wave " + plugin.getCurrentWaveNumber() + ")", plugin.getCurrentWaveNumber());
|
||||
}
|
||||
if ((config.waveDisplay() == InfernoWaveDisplayMode.NEXT
|
||||
|| config.waveDisplay() == InfernoWaveDisplayMode.BOTH)
|
||||
&& plugin.isNotFinalWave())
|
||||
{
|
||||
renderWave("Next Wave (Wave " + plugin.getNextWaveNumber() + ")", plugin.getCurrentWaveNumber());
|
||||
}
|
||||
return panelComponent.render(graphics);
|
||||
addWaveComponent(
|
||||
panelComponent,
|
||||
"Current Wave (Wave " + plugin.getCurrentWaveNumber() + ")",
|
||||
plugin.getCurrentWaveNumber(),
|
||||
waveHeaderColor,
|
||||
waveTextColor
|
||||
);
|
||||
}
|
||||
|
||||
private void renderWave(final String header, final int waveNumber)
|
||||
if (displayMode == InfernoWaveDisplayMode.NEXT ||
|
||||
displayMode == InfernoWaveDisplayMode.BOTH)
|
||||
{
|
||||
panelComponent.getChildren().add(TitleComponent.builder().text(header).color(config.getWaveOverlayHeaderColor()).build());
|
||||
final HashMap<Integer, Integer> waveMap = (HashMap<Integer, Integer>) InfernoWaveMappings.intArrayToHashmap(plugin.getWaves().get(waveNumber));
|
||||
for (final Map.Entry<Integer, Integer> entry : waveMap.entrySet())
|
||||
{
|
||||
final int monsterID = entry.getKey();
|
||||
final int quantity = entry.getValue();
|
||||
if (quantity <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
panelComponent.getChildren().add(TitleComponent.builder().text(quantity + "x " + plugin.getMonster().get(monsterID)).color(config.getWaveTextColor()).build());
|
||||
}
|
||||
addWaveComponent(
|
||||
panelComponent,
|
||||
"Next Wave (Wave " + plugin.getNextWaveNumber() + ")",
|
||||
plugin.getNextWaveNumber(),
|
||||
waveHeaderColor,
|
||||
waveTextColor
|
||||
);
|
||||
}
|
||||
|
||||
return panelComponent.render(graphics);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,6 +94,8 @@ class ItemPricesOverlay extends Overlay
|
||||
// Tooltip action type handling
|
||||
switch (action)
|
||||
{
|
||||
case ITEM_USE_ON_WIDGET:
|
||||
if (!menuEntry.getTarget().contains("High Level Alchemy") || !config.showAlchProfit()) return null;
|
||||
case WIDGET_DEFAULT:
|
||||
case ITEM_USE:
|
||||
case ITEM_FIRST_OPTION:
|
||||
|
||||
@@ -35,7 +35,9 @@ public interface LootTrackerConfig extends Config
|
||||
@ConfigItem(
|
||||
keyName = "ignoredItems",
|
||||
name = "Ignored items",
|
||||
description = "Configures which items should be ignored when calculating loot prices."
|
||||
description = "Configures which items should be ignored when calculating loot prices.",
|
||||
position = 0,
|
||||
group = "Filters"
|
||||
)
|
||||
default String getIgnoredItems()
|
||||
{
|
||||
@@ -91,6 +93,7 @@ public interface LootTrackerConfig extends Config
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "sortType",
|
||||
name = "Sorting",
|
||||
@@ -101,4 +104,59 @@ public interface LootTrackerConfig extends Config
|
||||
return LootRecordSortType.TIMESTAMP;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "whitelistEnabled",
|
||||
name = "NPC Whitelist",
|
||||
description = "Only track drops from specific NPCs",
|
||||
position = 1,
|
||||
group = "Filters",
|
||||
disabledBy = "blacklistEnabled"
|
||||
)
|
||||
default boolean whitelistEnabled()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "getWhitelist",
|
||||
name = "Whitelist",
|
||||
description = "Comma-separated list of NPCs to track drops from",
|
||||
position = 2,
|
||||
group = "Filters",
|
||||
hidden = true,
|
||||
unhide = "whitelistEnabled"
|
||||
)
|
||||
default String getWhitelist()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "blacklistEnabled",
|
||||
name = "NPC Blacklist",
|
||||
description = "Track drops from all NPCs except for specified ones",
|
||||
position = 3,
|
||||
group = "Filters",
|
||||
disabledBy = "whitelistEnabled"
|
||||
)
|
||||
default boolean blacklistEnabled()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "getBlacklist",
|
||||
name = "Blacklist",
|
||||
description = "Comma-separated list of NPCs to not track drops from",
|
||||
position = 4,
|
||||
group = "Filters",
|
||||
hidden = true,
|
||||
unhide = "blacklistEnabled"
|
||||
)
|
||||
default String getBlacklist()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -323,13 +323,14 @@ public class LootTrackerPlugin extends Plugin
|
||||
log.debug("Loaded {} remote data entries", lootRecords.size());
|
||||
}
|
||||
|
||||
if (config.localPersistence() )
|
||||
if (config.localPersistence())
|
||||
{
|
||||
try
|
||||
{
|
||||
lootRecords.addAll(RuneLiteAPI.GSON.fromJson(new FileReader(LOOT_RECORDS_FILE),
|
||||
new TypeToken<ArrayList<LootRecord>>()
|
||||
{ }.getType()));
|
||||
{
|
||||
}.getType()));
|
||||
}
|
||||
catch (IOException | NullPointerException e)
|
||||
{
|
||||
@@ -370,8 +371,28 @@ public class LootTrackerPlugin extends Plugin
|
||||
final int combat = npc.getCombatLevel();
|
||||
final LootTrackerItem[] entries = buildEntries(stack(items));
|
||||
String localUsername = client.getLocalPlayer().getName();
|
||||
|
||||
if (config.whitelistEnabled())
|
||||
{
|
||||
final String configNpcs = config.getWhitelist().toLowerCase();
|
||||
List<String> whitelist = Text.fromCSV(configNpcs);
|
||||
if (!whitelist.contains(name.toLowerCase()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (config.blacklistEnabled())
|
||||
{
|
||||
final String configNpcs = config.getBlacklist().toLowerCase();
|
||||
List<String> blacklist = Text.fromCSV(configNpcs);
|
||||
if (blacklist.contains(name.toLowerCase()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(() -> panel.add(name, localUsername, combat, entries));
|
||||
LootRecord lootRecord = new LootRecord( name, localUsername, LootRecordType.NPC,
|
||||
LootRecord lootRecord = new LootRecord(name, localUsername, LootRecordType.NPC,
|
||||
toGameItems(items), Instant.now());
|
||||
|
||||
if (lootTrackerClient != null && config.saveLoot())
|
||||
@@ -404,7 +425,7 @@ public class LootTrackerPlugin extends Plugin
|
||||
final LootTrackerItem[] entries = buildEntries(stack(items));
|
||||
String localUsername = client.getLocalPlayer().getName();
|
||||
SwingUtilities.invokeLater(() -> panel.add(name, localUsername, combat, entries));
|
||||
LootRecord lootRecord = new LootRecord( name, localUsername, LootRecordType.PLAYER,
|
||||
LootRecord lootRecord = new LootRecord(name, localUsername, LootRecordType.PLAYER,
|
||||
toGameItems(items), Instant.now());
|
||||
if (lootTrackerClient != null && config.saveLoot())
|
||||
{
|
||||
@@ -599,7 +620,7 @@ public class LootTrackerPlugin extends Plugin
|
||||
SwingUtilities.invokeLater(() -> panel.add(name, client.getLocalPlayer().getName(),
|
||||
client.getLocalPlayer().getCombatLevel(), entries));
|
||||
LootRecord lootRecord = new LootRecord(name, client.getLocalPlayer().getName(), LootRecordType.DEATH,
|
||||
toGameItems(itemsLost), Instant.now());
|
||||
toGameItems(itemsLost), Instant.now());
|
||||
if (lootTrackerClient != null && config.saveLoot())
|
||||
{
|
||||
lootTrackerClient.submit(lootRecord);
|
||||
@@ -672,10 +693,10 @@ public class LootTrackerPlugin extends Plugin
|
||||
.forEach(item -> inventorySnapshot.add(item.getId(), item.getQuantity()));
|
||||
}
|
||||
|
||||
if (equipment != null)
|
||||
{
|
||||
Arrays.stream(equipment.getItems())
|
||||
.forEach(item -> inventorySnapshot.add(item.getId(), item.getQuantity()));
|
||||
if (equipment != null)
|
||||
{
|
||||
Arrays.stream(equipment.getItems())
|
||||
.forEach(item -> inventorySnapshot.add(item.getId(), item.getQuantity()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -862,7 +862,7 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (target.equals("magpie impling jar") || (target.equals("nature impling jar")))
|
||||
else if (target.equals("magpie impling jar") || (target.equals("nature impling jar")) || (target.equals("ninja impling jar")))
|
||||
{
|
||||
if (client.getItemContainer(InventoryID.INVENTORY) != null)
|
||||
{
|
||||
@@ -1309,7 +1309,17 @@ public class MenuEntrySwapperPlugin extends Plugin
|
||||
|
||||
if (!Strings.isNullOrEmpty(config))
|
||||
{
|
||||
Map<String, String> split = NEWLINE_SPLITTER.withKeyValueSeparator(':').split(config);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
for (String str : config.split("\n"))
|
||||
{
|
||||
if (!str.startsWith("//"))
|
||||
{
|
||||
sb.append(str + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, String> split = NEWLINE_SPLITTER.withKeyValueSeparator(':').split(sb);
|
||||
|
||||
for (Map.Entry<String, String> entry : split.entrySet())
|
||||
{
|
||||
|
||||
@@ -32,12 +32,22 @@ public class Parse
|
||||
{
|
||||
try
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
for (String str : value.split("\n"))
|
||||
{
|
||||
if (!str.startsWith("//"))
|
||||
{
|
||||
sb.append(str + "\n");
|
||||
}
|
||||
}
|
||||
|
||||
Splitter NEWLINE_SPLITTER = Splitter
|
||||
.on("\n")
|
||||
.omitEmptyStrings()
|
||||
.trimResults();
|
||||
|
||||
NEWLINE_SPLITTER.withKeyValueSeparator(':').split(value);
|
||||
NEWLINE_SPLITTER.withKeyValueSeparator(':').split(sb);
|
||||
return true;
|
||||
}
|
||||
catch (IllegalArgumentException ex)
|
||||
|
||||
@@ -35,10 +35,10 @@ import net.runelite.client.config.Stub;
|
||||
public interface PileIndicatorsConfig extends Config
|
||||
{
|
||||
@ConfigItem(
|
||||
keyName = "playerPilesStub",
|
||||
name = "Player Piles",
|
||||
description = "",
|
||||
position = 0
|
||||
keyName = "playerPilesStub",
|
||||
name = "Player Piles",
|
||||
description = "",
|
||||
position = 0
|
||||
)
|
||||
default Stub playerPilesStub()
|
||||
{
|
||||
@@ -46,11 +46,11 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 1,
|
||||
keyName = "enablePlayers",
|
||||
name = "Enable Player Piling",
|
||||
description = "Enable the option to highlight players when they pile.",
|
||||
parent = "playerPilesStub"
|
||||
position = 1,
|
||||
keyName = "enablePlayers",
|
||||
name = "Enable Player Piling",
|
||||
description = "Enable the option to highlight players when they pile.",
|
||||
parent = "playerPilesStub"
|
||||
)
|
||||
default boolean enablePlayers()
|
||||
{
|
||||
@@ -58,11 +58,11 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 2,
|
||||
keyName = "wildyOnlyPlayer",
|
||||
name = "Wilderness Only",
|
||||
description = "Show player piling only when in the Wilderness.",
|
||||
parent = "playerPilesStub"
|
||||
position = 2,
|
||||
keyName = "wildyOnlyPlayer",
|
||||
name = "Wilderness Only",
|
||||
description = "Show player piling only when in the Wilderness.",
|
||||
parent = "playerPilesStub"
|
||||
)
|
||||
default boolean wildyOnlyPlayer()
|
||||
{
|
||||
@@ -70,22 +70,22 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 3,
|
||||
keyName = "playerPileColor",
|
||||
name = "Player Pile Color",
|
||||
description = "Color used for player piles.",
|
||||
parent = "playerPilesStub"
|
||||
position = 3,
|
||||
keyName = "playerPileColor",
|
||||
name = "Player Pile Color",
|
||||
description = "Color used for player piles.",
|
||||
parent = "playerPilesStub"
|
||||
)
|
||||
default Color playerPileColor()
|
||||
{
|
||||
return Color.RED;
|
||||
}
|
||||
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "npcPilesStub",
|
||||
name = "NPC Piles",
|
||||
description = "",
|
||||
position = 4
|
||||
keyName = "npcPilesStub",
|
||||
name = "NPC Piles",
|
||||
description = "",
|
||||
position = 4
|
||||
)
|
||||
default Stub npcPilesStub()
|
||||
{
|
||||
@@ -93,11 +93,11 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 5,
|
||||
keyName = "enableNPCS",
|
||||
name = "Enable NPC Piling",
|
||||
description = "Enable the option to highlight NPCs when they pile.",
|
||||
parent = "npcPilesStub"
|
||||
position = 5,
|
||||
keyName = "enableNPCS",
|
||||
name = "Enable NPC Piling",
|
||||
description = "Enable the option to highlight NPCs when they pile.",
|
||||
parent = "npcPilesStub"
|
||||
)
|
||||
default boolean enableNPCS()
|
||||
{
|
||||
@@ -105,11 +105,11 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 6,
|
||||
keyName = "npcPileColor",
|
||||
name = "NPC Pile Color",
|
||||
description = "Color used for NPC piles.",
|
||||
parent = "npcPilesStub"
|
||||
position = 6,
|
||||
keyName = "npcPileColor",
|
||||
name = "NPC Pile Color",
|
||||
description = "Color used for NPC piles.",
|
||||
parent = "npcPilesStub"
|
||||
)
|
||||
default Color npcPileColor()
|
||||
{
|
||||
@@ -117,10 +117,10 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "mixedPilesStub",
|
||||
name = "Mixed Piles",
|
||||
description = "",
|
||||
position = 7
|
||||
keyName = "mixedPilesStub",
|
||||
name = "Mixed Piles",
|
||||
description = "",
|
||||
position = 7
|
||||
)
|
||||
default Stub mixedPilesStub()
|
||||
{
|
||||
@@ -128,11 +128,11 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 8,
|
||||
keyName = "mixedPileColor",
|
||||
name = "Mixed Pile Color",
|
||||
description = "Color used for mixed piles.",
|
||||
parent = "mixedPilesStub"
|
||||
position = 8,
|
||||
keyName = "mixedPileColor",
|
||||
name = "Mixed Pile Color",
|
||||
description = "Color used for mixed piles.",
|
||||
parent = "mixedPilesStub"
|
||||
)
|
||||
default Color mixedPileColor()
|
||||
{
|
||||
@@ -140,10 +140,10 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "pilesSizeStub",
|
||||
name = "Pile size",
|
||||
description = "",
|
||||
position = 9
|
||||
keyName = "pilesSizeStub",
|
||||
name = "Pile size",
|
||||
description = "",
|
||||
position = 9
|
||||
)
|
||||
default Stub pilesSizeStub()
|
||||
{
|
||||
@@ -151,14 +151,14 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@Range(
|
||||
min = 2
|
||||
min = 2
|
||||
)
|
||||
@ConfigItem(
|
||||
position = 10,
|
||||
keyName = "minimumPileSize",
|
||||
name = "Minimum Pile Size",
|
||||
description = "Any pile under this size will not show up. (Minimum: 2)",
|
||||
parent = "pilesSizeStub"
|
||||
position = 10,
|
||||
keyName = "minimumPileSize",
|
||||
name = "Minimum Pile Size",
|
||||
description = "Any pile under this size will not show up. (Minimum: 2)",
|
||||
parent = "pilesSizeStub"
|
||||
)
|
||||
default int minimumPileSize()
|
||||
{
|
||||
@@ -166,10 +166,10 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "miscellaneousStub",
|
||||
name = "Miscellaneous",
|
||||
description = "",
|
||||
position = 11
|
||||
keyName = "miscellaneousStub",
|
||||
name = "Miscellaneous",
|
||||
description = "",
|
||||
position = 11
|
||||
)
|
||||
default Stub miscellaneousStub()
|
||||
{
|
||||
@@ -177,14 +177,39 @@ public interface PileIndicatorsConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 12,
|
||||
keyName = "numberOnly",
|
||||
name = "Display Number Only",
|
||||
description = "Shorten \"PILE SIZE: 1\" to \"1\"",
|
||||
parent = "miscellaneousStub"
|
||||
position = 12,
|
||||
keyName = "numberOnly",
|
||||
name = "Display Number Only",
|
||||
description = "Shorten \"PILE SIZE: 1\" to \"1\"",
|
||||
parent = "miscellaneousStub"
|
||||
)
|
||||
default boolean numberOnly()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 13,
|
||||
keyName = "drawPileTile",
|
||||
name = "Draw Pile Tile",
|
||||
description = "Draws the tile of the pile for best visibility.",
|
||||
parent = "miscellaneousStub"
|
||||
)
|
||||
default boolean drawPileTile()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 14,
|
||||
keyName = "drawPileHull",
|
||||
name = "Draw Pile Convex Hull",
|
||||
description = "Draws the hull of the pile for best visibility.",
|
||||
parent = "miscellaneousStub"
|
||||
)
|
||||
default boolean drawPileHull()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,11 +26,15 @@ package net.runelite.client.plugins.pileindicators;
|
||||
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.ui.overlay.*;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
|
||||
public class PileIndicatorsOverlay extends Overlay
|
||||
{
|
||||
@@ -65,22 +69,21 @@ public class PileIndicatorsOverlay extends Overlay
|
||||
PileType pileType = plugin.getPileType(actorArrayList);
|
||||
Color pileColor = plugin.getColorByPileType(pileType);
|
||||
|
||||
try
|
||||
try
|
||||
{
|
||||
Actor actorToRender = actorArrayList.get(0); //guaranteed to have at least two players
|
||||
final String text;
|
||||
if (config.numberOnly())
|
||||
final String pileTypeStr = pileType == PileType.PLAYER_PILE ? "PLAYER" : pileType == PileType.NPC_PILE ? "NPC" : pileType == PileType.MIXED_PILE ? "MIXED" : "";
|
||||
final String text = config.numberOnly() ? "" + actorArrayList.size() : (pileTypeStr + " PILE SIZE: " + actorArrayList.size());
|
||||
if (config.drawPileTile())
|
||||
{
|
||||
text = "" + actorArrayList.size();
|
||||
OverlayUtil.renderPolygon(graphics, actorToRender.getCanvasTilePoly(), pileColor);
|
||||
}
|
||||
else
|
||||
if (config.drawPileHull())
|
||||
{
|
||||
text = "PILE SIZE: " + actorArrayList.size();
|
||||
OverlayUtil.renderPolygon(graphics, actorToRender.getConvexHull(), pileColor);
|
||||
}
|
||||
|
||||
OverlayUtil.renderPolygon(graphics, actorToRender.getCanvasTilePoly(), pileColor);
|
||||
OverlayUtil.renderTextLocation(graphics, actorToRender.getCanvasTextLocation(graphics, text, 40), text, pileColor);
|
||||
}
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
@@ -89,4 +92,5 @@ public class PileIndicatorsOverlay extends Overlay
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,7 +27,11 @@ package net.runelite.client.plugins.pileindicators;
|
||||
import com.google.inject.Binder;
|
||||
import com.google.inject.Provides;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.*;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
@@ -40,11 +44,11 @@ import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Pile Indicators",
|
||||
description = "Highlight and count how many npcs/players are stacked on each other.",
|
||||
tags = {"overlay", "pile", "stack", "pvp", "pvm", "pve"},
|
||||
type = PluginType.UTILITY,
|
||||
enabledByDefault = false
|
||||
name = "Pile Indicators",
|
||||
description = "Highlight and count how many npcs/players are stacked on each other.",
|
||||
tags = {"overlay", "pile", "stack", "pvp", "pvm", "pve"},
|
||||
type = PluginType.UTILITY,
|
||||
enabledByDefault = false
|
||||
)
|
||||
|
||||
@Singleton
|
||||
|
||||
@@ -29,7 +29,6 @@ import net.runelite.api.ClanMemberRank;
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
import net.runelite.client.config.Range;
|
||||
|
||||
@ConfigGroup("playerindicators")
|
||||
public interface PlayerIndicatorsConfig extends Config
|
||||
@@ -365,46 +364,6 @@ public interface PlayerIndicatorsConfig extends Config
|
||||
return Color.WHITE;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 27,
|
||||
keyName = "highlightPile",
|
||||
name = "Highlight Pile",
|
||||
description = "Highlights Pile Onscreen",
|
||||
group = "Callers"
|
||||
)
|
||||
default boolean highlightPile()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 29,
|
||||
keyName = "drawPileHull",
|
||||
name = "Draws the hull of the pile.",
|
||||
description = "Draws the hull of the pile for best visibility.",
|
||||
group = "Callers"
|
||||
)
|
||||
default boolean drawPileHull()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Range(
|
||||
min = 1,
|
||||
max = 10
|
||||
)
|
||||
@ConfigItem(
|
||||
position = 30,
|
||||
keyName = "pileColor",
|
||||
name = "Pile Color",
|
||||
description = "Color of Indicated Pile",
|
||||
group = "Callers"
|
||||
)
|
||||
default Color pileColor()
|
||||
{
|
||||
return Color.WHITE;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 27,
|
||||
keyName = "unchargedGlory",
|
||||
|
||||
@@ -172,10 +172,6 @@ public class PlayerIndicatorsOverlay extends Overlay
|
||||
{
|
||||
name = "[C] " + name;
|
||||
}
|
||||
if (config.highlightPile() && playerIndicatorsPlugin.isPile(actor))
|
||||
{
|
||||
name = "[P] " + name;
|
||||
}
|
||||
if (config.showCombatLevel())
|
||||
{
|
||||
|
||||
|
||||
@@ -29,9 +29,7 @@ import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.ClanMember;
|
||||
import net.runelite.api.ClanMemberRank;
|
||||
import static net.runelite.api.ClanMemberRank.UNRANKED;
|
||||
@@ -54,7 +52,6 @@ import net.runelite.api.Player;
|
||||
import net.runelite.api.events.ClanMemberJoined;
|
||||
import net.runelite.api.events.ClanMemberLeft;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
@@ -128,35 +125,6 @@ public class PlayerIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick gameTick)
|
||||
{
|
||||
if (config.highlightPile() && callers != null)
|
||||
{
|
||||
for (Player p : client.getPlayers())
|
||||
{
|
||||
for (String name : callers)
|
||||
{
|
||||
Actor pile;
|
||||
String finalName = name.toLowerCase().replace("_", " ");
|
||||
if (p.getName().toLowerCase().replace("_", " ").equals(finalName))
|
||||
{
|
||||
pile = p.getInteracting();
|
||||
if (pile != null)
|
||||
{
|
||||
pileList.set(callers.indexOf(name), pile.getName());
|
||||
//pileList.add(pile.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
pileList.set(callers.indexOf(name), "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onClanMemberJoined(ClanMemberJoined event)
|
||||
{
|
||||
@@ -213,14 +181,6 @@ public class PlayerIndicatorsPlugin extends Plugin
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isPile(Player player)
|
||||
{
|
||||
if (Objects.nonNull(pileList) && pileList.size() > 0)
|
||||
{
|
||||
return pileList.contains(player.getName());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded menuEntryAdded)
|
||||
@@ -328,10 +288,6 @@ public class PlayerIndicatorsPlugin extends Plugin
|
||||
{
|
||||
color = config.callerColor();
|
||||
}
|
||||
if (config.colorPlayerMenu() && config.highlightPile() && this.isPile(player))
|
||||
{
|
||||
color = config.pileColor();
|
||||
}
|
||||
if (image != -1 || color != null)
|
||||
{
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
|
||||
@@ -50,8 +50,7 @@ public class PlayerIndicatorsService
|
||||
public void forEachPlayer(final BiConsumer<Player, Color> consumer)
|
||||
{
|
||||
if (!config.highlightOwnPlayer() && !config.drawClanMemberNames()
|
||||
&& !config.highlightFriends() && !config.highlightNonClanMembers() && !config.highlightTargets()
|
||||
&& !config.highlightPile() && !config.highlightCallers() && !config.highlightTeamMembers())
|
||||
&& !config.highlightFriends() && !config.highlightNonClanMembers() && !config.highlightTargets() && !config.highlightCallers() && !config.highlightTeamMembers())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -107,11 +106,6 @@ public class PlayerIndicatorsService
|
||||
{
|
||||
consumer.accept(player, config.callerColor());
|
||||
}
|
||||
if (config.highlightPile() && playerIndicatorsPlugin.isPile(player)
|
||||
&& !player.isClanMember())
|
||||
{
|
||||
consumer.accept(player, config.pileColor());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,6 @@
|
||||
|
||||
package net.runelite.client.plugins.playerindicators;
|
||||
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Polygon;
|
||||
@@ -58,18 +56,6 @@ public class PlayerIndicatorsTileOverlay extends Overlay
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
{
|
||||
if (config.drawPileHull())
|
||||
{
|
||||
playerIndicatorsService.forEachPlayer((player, color) ->
|
||||
{
|
||||
if (playerIndicatorsPlugin.isPile(player))
|
||||
{
|
||||
Polygon objectClickbox = player.getConvexHull();
|
||||
|
||||
renderPoly(graphics, config.pileColor(), objectClickbox);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (!config.drawTiles() /*&& !config.drawPlayerHull()*/)
|
||||
{
|
||||
return null;
|
||||
@@ -89,15 +75,4 @@ public class PlayerIndicatorsTileOverlay extends Overlay
|
||||
return null;
|
||||
}
|
||||
|
||||
private void renderPoly(Graphics2D graphics, Color color, Polygon polygon)
|
||||
{
|
||||
if (polygon != null)
|
||||
{
|
||||
graphics.setColor(color);
|
||||
graphics.setStroke(new BasicStroke(2));
|
||||
graphics.draw(polygon);
|
||||
graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), 20));
|
||||
graphics.fill(polygon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ package net.runelite.client.plugins.raids;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.lang.reflect.Method;
|
||||
import javax.inject.Inject;
|
||||
import javax.swing.BorderFactory;
|
||||
import javax.swing.JButton;
|
||||
@@ -78,22 +77,9 @@ class RaidsPanel extends PluginPanel
|
||||
JPanel scoutFrame = new JPanel();
|
||||
reloadButton.addActionListener((ActionEvent e) ->
|
||||
{
|
||||
|
||||
|
||||
if ((client.getGameState() == GameState.LOGGED_IN))
|
||||
{
|
||||
try
|
||||
{
|
||||
//look for client.gameStateChanged(-1); in src files to find
|
||||
Method m = client.getClass().getClassLoader().loadClass("ba").getDeclaredMethod("ec", int.class, byte.class);
|
||||
m.setAccessible(true);
|
||||
m.invoke(null, 40, (byte) 3);
|
||||
|
||||
}
|
||||
catch (ReflectiveOperationException f)
|
||||
{
|
||||
throw new RuntimeException(f);
|
||||
}
|
||||
client.setGameState(40);
|
||||
}
|
||||
});
|
||||
reloadScouter.addActionListener((ActionEvent e) ->
|
||||
|
||||
@@ -28,16 +28,29 @@ import java.awt.Color;
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
import net.runelite.client.config.Stub;
|
||||
|
||||
@ConfigGroup("runedoku")
|
||||
public interface RunedokuConfig extends Config
|
||||
{
|
||||
|
||||
@ConfigItem(
|
||||
position = 0,
|
||||
keyName = "mindRuneColor",
|
||||
name = "Mind Rune Color",
|
||||
description = "Color used to highlight Mind runes."
|
||||
position = 0,
|
||||
keyName = "colorStub",
|
||||
name = "Colors",
|
||||
description = "" //stubs don't show descriptions when hovered over
|
||||
)
|
||||
default Stub colorStub()
|
||||
{
|
||||
return new Stub();
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 1,
|
||||
keyName = "mindRuneColor",
|
||||
name = "Mind Rune Color",
|
||||
description = "Color used to highlight Mind runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color mindRuneColor()
|
||||
{
|
||||
@@ -45,10 +58,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 1,
|
||||
keyName = "fireRuneColor",
|
||||
name = "Fire Rune Color",
|
||||
description = "Color used to highlight Fire runes."
|
||||
position = 2,
|
||||
keyName = "fireRuneColor",
|
||||
name = "Fire Rune Color",
|
||||
description = "Color used to highlight Fire runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color fireRuneColor()
|
||||
{
|
||||
@@ -56,10 +70,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 2,
|
||||
keyName = "bodyRuneColor",
|
||||
name = "Body Rune Color",
|
||||
description = "Color used to highlight Body runes."
|
||||
position = 3,
|
||||
keyName = "bodyRuneColor",
|
||||
name = "Body Rune Color",
|
||||
description = "Color used to highlight Body runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color bodyRuneColor()
|
||||
{
|
||||
@@ -67,10 +82,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 3,
|
||||
keyName = "airRuneColor",
|
||||
name = "Air Rune Color",
|
||||
description = "Color used to highlight Air runes."
|
||||
position = 4,
|
||||
keyName = "airRuneColor",
|
||||
name = "Air Rune Color",
|
||||
description = "Color used to highlight Air runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color airRuneColor()
|
||||
{
|
||||
@@ -78,10 +94,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 4,
|
||||
keyName = "deathRuneColor",
|
||||
name = "Death Rune Color",
|
||||
description = "Color used to highlight Death runes."
|
||||
position = 5,
|
||||
keyName = "deathRuneColor",
|
||||
name = "Death Rune Color",
|
||||
description = "Color used to highlight Death runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color deathRuneColor()
|
||||
{
|
||||
@@ -89,10 +106,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 5,
|
||||
keyName = "waterRuneColor",
|
||||
name = "Water Rune Color",
|
||||
description = "Color used to highlight Water runes."
|
||||
position = 6,
|
||||
keyName = "waterRuneColor",
|
||||
name = "Water Rune Color",
|
||||
description = "Color used to highlight Water runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color waterRuneColor()
|
||||
{
|
||||
@@ -100,10 +118,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 6,
|
||||
keyName = "chaosRuneColor",
|
||||
name = "Chaos Rune Color",
|
||||
description = "Color used to highlight Chaos runes."
|
||||
position = 7,
|
||||
keyName = "chaosRuneColor",
|
||||
name = "Chaos Rune Color",
|
||||
description = "Color used to highlight Chaos runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color chaosRuneColor()
|
||||
{
|
||||
@@ -111,10 +130,11 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 7,
|
||||
keyName = "earthRuneColor",
|
||||
name = "Earth Rune Color",
|
||||
description = "Color used to highlight Earth runes."
|
||||
position = 8,
|
||||
keyName = "earthRuneColor",
|
||||
name = "Earth Rune Color",
|
||||
description = "Color used to highlight Earth runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color earthRuneColor()
|
||||
{
|
||||
@@ -122,14 +142,37 @@ public interface RunedokuConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 8,
|
||||
keyName = "lawRuneColor",
|
||||
name = "Law Rune Color",
|
||||
description = "Color used to highlight Law runes."
|
||||
position = 9,
|
||||
keyName = "lawRuneColor",
|
||||
name = "Law Rune Color",
|
||||
description = "Color used to highlight Law runes.",
|
||||
parent = "colorStub"
|
||||
)
|
||||
default Color lawRuneColor()
|
||||
{
|
||||
return Color.CYAN;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 10,
|
||||
keyName = "miscFeature",
|
||||
name = "Miscellaneous Features",
|
||||
description = ""
|
||||
)
|
||||
default Stub miscFeature()
|
||||
{
|
||||
return new Stub();
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 11,
|
||||
keyName = "onlyHighlightSelectedPiece",
|
||||
name = "Only Highlight Selected Piece",
|
||||
description = "Instead of showing all, this option only show what rune you have selected."
|
||||
)
|
||||
default boolean onlyHighlightSelectedPiece()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,15 +47,17 @@ class RunedokuOverlay extends Overlay
|
||||
private final RunedokuPlugin plugin;
|
||||
private final Client client;
|
||||
private final RunedokuUtil util;
|
||||
private final RunedokuConfig config;
|
||||
|
||||
|
||||
@Inject
|
||||
private RunedokuOverlay(final RunedokuPlugin plugin, final Client client, final RunedokuUtil util)
|
||||
private RunedokuOverlay(final RunedokuPlugin plugin, final Client client, final RunedokuUtil util, final RunedokuConfig config)
|
||||
{
|
||||
super(plugin);
|
||||
this.plugin = plugin;
|
||||
this.client = client;
|
||||
this.util = util;
|
||||
this.config = config;
|
||||
|
||||
setPosition(OverlayPosition.DETACHED);
|
||||
setLayer(OverlayLayer.ALWAYS_ON_TOP);
|
||||
@@ -138,7 +140,10 @@ class RunedokuOverlay extends Overlay
|
||||
}
|
||||
else
|
||||
{
|
||||
OverlayUtil.renderPolygon(graphics, RunedokuUtil.rectangleToPolygon(squareToHighlight.getBounds()), util.sudokuPieceToColor(simpleArr.get(iteration)));
|
||||
if (!config.onlyHighlightSelectedPiece() ^ (config.onlyHighlightSelectedPiece() && util.getSelectedPiece(client) == simpleArr.get(iteration)))
|
||||
{
|
||||
OverlayUtil.renderPolygon(graphics, RunedokuUtil.rectangleToPolygon(squareToHighlight.getBounds()), util.sudokuPieceToColor(simpleArr.get(iteration)));
|
||||
}
|
||||
}
|
||||
iteration++;
|
||||
}
|
||||
|
||||
@@ -180,4 +180,41 @@ class RunedokuUtil
|
||||
return myArr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param client
|
||||
* @return
|
||||
*/
|
||||
int getSelectedPiece(Client client)
|
||||
{
|
||||
for (int i = 91; i < 100; i++)
|
||||
{
|
||||
Widget selectedPieceWidget = client.getWidget(288, i);
|
||||
if (!selectedPieceWidget.isHidden())
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 91:
|
||||
return 8;
|
||||
case 92:
|
||||
return 6;
|
||||
case 93:
|
||||
return 4;
|
||||
case 94:
|
||||
return 2;
|
||||
case 95:
|
||||
return 1;
|
||||
case 96:
|
||||
return 3;
|
||||
case 97:
|
||||
return 5;
|
||||
case 98:
|
||||
return 7;
|
||||
case 99:
|
||||
return 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -81,6 +81,12 @@ public class XteaPlugin extends Plugin
|
||||
|
||||
log.debug("Region {} keys {}, {}, {}, {}", region, keys[0], keys[1], keys[2], keys[3]);
|
||||
|
||||
//Don't post non encrypted regions
|
||||
if (keys[0] == 0 && keys[1] == 0 && keys[2] == 0 && keys[3] == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
XteaKey xteaKey = new XteaKey();
|
||||
xteaKey.setRegion(region);
|
||||
xteaKey.setKeys(keys);
|
||||
|
||||
@@ -1,143 +0,0 @@
|
||||
package net.runelite.client.rs;
|
||||
|
||||
import java.applet.AppletContext;
|
||||
import java.applet.AppletStub;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public class Launcher implements AppletStub
|
||||
{
|
||||
|
||||
public static final Logger logger = Logger.getLogger(Launcher.class.getSimpleName());
|
||||
|
||||
private static final HashMap<String, String> params = new HashMap<String, String>();
|
||||
private static final HashMap<String, String> cfg = new HashMap<String, String>();
|
||||
private static URL codebase;
|
||||
|
||||
static
|
||||
{
|
||||
cfg.put("privacyurl", "http://www.jagex.com/g=oldscape/privacy/privacy.ws");
|
||||
cfg.put("window_preferredheight", "600");
|
||||
cfg.put("msg", "new_version_link=http://oldschool.runescape.com/");
|
||||
cfg.put("applet_minwidth", "765");
|
||||
cfg.put("adverturl", "http://www.runescape.com/g=oldscape/bare_advert.ws");
|
||||
cfg.put("cachedir", "oldschool");
|
||||
cfg.put("window_preferredwidth", "800");
|
||||
cfg.put("applet_maxheight", "2160");
|
||||
cfg.put("win_sub_version", "1");
|
||||
cfg.put("browsercontrol_win_x86_jar", "browsercontrol_0_-1928975093.jar");
|
||||
cfg.put("other_sub_version", "2");
|
||||
cfg.put("initial_jar", "gamepack_4840368.jar");
|
||||
cfg.put("advert_height", "96");
|
||||
cfg.put("title", "Old School RuneScape");
|
||||
cfg.put("storebase", "0");
|
||||
cfg.put("initial_class", "client.class");
|
||||
cfg.put("applet_maxwidth", "5760");
|
||||
cfg.put("download", "1230228");
|
||||
cfg.put("termsurl", "http://www.jagex.com/g=oldscape/terms/terms.ws");
|
||||
cfg.put("codebase", "http://oldschool1.runescape.com/");
|
||||
cfg.put("mac_sub_version", "2");
|
||||
cfg.put("browsercontrol_win_amd64_jar", "browsercontrol_1_1674545273.jar");
|
||||
cfg.put("applet_minheight", "503");
|
||||
cfg.put("viewerversion", "124");
|
||||
}
|
||||
|
||||
public Launcher()
|
||||
{
|
||||
try
|
||||
{
|
||||
parseParams(new FileInputStream(new File("./params.txt")));
|
||||
String worldListKey = null;
|
||||
for (Map.Entry<String, String> paramEntry : params.entrySet())
|
||||
{
|
||||
String key = paramEntry.getKey();
|
||||
String value = paramEntry.getValue();
|
||||
if (value.contains("slr.ws"))
|
||||
{
|
||||
worldListKey = key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
codebase = new URL("http://thatgamerblue.com/");
|
||||
params.put(worldListKey, "http://" + codebase.getHost());
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static void parseParams(InputStream stream) throws IOException
|
||||
{
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
|
||||
String line;
|
||||
while ((line = br.readLine()) != null)
|
||||
{
|
||||
int idx = line.indexOf('=');
|
||||
if (idx != -1)
|
||||
{
|
||||
String key = line.substring(0, idx);
|
||||
String val = line.substring(idx + 1);
|
||||
if (key.equals("param"))
|
||||
{
|
||||
idx = val.indexOf('=');
|
||||
key = val.substring(0, idx);
|
||||
val = val.substring(idx + 1);
|
||||
params.put(key, val);
|
||||
}
|
||||
else
|
||||
{
|
||||
cfg.put(key, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void log(String format, Object... params)
|
||||
{
|
||||
System.out.printf(format + "\n", params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getDocumentBase()
|
||||
{
|
||||
return codebase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getCodeBase()
|
||||
{
|
||||
return codebase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getParameter(String name)
|
||||
{
|
||||
return params.get(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppletContext getAppletContext()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void appletResize(int width, int height)
|
||||
{
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -44,6 +44,7 @@ import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.HitsplatApplied;
|
||||
import net.runelite.api.events.InteractingChanged;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.game.SoundManager;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -70,6 +71,10 @@ public class IdleNotifierPluginTest
|
||||
@Bind
|
||||
private IdleNotifierConfig config;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
private SoundManager soundManager;
|
||||
|
||||
@Mock
|
||||
@Bind
|
||||
private Notifier notifier;
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Null (zeruth)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.mixins;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import net.runelite.api.mixins.Copy;
|
||||
import net.runelite.api.mixins.Inject;
|
||||
import net.runelite.api.mixins.Mixin;
|
||||
import net.runelite.api.mixins.Replace;
|
||||
import net.runelite.rs.api.RSBuffer;
|
||||
|
||||
@Mixin(RSBuffer.class)
|
||||
public abstract class RSBufferMixin implements RSBuffer
|
||||
{
|
||||
@Inject
|
||||
private static BigInteger modulus = new BigInteger("10001", 16);
|
||||
|
||||
@Inject
|
||||
private static BigInteger exponent = new BigInteger("ab40c047a2e5c95d0356572420b7a9bd84965425d4ce15ad989b17a71b31db80682178a7285c0a2b427c311740dbc25fed84e0b63a95215056ae24e66a5eed1a7b153bc3caf7147c5746962251ca161b3c3f01366373a150cc3ba43c2c9f8be74663f81353ce3aef0a24ba2131112c7db1dfb27583255e8c36fb8c48b01aea0eb33300a53d8eb24be40651cf9e50e891148596acb13c120cf6194871b16d91e4af1a9e7be75e62b49a267ed800da0273d3945068011ea02f74c7a37098b5055a394625ecb23425bc33ee2d1e51f3d42b6380375e9369a55a45888e5a12d9475b851360492d22029f2ea48eaaf855965f9ebd3b2e2cf05c933a9bad80741187d5", 16);
|
||||
|
||||
@Copy("encryptRsa")
|
||||
public void rs$encryptRsa(BigInteger var1, BigInteger var2)
|
||||
{
|
||||
}
|
||||
|
||||
@Replace("encryptRsa")
|
||||
public void rl$encryptRsa(BigInteger var1, BigInteger var2)
|
||||
{
|
||||
rs$encryptRsa(modulus, exponent);
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,6 @@ import net.runelite.api.mixins.FieldHook;
|
||||
import net.runelite.api.mixins.Inject;
|
||||
import net.runelite.api.mixins.MethodHook;
|
||||
import net.runelite.api.mixins.Mixin;
|
||||
import net.runelite.api.mixins.Replace;
|
||||
import net.runelite.api.mixins.Shadow;
|
||||
import net.runelite.rs.api.RSClient;
|
||||
import net.runelite.rs.api.RSGameShell;
|
||||
@@ -98,11 +97,4 @@ public abstract class RSGameShellMixin implements RSGameShell
|
||||
setResizeCanvasNextFrame(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Replace("checkHost")
|
||||
protected final boolean checkHost()
|
||||
{
|
||||
//Always allow host.
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Adam <Adam@sigterm.info>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
package net.runelite.mixins;
|
||||
|
||||
import net.runelite.api.coords.LocalPoint;
|
||||
import net.runelite.rs.api.RSClient;
|
||||
import net.runelite.rs.api.RSPlayer;
|
||||
import org.junit.Test;
|
||||
import static org.mockito.Matchers.eq;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
public class RSSceneMixinTest
|
||||
{
|
||||
@Test
|
||||
public void testWalkDistance()
|
||||
{
|
||||
RSClient client = mock(RSClient.class);
|
||||
RSPlayer localPlayer = mock(RSPlayer.class);
|
||||
when(client.getLocalPlayer()).thenReturn(localPlayer);
|
||||
|
||||
when(localPlayer.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
|
||||
|
||||
RSSceneMixin.client = client;
|
||||
RSSceneMixin.setTargetTile(90, 0);
|
||||
|
||||
verify(client).setSelectedSceneTileX(eq(45));
|
||||
verify(client).setSelectedSceneTileY(eq(0));
|
||||
}
|
||||
}
|
||||
@@ -143,6 +143,9 @@ public interface RSClient extends RSGameShell, Client
|
||||
@Import("gameState")
|
||||
int getRSGameState();
|
||||
|
||||
@Import("updateGameState")
|
||||
void setGameState(int gameState);
|
||||
|
||||
@Import("checkClick")
|
||||
@Override
|
||||
void setCheckClick(boolean checkClick);
|
||||
|
||||
@@ -16,6 +16,10 @@ public abstract class AbstractByteArrayCopier {
|
||||
@Export("__gu_et")
|
||||
static IndexCache __gu_et;
|
||||
|
||||
static {
|
||||
directBufferUnavailable = false;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(I)[B",
|
||||
@@ -59,29 +63,30 @@ public abstract class AbstractByteArrayCopier {
|
||||
garbageValue = "-1941491045"
|
||||
)
|
||||
public static void method4023(int var0) {
|
||||
if(var0 != -1 && Widget.loadedWidgetGroups[var0]) {
|
||||
Widget.Widget_indexCache.__h_399(var0);
|
||||
if(Widget.widgets[var0] != null) {
|
||||
boolean var1 = true;
|
||||
if(var0 != -1) {
|
||||
if(Widget.loadedWidgetGroups[var0]) {
|
||||
Widget.Widget_indexCache.__h_399(var0);
|
||||
if(Widget.widgets[var0] != null) {
|
||||
boolean var1 = true;
|
||||
|
||||
for(int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) {
|
||||
if(Widget.widgets[var0][var2] != null) {
|
||||
if(Widget.widgets[var0][var2].type != 2) {
|
||||
Widget.widgets[var0][var2] = null;
|
||||
} else {
|
||||
var1 = false;
|
||||
for(int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) {
|
||||
if(Widget.widgets[var0][var2] != null) {
|
||||
if(Widget.widgets[var0][var2].type != 2) {
|
||||
Widget.widgets[var0][var2] = null;
|
||||
} else {
|
||||
var1 = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var1) {
|
||||
Widget.widgets[var0] = null;
|
||||
}
|
||||
if(var1) {
|
||||
Widget.widgets[var0] = null;
|
||||
}
|
||||
|
||||
Widget.loadedWidgetGroups[var0] = false;
|
||||
Widget.loadedWidgetGroups[var0] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("gb")
|
||||
@@ -96,8 +101,4 @@ public abstract class AbstractByteArrayCopier {
|
||||
var0.packetBuffer.writeShort(Huffman.canvasHeight);
|
||||
Client.packetWriter.__q_167(var0);
|
||||
}
|
||||
|
||||
static {
|
||||
directBufferUnavailable = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,20 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
@Export("kerning")
|
||||
byte[] kerning;
|
||||
|
||||
static {
|
||||
AbstractFont_strike = -1;
|
||||
AbstractFont_underline = -1;
|
||||
AbstractFont_previousShadow = -1;
|
||||
AbstractFont_shadow = -1;
|
||||
AbstractFont_previousColor = 0;
|
||||
AbstractFont_color = 0;
|
||||
AbstractFont_alpha = 256;
|
||||
AbstractFont_justificationTotal = 0;
|
||||
AbstractFont_justificationCurrent = 0;
|
||||
AbstractFont_random = new Random();
|
||||
AbstractFont_lines = new String[100];
|
||||
}
|
||||
|
||||
AbstractFont(byte[] var1, int[] var2, int[] var3, int[] var4, int[] var5, int[] var6, byte[][] var7) {
|
||||
this.pixels = new byte[256][];
|
||||
this.ascent = 0;
|
||||
@@ -135,57 +149,57 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
this.advances[var3] = var1[var2++] & 255;
|
||||
}
|
||||
|
||||
int[] var12 = new int[256];
|
||||
int[] var10 = new int[256];
|
||||
int[] var4 = new int[256];
|
||||
|
||||
int var5;
|
||||
for(var5 = 0; var5 < 256; ++var5) {
|
||||
var12[var5] = var1[var2++] & 255;
|
||||
var10[var5] = var1[var2++] & 255;
|
||||
}
|
||||
|
||||
for(var5 = 0; var5 < 256; ++var5) {
|
||||
var4[var5] = var1[var2++] & 255;
|
||||
}
|
||||
|
||||
byte[][] var6 = new byte[256][];
|
||||
byte[][] var11 = new byte[256][];
|
||||
|
||||
int var7;
|
||||
for(int var8 = 0; var8 < 256; ++var8) {
|
||||
var6[var8] = new byte[var12[var8]];
|
||||
byte var9 = 0;
|
||||
int var8;
|
||||
for(int var6 = 0; var6 < 256; ++var6) {
|
||||
var11[var6] = new byte[var10[var6]];
|
||||
byte var7 = 0;
|
||||
|
||||
for(var7 = 0; var7 < var6[var8].length; ++var7) {
|
||||
var9 += var1[var2++];
|
||||
var6[var8][var7] = var9;
|
||||
for(var8 = 0; var8 < var11[var6].length; ++var8) {
|
||||
var7 += var1[var2++];
|
||||
var11[var6][var8] = var7;
|
||||
}
|
||||
}
|
||||
|
||||
byte[][] var13 = new byte[256][];
|
||||
byte[][] var12 = new byte[256][];
|
||||
|
||||
int var14;
|
||||
for(var14 = 0; var14 < 256; ++var14) {
|
||||
var13[var14] = new byte[var12[var14]];
|
||||
byte var10 = 0;
|
||||
int var13;
|
||||
for(var13 = 0; var13 < 256; ++var13) {
|
||||
var12[var13] = new byte[var10[var13]];
|
||||
byte var14 = 0;
|
||||
|
||||
for(int var11 = 0; var11 < var13[var14].length; ++var11) {
|
||||
var10 += var1[var2++];
|
||||
var13[var14][var11] = var10;
|
||||
for(int var9 = 0; var9 < var12[var13].length; ++var9) {
|
||||
var14 += var1[var2++];
|
||||
var12[var13][var9] = var14;
|
||||
}
|
||||
}
|
||||
|
||||
this.kerning = new byte[65536];
|
||||
|
||||
for(var14 = 0; var14 < 256; ++var14) {
|
||||
if(var14 != 32 && var14 != 160) {
|
||||
for(var7 = 0; var7 < 256; ++var7) {
|
||||
if(var7 != 32 && var7 != 160) {
|
||||
this.kerning[var7 + (var14 << 8)] = (byte)method5658(var6, var13, var4, this.advances, var12, var14, var7);
|
||||
for(var13 = 0; var13 < 256; ++var13) {
|
||||
if(var13 != 32 && var13 != 160) {
|
||||
for(var8 = 0; var8 < 256; ++var8) {
|
||||
if(var8 != 32 && var8 != 160) {
|
||||
this.kerning[var8 + (var13 << 8)] = (byte)method5658(var11, var12, var4, this.advances, var10, var13, var8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.ascent = var4[32] + var12[32];
|
||||
this.ascent = var4[32] + var10[32];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -227,7 +241,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
int var8 = MouseHandler.method1085(var7.substring(4));
|
||||
var4 += AbstractFont_modIconSprites[var8].width;
|
||||
var3 = -1;
|
||||
} catch (Exception var9) {
|
||||
} catch (Exception var10) {
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -311,7 +325,7 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
int var17 = MouseHandler.method1085(var16.substring(4));
|
||||
var4 += AbstractFont_modIconSprites[var17].width;
|
||||
var11 = 0;
|
||||
} catch (Exception var18) {
|
||||
} catch (Exception var20) {
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -392,7 +406,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2, var3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("y")
|
||||
@@ -403,7 +416,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
AbstractFont_alpha = var6;
|
||||
this.draw0(var1, var2, var3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("h")
|
||||
@@ -413,7 +425,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2 - this.stringWidth(var1), var3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("b")
|
||||
@@ -423,7 +434,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
this.reset(var4, var5);
|
||||
this.draw0(var1, var2 - this.stringWidth(var1) / 2, var3);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("c")
|
||||
@@ -500,7 +510,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var7);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("v")
|
||||
@@ -518,7 +527,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, var7, var8);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("ag")
|
||||
@@ -539,7 +547,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("aq")
|
||||
@@ -561,7 +568,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
|
||||
this.drawWithOffsets0(var1, var2, var3, var7, (int[])null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("aj")
|
||||
@@ -649,26 +655,26 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if(var7 == '<') {
|
||||
var4 = var6;
|
||||
} else {
|
||||
int var8;
|
||||
int var9;
|
||||
if(var7 == '>' && var4 != -1) {
|
||||
String var9 = var1.substring(var4 + 1, var6);
|
||||
String var8 = var1.substring(var4 + 1, var6);
|
||||
var4 = -1;
|
||||
if(var9.equals("lt")) {
|
||||
if(var8.equals("lt")) {
|
||||
var7 = '<';
|
||||
} else {
|
||||
if(!var9.equals("gt")) {
|
||||
if(var9.startsWith("img=")) {
|
||||
if(!var8.equals("gt")) {
|
||||
if(var8.startsWith("img=")) {
|
||||
try {
|
||||
var8 = MouseHandler.method1085(var9.substring(4));
|
||||
IndexedSprite var13 = AbstractFont_modIconSprites[var8];
|
||||
var13.__q_496(var2, var3 + this.ascent - var13.height);
|
||||
var2 += var13.width;
|
||||
var9 = MouseHandler.method1085(var8.substring(4));
|
||||
IndexedSprite var10 = AbstractFont_modIconSprites[var9];
|
||||
var10.__q_496(var2, var3 + this.ascent - var10.height);
|
||||
var2 += var10.width;
|
||||
var5 = -1;
|
||||
} catch (Exception var11) {
|
||||
} catch (Exception var14) {
|
||||
;
|
||||
}
|
||||
} else {
|
||||
this.decodeTag(var9);
|
||||
this.decodeTag(var8);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -687,20 +693,20 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
}
|
||||
|
||||
int var12 = this.widths[var7];
|
||||
var8 = this.heights[var7];
|
||||
var9 = this.heights[var7];
|
||||
if(var7 != ' ') {
|
||||
if(AbstractFont_alpha == 256) {
|
||||
if(AbstractFont_shadow != -1) {
|
||||
AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow);
|
||||
AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow);
|
||||
}
|
||||
|
||||
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color);
|
||||
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color);
|
||||
} else {
|
||||
if(AbstractFont_shadow != -1) {
|
||||
AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow, AbstractFont_alpha);
|
||||
AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow, AbstractFont_alpha);
|
||||
}
|
||||
|
||||
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color, AbstractFont_alpha);
|
||||
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color, AbstractFont_alpha);
|
||||
}
|
||||
} else if(AbstractFont_justificationTotal > 0) {
|
||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||
@@ -708,16 +714,16 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
AbstractFont_justificationCurrent &= 255;
|
||||
}
|
||||
|
||||
int var10 = this.advances[var7];
|
||||
int var13 = this.advances[var7];
|
||||
if(AbstractFont_strike != -1) {
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var10, AbstractFont_strike);
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var13, AbstractFont_strike);
|
||||
}
|
||||
|
||||
if(AbstractFont_underline != -1) {
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var10, AbstractFont_underline);
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var13, AbstractFont_underline);
|
||||
}
|
||||
|
||||
var2 += var10;
|
||||
var2 += var13;
|
||||
var5 = var7;
|
||||
}
|
||||
}
|
||||
@@ -740,41 +746,41 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if(var10 == '<') {
|
||||
var6 = var9;
|
||||
} else {
|
||||
int var11;
|
||||
int var12;
|
||||
int var13;
|
||||
int var14;
|
||||
if(var10 == '>' && var6 != -1) {
|
||||
String var14 = var1.substring(var6 + 1, var9);
|
||||
String var11 = var1.substring(var6 + 1, var9);
|
||||
var6 = -1;
|
||||
if(var14.equals("lt")) {
|
||||
if(var11.equals("lt")) {
|
||||
var10 = '<';
|
||||
} else {
|
||||
if(!var14.equals("gt")) {
|
||||
if(var14.startsWith("img=")) {
|
||||
if(!var11.equals("gt")) {
|
||||
if(var11.startsWith("img=")) {
|
||||
try {
|
||||
if(var4 != null) {
|
||||
var11 = var4[var8];
|
||||
} else {
|
||||
var11 = 0;
|
||||
}
|
||||
|
||||
if(var5 != null) {
|
||||
var12 = var5[var8];
|
||||
var12 = var4[var8];
|
||||
} else {
|
||||
var12 = 0;
|
||||
}
|
||||
|
||||
if(var5 != null) {
|
||||
var13 = var5[var8];
|
||||
} else {
|
||||
var13 = 0;
|
||||
}
|
||||
|
||||
++var8;
|
||||
var13 = MouseHandler.method1085(var14.substring(4));
|
||||
IndexedSprite var18 = AbstractFont_modIconSprites[var13];
|
||||
var18.__q_496(var11 + var2, var12 + (var3 + this.ascent - var18.height));
|
||||
var2 += var18.width;
|
||||
var14 = MouseHandler.method1085(var11.substring(4));
|
||||
IndexedSprite var15 = AbstractFont_modIconSprites[var14];
|
||||
var15.__q_496(var12 + var2, var13 + (var3 + this.ascent - var15.height));
|
||||
var2 += var15.width;
|
||||
var7 = -1;
|
||||
} catch (Exception var16) {
|
||||
} catch (Exception var19) {
|
||||
;
|
||||
}
|
||||
} else {
|
||||
this.decodeTag(var14);
|
||||
this.decodeTag(var11);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -793,33 +799,33 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
}
|
||||
|
||||
int var17 = this.widths[var10];
|
||||
var11 = this.heights[var10];
|
||||
var12 = this.heights[var10];
|
||||
if(var4 != null) {
|
||||
var12 = var4[var8];
|
||||
var13 = var4[var8];
|
||||
} else {
|
||||
var12 = 0;
|
||||
var13 = 0;
|
||||
}
|
||||
|
||||
if(var5 != null) {
|
||||
var13 = var5[var8];
|
||||
var14 = var5[var8];
|
||||
} else {
|
||||
var13 = 0;
|
||||
var14 = 0;
|
||||
}
|
||||
|
||||
++var8;
|
||||
if(var10 != ' ') {
|
||||
if(AbstractFont_alpha == 256) {
|
||||
if(AbstractFont_shadow != -1) {
|
||||
AbstractFont_drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow);
|
||||
AbstractFont_drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow);
|
||||
}
|
||||
|
||||
this.drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color);
|
||||
this.drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color);
|
||||
} else {
|
||||
if(AbstractFont_shadow != -1) {
|
||||
AbstractFont_drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow, AbstractFont_alpha);
|
||||
AbstractFont_drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow, AbstractFont_alpha);
|
||||
}
|
||||
|
||||
this.drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color, AbstractFont_alpha);
|
||||
this.drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color, AbstractFont_alpha);
|
||||
}
|
||||
} else if(AbstractFont_justificationTotal > 0) {
|
||||
AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
|
||||
@@ -827,16 +833,16 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
AbstractFont_justificationCurrent &= 255;
|
||||
}
|
||||
|
||||
int var15 = this.advances[var10];
|
||||
int var18 = this.advances[var10];
|
||||
if(AbstractFont_strike != -1) {
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var15, AbstractFont_strike);
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var18, AbstractFont_strike);
|
||||
}
|
||||
|
||||
if(AbstractFont_underline != -1) {
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var15, AbstractFont_underline);
|
||||
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var18, AbstractFont_underline);
|
||||
}
|
||||
|
||||
var2 += var15;
|
||||
var2 += var18;
|
||||
var7 = var10;
|
||||
}
|
||||
}
|
||||
@@ -950,7 +956,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if(var3 > 0 && var4 > 0) {
|
||||
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("ak")
|
||||
@@ -1041,7 +1046,6 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
if(var3 > 0 && var4 > 0) {
|
||||
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("al")
|
||||
@@ -1065,18 +1069,4 @@ public abstract class AbstractFont extends Rasterizer2D {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
AbstractFont_strike = -1;
|
||||
AbstractFont_underline = -1;
|
||||
AbstractFont_previousShadow = -1;
|
||||
AbstractFont_shadow = -1;
|
||||
AbstractFont_previousColor = 0;
|
||||
AbstractFont_color = 0;
|
||||
AbstractFont_alpha = 256;
|
||||
AbstractFont_justificationTotal = 0;
|
||||
AbstractFont_justificationCurrent = 0;
|
||||
AbstractFont_random = new Random();
|
||||
AbstractFont_lines = new String[100];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +99,11 @@ public abstract class AbstractIndexCache {
|
||||
@Export("shallowRecords")
|
||||
boolean shallowRecords;
|
||||
|
||||
static {
|
||||
gzipDecompressor = new GzipDecompressor();
|
||||
__ir_s = 0;
|
||||
}
|
||||
|
||||
AbstractIndexCache(boolean var1, boolean var2) {
|
||||
this.releaseArchives = var1;
|
||||
this.shallowRecords = var2;
|
||||
@@ -544,63 +549,63 @@ public abstract class AbstractIndexCache {
|
||||
var8.xteaDecrypt(var2, 5, var8.array.length);
|
||||
}
|
||||
|
||||
byte[] var19 = Strings.decompressBytes(var18);
|
||||
byte[] var20 = Strings.decompressBytes(var18);
|
||||
if(this.releaseArchives) {
|
||||
this.archives[var1] = null;
|
||||
}
|
||||
|
||||
if(var3 > 1) {
|
||||
int var9 = var19.length;
|
||||
int var9 = var20.length;
|
||||
--var9;
|
||||
int var10 = var19[var9] & 255;
|
||||
int var10 = var20[var9] & 255;
|
||||
var9 -= var10 * var3 * 4;
|
||||
Buffer var11 = new Buffer(var19);
|
||||
Buffer var11 = new Buffer(var20);
|
||||
int[] var12 = new int[var3];
|
||||
var11.index = var9;
|
||||
|
||||
int var13;
|
||||
int var14;
|
||||
for(int var15 = 0; var15 < var10; ++var15) {
|
||||
var13 = 0;
|
||||
int var15;
|
||||
for(int var13 = 0; var13 < var10; ++var13) {
|
||||
var14 = 0;
|
||||
|
||||
for(var14 = 0; var14 < var3; ++var14) {
|
||||
var13 += var11.readInt();
|
||||
var12[var14] += var13;
|
||||
for(var15 = 0; var15 < var3; ++var15) {
|
||||
var14 += var11.readInt();
|
||||
var12[var15] += var14;
|
||||
}
|
||||
}
|
||||
|
||||
byte[][] var20 = new byte[var3][];
|
||||
byte[][] var19 = new byte[var3][];
|
||||
|
||||
for(var13 = 0; var13 < var3; ++var13) {
|
||||
var20[var13] = new byte[var12[var13]];
|
||||
var12[var13] = 0;
|
||||
for(var14 = 0; var14 < var3; ++var14) {
|
||||
var19[var14] = new byte[var12[var14]];
|
||||
var12[var14] = 0;
|
||||
}
|
||||
|
||||
var11.index = var9;
|
||||
var13 = 0;
|
||||
var14 = 0;
|
||||
|
||||
for(var14 = 0; var14 < var10; ++var14) {
|
||||
for(var15 = 0; var15 < var10; ++var15) {
|
||||
int var16 = 0;
|
||||
|
||||
for(int var17 = 0; var17 < var3; ++var17) {
|
||||
var16 += var11.readInt();
|
||||
System.arraycopy(var19, var13, var20[var17], var12[var17], var16);
|
||||
System.arraycopy(var20, var14, var19[var17], var12[var17], var16);
|
||||
var12[var17] += var16;
|
||||
var13 += var16;
|
||||
var14 += var16;
|
||||
}
|
||||
}
|
||||
|
||||
for(var14 = 0; var14 < var3; ++var14) {
|
||||
for(var15 = 0; var15 < var3; ++var15) {
|
||||
if(!this.shallowRecords) {
|
||||
var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false);
|
||||
var5[var4[var15]] = Projectile.byteArrayToObject(var19[var15], false);
|
||||
} else {
|
||||
var5[var4[var14]] = var20[var14];
|
||||
var5[var4[var15]] = var19[var15];
|
||||
}
|
||||
}
|
||||
} else if(!this.shallowRecords) {
|
||||
var5[var4[0]] = Projectile.byteArrayToObject(var19, false);
|
||||
var5[var4[0]] = Projectile.byteArrayToObject(var20, false);
|
||||
} else {
|
||||
var5[var4[0]] = var19;
|
||||
var5[var4[0]] = var20;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -700,7 +705,6 @@ public abstract class AbstractIndexCache {
|
||||
if(var2 >= 0) {
|
||||
this.__f_392(var2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("ac")
|
||||
@@ -776,9 +780,4 @@ public abstract class AbstractIndexCache {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
gzipDecompressor = new GzipDecompressor();
|
||||
__ir_s = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,11 +115,10 @@ public abstract class AbstractWorldMapIcon {
|
||||
int var5 = this.__w_18();
|
||||
switch(var3.field3287.field3528) {
|
||||
case 0:
|
||||
if(var1 >= this.__e - var4 / 2 && var1 <= var4 / 2 + this.__e) {
|
||||
break;
|
||||
if(var1 < this.__e - var4 / 2 || var1 > var4 / 2 + this.__e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
break;
|
||||
case 1:
|
||||
if(var1 >= this.__e && var1 < var4 + this.__e) {
|
||||
break;
|
||||
|
||||
@@ -480,7 +480,6 @@ public abstract class Actor extends Entity {
|
||||
this.hitSplatValues2[var9] = var4;
|
||||
this.hitSplatCycles[var9] = var5 + var11 + var6;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("bq")
|
||||
@@ -490,36 +489,36 @@ public abstract class Actor extends Entity {
|
||||
)
|
||||
@Export("addHealthBar")
|
||||
final void addHealthBar(int var1, int var2, int var3, int var4, int var5, int var6) {
|
||||
HealthBarDefinition var7 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1);
|
||||
HealthBarDefinition var8;
|
||||
if(var7 != null) {
|
||||
var8 = var7;
|
||||
HealthBarDefinition var8 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1);
|
||||
HealthBarDefinition var7;
|
||||
if(var8 != null) {
|
||||
var7 = var8;
|
||||
} else {
|
||||
byte[] var9 = HealthBarDefinition.__ii_m.takeRecord(33, var1);
|
||||
var7 = new HealthBarDefinition();
|
||||
var8 = new HealthBarDefinition();
|
||||
if(var9 != null) {
|
||||
var7.read(new Buffer(var9));
|
||||
var8.read(new Buffer(var9));
|
||||
}
|
||||
|
||||
HealthBarDefinition.HealthBarDefinition_cached.put(var7, (long)var1);
|
||||
var8 = var7;
|
||||
HealthBarDefinition.HealthBarDefinition_cached.put(var8, (long)var1);
|
||||
var7 = var8;
|
||||
}
|
||||
|
||||
var7 = var8;
|
||||
var8 = var7;
|
||||
HealthBar var14 = null;
|
||||
HealthBar var10 = null;
|
||||
int var11 = var8.int2;
|
||||
int var11 = var7.int2;
|
||||
int var12 = 0;
|
||||
|
||||
HealthBar var13;
|
||||
for(var13 = (HealthBar)this.healthBars.last(); var13 != null; var13 = (HealthBar)this.healthBars.previous()) {
|
||||
++var12;
|
||||
if(var13.definition.__o == var7.__o) {
|
||||
if(var13.definition.__o == var8.__o) {
|
||||
var13.put(var2 + var4, var5, var6, var3);
|
||||
return;
|
||||
}
|
||||
|
||||
if(var13.definition.int1 <= var7.int1) {
|
||||
if(var13.definition.int1 <= var8.int1) {
|
||||
var14 = var13;
|
||||
}
|
||||
|
||||
@@ -530,7 +529,7 @@ public abstract class Actor extends Entity {
|
||||
}
|
||||
|
||||
if(var10 != null || var12 < 4) {
|
||||
var13 = new HealthBar(var7);
|
||||
var13 = new HealthBar(var8);
|
||||
if(var14 == null) {
|
||||
this.healthBars.addLast(var13);
|
||||
} else {
|
||||
@@ -541,8 +540,8 @@ public abstract class Actor extends Entity {
|
||||
if(var12 >= 4) {
|
||||
var10.remove();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ObfuscatedName("bn")
|
||||
@@ -552,25 +551,25 @@ public abstract class Actor extends Entity {
|
||||
)
|
||||
@Export("removeHealthBar")
|
||||
final void removeHealthBar(int var1) {
|
||||
HealthBarDefinition var2 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1);
|
||||
HealthBarDefinition var3;
|
||||
if(var2 != null) {
|
||||
var3 = var2;
|
||||
HealthBarDefinition var3 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1);
|
||||
HealthBarDefinition var2;
|
||||
if(var3 != null) {
|
||||
var2 = var3;
|
||||
} else {
|
||||
byte[] var4 = HealthBarDefinition.__ii_m.takeRecord(33, var1);
|
||||
var2 = new HealthBarDefinition();
|
||||
var3 = new HealthBarDefinition();
|
||||
if(var4 != null) {
|
||||
var2.read(new Buffer(var4));
|
||||
var3.read(new Buffer(var4));
|
||||
}
|
||||
|
||||
HealthBarDefinition.HealthBarDefinition_cached.put(var2, (long)var1);
|
||||
var3 = var2;
|
||||
HealthBarDefinition.HealthBarDefinition_cached.put(var3, (long)var1);
|
||||
var2 = var3;
|
||||
}
|
||||
|
||||
var2 = var3;
|
||||
var3 = var2;
|
||||
|
||||
for(HealthBar var5 = (HealthBar)this.healthBars.last(); var5 != null; var5 = (HealthBar)this.healthBars.previous()) {
|
||||
if(var2 == var5.definition) {
|
||||
if(var3 == var5.definition) {
|
||||
var5.remove();
|
||||
return;
|
||||
}
|
||||
@@ -675,10 +674,10 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var8);
|
||||
} else {
|
||||
PacketBufferNode var9;
|
||||
NPC var10;
|
||||
Npc var13;
|
||||
if(var2 == 7) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -694,8 +693,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 8) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -710,8 +709,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 9) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -724,8 +723,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 10) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -738,8 +737,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 11) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -752,8 +751,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 12) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -766,8 +765,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 13) {
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -780,10 +779,10 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else {
|
||||
Player var11;
|
||||
Player var15;
|
||||
if(var2 == 14) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -799,8 +798,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 15) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -917,36 +916,36 @@ public abstract class Actor extends Entity {
|
||||
class65.scene.menuOpen(SoundSystem.plane, var0, var1, true);
|
||||
}
|
||||
} else {
|
||||
PacketBufferNode var12;
|
||||
Widget var13;
|
||||
PacketBufferNode var10;
|
||||
Widget var16;
|
||||
if(var2 == 24) {
|
||||
var13 = Huffman.getWidget(var1);
|
||||
boolean var14 = true;
|
||||
if(var13.contentType > 0) {
|
||||
var14 = ViewportMouse.method2957(var13);
|
||||
var16 = Huffman.getWidget(var1);
|
||||
boolean var12 = true;
|
||||
if(var16.contentType > 0) {
|
||||
var12 = ViewportMouse.method2957(var16);
|
||||
}
|
||||
|
||||
if(var14) {
|
||||
var12 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher);
|
||||
var12.packetBuffer.writeInt(var1);
|
||||
Client.packetWriter.__q_167(var12);
|
||||
if(var12) {
|
||||
var10 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher);
|
||||
var10.packetBuffer.writeInt(var1);
|
||||
Client.packetWriter.__q_167(var10);
|
||||
}
|
||||
} else {
|
||||
if(var2 == 25) {
|
||||
var13 = class204.getWidgetChild(var1, var0);
|
||||
if(var13 != null) {
|
||||
var16 = class204.getWidgetChild(var1, var0);
|
||||
if(var16 != null) {
|
||||
Player.method1281();
|
||||
class25.method350(var1, var0, class211.method4107(class1.getWidgetClickMask(var13)), var13.itemId);
|
||||
class25.method350(var1, var0, class211.method4107(class1.getWidgetClickMask(var16)), var16.itemId);
|
||||
Client.isItemSelected = 0;
|
||||
Client.selectedSpellActionName = class198.method3745(var13);
|
||||
Client.selectedSpellActionName = class198.method3745(var16);
|
||||
if(Client.selectedSpellActionName == null) {
|
||||
Client.selectedSpellActionName = "null";
|
||||
}
|
||||
|
||||
if(var13.isIf3) {
|
||||
Client.selectedSpellName = var13.dataText + BufferedFile.colorStartTag(16777215);
|
||||
if(var16.isIf3) {
|
||||
Client.selectedSpellName = var16.dataText + BufferedFile.colorStartTag(16777215);
|
||||
} else {
|
||||
Client.selectedSpellName = BufferedFile.colorStartTag(65280) + var13.spellName + BufferedFile.colorStartTag(16777215);
|
||||
Client.selectedSpellName = BufferedFile.colorStartTag(65280) + var16.spellName + BufferedFile.colorStartTag(16777215);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -956,28 +955,28 @@ public abstract class Actor extends Entity {
|
||||
if(var2 == 26) {
|
||||
WorldMapLabelSize.method198();
|
||||
} else {
|
||||
Widget var15;
|
||||
int var17;
|
||||
int var11;
|
||||
Widget var14;
|
||||
if(var2 == 28) {
|
||||
var8 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher);
|
||||
var8.packetBuffer.writeInt(var1);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
var15 = Huffman.getWidget(var1);
|
||||
if(var15.cs1Instructions != null && var15.cs1Instructions[0][0] == 5) {
|
||||
var17 = var15.cs1Instructions[0][1];
|
||||
Varps.Varps_main[var17] = 1 - Varps.Varps_main[var17];
|
||||
IndexCache.method4703(var17);
|
||||
var14 = Huffman.getWidget(var1);
|
||||
if(var14.cs1Instructions != null && var14.cs1Instructions[0][0] == 5) {
|
||||
var11 = var14.cs1Instructions[0][1];
|
||||
Varps.Varps_main[var11] = 1 - Varps.Varps_main[var11];
|
||||
IndexCache.method4703(var11);
|
||||
}
|
||||
} else if(var2 == 29) {
|
||||
var8 = Interpreter.method1915(ClientPacket.__gs_bz, Client.packetWriter.isaacCipher);
|
||||
var8.packetBuffer.writeInt(var1);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
var15 = Huffman.getWidget(var1);
|
||||
if(var15.cs1Instructions != null && var15.cs1Instructions[0][0] == 5) {
|
||||
var17 = var15.cs1Instructions[0][1];
|
||||
if(Varps.Varps_main[var17] != var15.cs1ComparisonValues[0]) {
|
||||
Varps.Varps_main[var17] = var15.cs1ComparisonValues[0];
|
||||
IndexCache.method4703(var17);
|
||||
var14 = Huffman.getWidget(var1);
|
||||
if(var14.cs1Instructions != null && var14.cs1Instructions[0][0] == 5) {
|
||||
var11 = var14.cs1Instructions[0][1];
|
||||
if(Varps.Varps_main[var11] != var14.cs1ComparisonValues[0]) {
|
||||
Varps.Varps_main[var11] = var14.cs1ComparisonValues[0];
|
||||
IndexCache.method4703(var11);
|
||||
}
|
||||
}
|
||||
} else if(var2 == 30) {
|
||||
@@ -1057,12 +1056,12 @@ public abstract class Actor extends Entity {
|
||||
} else {
|
||||
if(var2 == 38) {
|
||||
Player.method1281();
|
||||
var13 = Huffman.getWidget(var1);
|
||||
var16 = Huffman.getWidget(var1);
|
||||
Client.isItemSelected = 1;
|
||||
HealthBarDefinition.selectedItemSlot = var0;
|
||||
ServerPacket.selectedItemWidget = var1;
|
||||
MenuAction.selectedItemId = var3;
|
||||
class22.method295(var13);
|
||||
class22.method295(var16);
|
||||
Client.selectedItemName = BufferedFile.colorStartTag(16748608) + Skills.getItemDefinition(var3).name + BufferedFile.colorStartTag(16777215);
|
||||
if(Client.selectedItemName == null) {
|
||||
Client.selectedItemName = "null";
|
||||
@@ -1117,8 +1116,8 @@ public abstract class Actor extends Entity {
|
||||
BoundaryObject.__ej_jv = Huffman.getWidget(var1);
|
||||
Client.__client_jz = var0;
|
||||
} else if(var2 == 44) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1131,8 +1130,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 45) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1145,8 +1144,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 46) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1159,8 +1158,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 47) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1173,8 +1172,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 48) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1187,8 +1186,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 49) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1201,8 +1200,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 50) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1215,8 +1214,8 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else if(var2 == 51) {
|
||||
var11 = Client.players[var3];
|
||||
if(var11 != null) {
|
||||
var15 = Client.players[var3];
|
||||
if(var15 != null) {
|
||||
Client.mouseCrossX = var6;
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
@@ -1229,21 +1228,21 @@ public abstract class Actor extends Entity {
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
} else {
|
||||
label415: {
|
||||
label921: {
|
||||
if(var2 != 57) {
|
||||
if(var2 == 58) {
|
||||
var13 = class204.getWidgetChild(var1, var0);
|
||||
if(var13 != null) {
|
||||
var16 = class204.getWidgetChild(var1, var0);
|
||||
if(var16 != null) {
|
||||
var9 = Interpreter.method1915(ClientPacket.__gs_cs, Client.packetWriter.isaacCipher);
|
||||
var9.packetBuffer.writeShortLE(Client.__client_lc);
|
||||
var9.packetBuffer.writeIntLE16(var1);
|
||||
var9.packetBuffer.writeShortLE(Client.__client_mh);
|
||||
var9.packetBuffer.__bx_323(var0);
|
||||
var9.packetBuffer.writeInt(ServerBuild.__iy_lo);
|
||||
var9.packetBuffer.__bx_323(var13.itemId);
|
||||
var9.packetBuffer.__bx_323(var16.itemId);
|
||||
Client.packetWriter.__q_167(var9);
|
||||
}
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 == 1001) {
|
||||
@@ -1259,7 +1258,7 @@ public abstract class Actor extends Entity {
|
||||
var8.packetBuffer.__bo_322(var0 + class50.baseX);
|
||||
var8.packetBuffer.__bx_323(GraphicsObject.baseY + var1);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 == 1002) {
|
||||
@@ -1270,7 +1269,7 @@ public abstract class Actor extends Entity {
|
||||
var8 = Interpreter.method1915(ClientPacket.__gs_al, Client.packetWriter.isaacCipher);
|
||||
var8.packetBuffer.__bo_322(var3);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 == 1003) {
|
||||
@@ -1278,20 +1277,20 @@ public abstract class Actor extends Entity {
|
||||
Client.mouseCrossY = var7;
|
||||
Client.mouseCrossColor = 2;
|
||||
Client.mouseCrossState = 0;
|
||||
var10 = Client.npcs[var3];
|
||||
if(var10 != null) {
|
||||
NPCDefinition var16 = var10.definition;
|
||||
if(var16.transforms != null) {
|
||||
var16 = var16.transform();
|
||||
var13 = Client.npcs[var3];
|
||||
if(var13 != null) {
|
||||
NpcDefinition var17 = var13.definition;
|
||||
if(var17.transforms != null) {
|
||||
var17 = var17.transform();
|
||||
}
|
||||
|
||||
if(var16 != null) {
|
||||
var12 = Interpreter.method1915(ClientPacket.__gs_ar, Client.packetWriter.isaacCipher);
|
||||
var12.packetBuffer.__bo_322(var16.id);
|
||||
Client.packetWriter.__q_167(var12);
|
||||
if(var17 != null) {
|
||||
var10 = Interpreter.method1915(ClientPacket.__gs_ar, Client.packetWriter.isaacCipher);
|
||||
var10.packetBuffer.__bo_322(var17.id);
|
||||
Client.packetWriter.__q_167(var10);
|
||||
}
|
||||
}
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 == 1004) {
|
||||
@@ -1302,13 +1301,13 @@ public abstract class Actor extends Entity {
|
||||
var8 = Interpreter.method1915(ClientPacket.__gs_p, Client.packetWriter.isaacCipher);
|
||||
var8.packetBuffer.writeShortLE(var3);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 == 1005) {
|
||||
var13 = Huffman.getWidget(var1);
|
||||
if(var13 != null && var13.itemQuantities[var0] >= 100000) {
|
||||
WorldMapIcon1.method219(27, "", var13.itemQuantities[var0] + " x " + Skills.getItemDefinition(var3).name);
|
||||
var16 = Huffman.getWidget(var1);
|
||||
if(var16 != null && var16.itemQuantities[var0] >= 100000) {
|
||||
WorldMapIcon1.method219(27, "", var16.itemQuantities[var0] + " x " + Skills.getItemDefinition(var3).name);
|
||||
} else {
|
||||
var9 = Interpreter.method1915(ClientPacket.__gs_p, Client.packetWriter.isaacCipher);
|
||||
var9.packetBuffer.writeShortLE(var3);
|
||||
@@ -1318,20 +1317,20 @@ public abstract class Actor extends Entity {
|
||||
Client.__client_ju = 0;
|
||||
BoundaryObject.__ej_jv = Huffman.getWidget(var1);
|
||||
Client.__client_jz = var0;
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
|
||||
if(var2 != 1007) {
|
||||
if(var2 == 1008 || var2 == 1011 || var2 == 1010 || var2 == 1009 || var2 == 1012) {
|
||||
class60.worldMap0.menuAction(var2, var3, new TileLocation(var0), new TileLocation(var1));
|
||||
}
|
||||
break label415;
|
||||
break label921;
|
||||
}
|
||||
}
|
||||
|
||||
var13 = class204.getWidgetChild(var1, var0);
|
||||
if(var13 != null) {
|
||||
class171.method3494(var3, var1, var0, var13.itemId, var5);
|
||||
var16 = class204.getWidgetChild(var1, var0);
|
||||
if(var16 != null) {
|
||||
class171.method3494(var3, var1, var0, var16.itemId, var5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,13 @@ public class Animation {
|
||||
@Export("hasAlphaTransform")
|
||||
boolean hasAlphaTransform;
|
||||
|
||||
static {
|
||||
__dz_m = new int[500];
|
||||
__dz_f = new int[500];
|
||||
__dz_q = new int[500];
|
||||
__dz_w = new int[500];
|
||||
}
|
||||
|
||||
@ObfuscatedSignature(
|
||||
signature = "([BLek;)V"
|
||||
)
|
||||
@@ -126,11 +133,4 @@ public class Animation {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
__dz_m = new int[500];
|
||||
__dz_f = new int[500];
|
||||
__dz_q = new int[500];
|
||||
__dz_w = new int[500];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ public enum AttackOption implements Enumerated {
|
||||
)
|
||||
@Export("AttackOption_hidden")
|
||||
AttackOption_hidden(3);
|
||||
|
||||
@ObfuscatedName("sp")
|
||||
@Export("__cj_sp")
|
||||
static short[] __cj_sp;
|
||||
@@ -53,7 +52,7 @@ public enum AttackOption implements Enumerated {
|
||||
@Export("id")
|
||||
final int id;
|
||||
|
||||
private AttackOption(int var3) {
|
||||
AttackOption(int var3) {
|
||||
this.id = var3;
|
||||
}
|
||||
|
||||
@@ -102,45 +101,45 @@ public enum AttackOption implements Enumerated {
|
||||
char var9;
|
||||
if(var7 != 0) {
|
||||
var9 = (char)var7;
|
||||
boolean var10 = false;
|
||||
boolean var14 = false;
|
||||
} else {
|
||||
var9 = var0.charAt(var5++);
|
||||
}
|
||||
|
||||
char var14;
|
||||
char var10;
|
||||
if(var8 != 0) {
|
||||
var14 = (char)var8;
|
||||
boolean var11 = false;
|
||||
var10 = (char)var8;
|
||||
boolean var15 = false;
|
||||
} else {
|
||||
var14 = var1.charAt(var6++);
|
||||
var10 = var1.charAt(var6++);
|
||||
}
|
||||
|
||||
byte var16;
|
||||
byte var11;
|
||||
if(var9 == 198) {
|
||||
var16 = 69;
|
||||
var11 = 69;
|
||||
} else if(var9 == 230) {
|
||||
var16 = 101;
|
||||
var11 = 101;
|
||||
} else if(var9 == 223) {
|
||||
var16 = 115;
|
||||
var11 = 115;
|
||||
} else if(var9 == 338) {
|
||||
var16 = 69;
|
||||
var11 = 69;
|
||||
} else if(var9 == 339) {
|
||||
var16 = 101;
|
||||
var11 = 101;
|
||||
} else {
|
||||
var16 = 0;
|
||||
var11 = 0;
|
||||
}
|
||||
|
||||
var7 = var16;
|
||||
var7 = var11;
|
||||
byte var12;
|
||||
if(var14 == 198) {
|
||||
if(var10 == 198) {
|
||||
var12 = 69;
|
||||
} else if(var14 == 230) {
|
||||
} else if(var10 == 230) {
|
||||
var12 = 101;
|
||||
} else if(var14 == 223) {
|
||||
} else if(var10 == 223) {
|
||||
var12 = 115;
|
||||
} else if(var14 == 338) {
|
||||
} else if(var10 == 338) {
|
||||
var12 = 69;
|
||||
} else if(var14 == 339) {
|
||||
} else if(var10 == 339) {
|
||||
var12 = 101;
|
||||
} else {
|
||||
var12 = 0;
|
||||
@@ -148,28 +147,28 @@ public enum AttackOption implements Enumerated {
|
||||
|
||||
var8 = var12;
|
||||
var9 = class12.method155(var9, var2);
|
||||
var14 = class12.method155(var14, var2);
|
||||
if(var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) {
|
||||
var10 = class12.method155(var10, var2);
|
||||
if(var9 != var10 && Character.toUpperCase(var9) != Character.toUpperCase(var10)) {
|
||||
var9 = Character.toLowerCase(var9);
|
||||
var14 = Character.toLowerCase(var14);
|
||||
if(var14 != var9) {
|
||||
return CollisionMap.method3631(var9, var2) - CollisionMap.method3631(var14, var2);
|
||||
var10 = Character.toLowerCase(var10);
|
||||
if(var10 != var9) {
|
||||
return CollisionMap.method3631(var9, var2) - CollisionMap.method3631(var10, var2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int var15 = Math.min(var3, var4);
|
||||
int var16 = Math.min(var3, var4);
|
||||
|
||||
int var17;
|
||||
char var18;
|
||||
for(var17 = 0; var17 < var15; ++var17) {
|
||||
char var19 = var0.charAt(var17);
|
||||
var18 = var1.charAt(var17);
|
||||
if(var18 != var19 && Character.toUpperCase(var19) != Character.toUpperCase(var18)) {
|
||||
var19 = Character.toLowerCase(var19);
|
||||
char var20;
|
||||
for(var17 = 0; var17 < var16; ++var17) {
|
||||
char var18 = var0.charAt(var17);
|
||||
var20 = var1.charAt(var17);
|
||||
if(var20 != var18 && Character.toUpperCase(var18) != Character.toUpperCase(var20)) {
|
||||
var18 = Character.toLowerCase(var18);
|
||||
if(var19 != var18) {
|
||||
return CollisionMap.method3631(var19, var2) - CollisionMap.method3631(var18, var2);
|
||||
var20 = Character.toLowerCase(var20);
|
||||
if(var18 != var20) {
|
||||
return CollisionMap.method3631(var18, var2) - CollisionMap.method3631(var20, var2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,11 +177,11 @@ public enum AttackOption implements Enumerated {
|
||||
if(var17 != 0) {
|
||||
return var17;
|
||||
} else {
|
||||
for(int var20 = 0; var20 < var15; ++var20) {
|
||||
var18 = var0.charAt(var20);
|
||||
char var13 = var1.charAt(var20);
|
||||
if(var18 != var13) {
|
||||
return CollisionMap.method3631(var18, var2) - CollisionMap.method3631(var13, var2);
|
||||
for(int var19 = 0; var19 < var16; ++var19) {
|
||||
var20 = var0.charAt(var19);
|
||||
char var13 = var1.charAt(var19);
|
||||
if(var20 != var13) {
|
||||
return CollisionMap.method3631(var20, var2) - CollisionMap.method3631(var13, var2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +209,7 @@ public enum AttackOption implements Enumerated {
|
||||
if(var1 >= 24) {
|
||||
throw new IOException();
|
||||
}
|
||||
} catch (Exception var3) {
|
||||
} catch (Exception var4) {
|
||||
for(int var2 = 0; var2 < 24; ++var2) {
|
||||
var0[var2] = -1;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,11 @@ public class AudioFilter {
|
||||
@Export("__o")
|
||||
int[] __o;
|
||||
|
||||
static {
|
||||
__di_u = new float[2][8];
|
||||
__di_g = new int[2][8];
|
||||
}
|
||||
|
||||
AudioFilter() {
|
||||
this.__m = new int[2];
|
||||
this.__q = new int[2][2][4];
|
||||
@@ -153,9 +158,4 @@ public class AudioFilter {
|
||||
float var1 = 32.703197F * (float)Math.pow(2.0D, (double)var0);
|
||||
return var1 * 3.1415927F / 11025.0F;
|
||||
}
|
||||
|
||||
static {
|
||||
__di_u = new float[2][8];
|
||||
__di_g = new int[2][8];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,10 +159,10 @@ public class Bounds {
|
||||
int var7 = -var4;
|
||||
|
||||
for(int var8 = 0; var7 <= var4; ++var8) {
|
||||
double var9 = ((double)var7 - var0) / var2;
|
||||
double var11 = Math.exp(-var9 * var9 / 2.0D) / Math.sqrt(6.283185307179586D);
|
||||
double var13 = var11 / var2;
|
||||
var6[var8] = var13;
|
||||
double var15 = ((double)var7 - var0) / var2;
|
||||
double var13 = Math.exp(-var15 * var15 / 2.0D) / Math.sqrt(6.283185307179586D);
|
||||
double var11 = var13 / var2;
|
||||
var6[var8] = var11;
|
||||
++var7;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class Buddy extends User {
|
||||
|
||||
for(var1 = 0; var1 < Client.npcCount; ++var1) {
|
||||
int var4 = Client.npcIndices[var1];
|
||||
NPC var3 = Client.npcs[var4];
|
||||
Npc var3 = Client.npcs[var4];
|
||||
if(var3 != null && var3.overheadTextCyclesRemaining > 0) {
|
||||
--var3.overheadTextCyclesRemaining;
|
||||
if(var3.overheadTextCyclesRemaining == 0) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import java.math.BigInteger;
|
||||
import java.util.logging.Logger;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.Implements;
|
||||
import net.runelite.mapping.ObfuscatedGetter;
|
||||
@@ -25,6 +24,42 @@ public class Buffer extends Node {
|
||||
@Export("index")
|
||||
public int index;
|
||||
|
||||
static {
|
||||
__gr_q = new int[256];
|
||||
|
||||
int var2;
|
||||
for(int var1 = 0; var1 < 256; ++var1) {
|
||||
int var0 = var1;
|
||||
|
||||
for(var2 = 0; var2 < 8; ++var2) {
|
||||
if((var0 & 1) == 1) {
|
||||
var0 = var0 >>> 1 ^ -306674912;
|
||||
} else {
|
||||
var0 >>>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
__gr_q[var1] = var0;
|
||||
}
|
||||
|
||||
__gr_o = new long[256];
|
||||
|
||||
for(var2 = 0; var2 < 256; ++var2) {
|
||||
long var4 = (long)var2;
|
||||
|
||||
for(int var3 = 0; var3 < 8; ++var3) {
|
||||
if((var4 & 1L) == 1L) {
|
||||
var4 = var4 >>> 1 ^ -3932672073523589310L;
|
||||
} else {
|
||||
var4 >>>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
__gr_o[var2] = var4;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Buffer(int var1) {
|
||||
this.array = Canvas.method862(var1);
|
||||
this.index = 0;
|
||||
@@ -169,22 +204,22 @@ public class Buffer extends Node {
|
||||
)
|
||||
@Export("__j_296")
|
||||
public void __j_296(CharSequence var1) {
|
||||
int var2 = var1.length();
|
||||
int var3 = 0;
|
||||
int var3 = var1.length();
|
||||
int var4 = 0;
|
||||
|
||||
for(int var4 = 0; var4 < var2; ++var4) {
|
||||
char var5 = var1.charAt(var4);
|
||||
if(var5 <= 127) {
|
||||
++var3;
|
||||
} else if(var5 <= 2047) {
|
||||
var3 += 2;
|
||||
for(int var5 = 0; var5 < var3; ++var5) {
|
||||
char var6 = var1.charAt(var5);
|
||||
if(var6 <= 127) {
|
||||
++var4;
|
||||
} else if(var6 <= 2047) {
|
||||
var4 += 2;
|
||||
} else {
|
||||
var3 += 3;
|
||||
var4 += 3;
|
||||
}
|
||||
}
|
||||
|
||||
this.array[++this.index - 1] = 0;
|
||||
this.__c_301(var3);
|
||||
this.__c_301(var4);
|
||||
this.index += class16.method190(this.array, this.index, var1);
|
||||
}
|
||||
|
||||
@@ -244,14 +279,11 @@ public class Buffer extends Node {
|
||||
public void writeSmartByteShort(int var1) {
|
||||
if(var1 >= 0 && var1 < 128) {
|
||||
this.writeByte(var1);
|
||||
} else {
|
||||
if(var1 < 0 || var1 >= 32768) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
} else if(var1 >= 0 && var1 < 32768) {
|
||||
this.writeShort(var1 + 32768);
|
||||
} else {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("c")
|
||||
@@ -440,60 +472,60 @@ public class Buffer extends Node {
|
||||
if(var2 + this.index > this.array.length) {
|
||||
throw new IllegalStateException("");
|
||||
} else {
|
||||
byte[] var3 = this.array;
|
||||
int var4 = this.index;
|
||||
char[] var5 = new char[var2];
|
||||
int var6 = 0;
|
||||
int var7 = var4;
|
||||
byte[] var4 = this.array;
|
||||
int var5 = this.index;
|
||||
char[] var6 = new char[var2];
|
||||
int var7 = 0;
|
||||
int var8 = var5;
|
||||
|
||||
int var8;
|
||||
for(int var9 = var4 + var2; var7 < var9; var5[var6++] = (char)var8) {
|
||||
int var10 = var3[var7++] & 255;
|
||||
int var11;
|
||||
for(int var9 = var5 + var2; var8 < var9; var6[var7++] = (char)var11) {
|
||||
int var10 = var4[var8++] & 255;
|
||||
if(var10 < 128) {
|
||||
if(var10 == 0) {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
} else {
|
||||
var8 = var10;
|
||||
var11 = var10;
|
||||
}
|
||||
} else if(var10 < 192) {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
} else if(var10 < 224) {
|
||||
if(var7 < var9 && (var3[var7] & 192) == 128) {
|
||||
var8 = (var10 & 31) << 6 | var3[var7++] & 63;
|
||||
if(var8 < 128) {
|
||||
var8 = 65533;
|
||||
if(var8 < var9 && (var4[var8] & 192) == 128) {
|
||||
var11 = (var10 & 31) << 6 | var4[var8++] & 63;
|
||||
if(var11 < 128) {
|
||||
var11 = 65533;
|
||||
}
|
||||
} else {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
}
|
||||
} else if(var10 < 240) {
|
||||
if(var7 + 1 < var9 && (var3[var7] & 192) == 128 && (var3[var7 + 1] & 192) == 128) {
|
||||
var8 = (var10 & 15) << 12 | (var3[var7++] & 63) << 6 | var3[var7++] & 63;
|
||||
if(var8 < 2048) {
|
||||
var8 = 65533;
|
||||
if(var8 + 1 < var9 && (var4[var8] & 192) == 128 && (var4[var8 + 1] & 192) == 128) {
|
||||
var11 = (var10 & 15) << 12 | (var4[var8++] & 63) << 6 | var4[var8++] & 63;
|
||||
if(var11 < 2048) {
|
||||
var11 = 65533;
|
||||
}
|
||||
} else {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
}
|
||||
} else if(var10 < 248) {
|
||||
if(var7 + 2 < var9 && (var3[var7] & 192) == 128 && (var3[var7 + 1] & 192) == 128 && (var3[var7 + 2] & 192) == 128) {
|
||||
var8 = (var10 & 7) << 18 | (var3[var7++] & 63) << 12 | (var3[var7++] & 63) << 6 | var3[var7++] & 63;
|
||||
if(var8 >= 65536 && var8 <= 1114111) {
|
||||
var8 = 65533;
|
||||
if(var8 + 2 < var9 && (var4[var8] & 192) == 128 && (var4[var8 + 1] & 192) == 128 && (var4[var8 + 2] & 192) == 128) {
|
||||
var11 = (var10 & 7) << 18 | (var4[var8++] & 63) << 12 | (var4[var8++] & 63) << 6 | var4[var8++] & 63;
|
||||
if(var11 >= 65536 && var11 <= 1114111) {
|
||||
var11 = 65533;
|
||||
} else {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
}
|
||||
} else {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
}
|
||||
} else {
|
||||
var8 = 65533;
|
||||
var11 = 65533;
|
||||
}
|
||||
}
|
||||
|
||||
String var11 = new String(var5, 0, var6);
|
||||
String var3 = new String(var6, 0, var7);
|
||||
this.index += var2;
|
||||
return var11;
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -725,7 +757,6 @@ public class Buffer extends Node {
|
||||
byte[] var7 = var6.toByteArray();
|
||||
this.index = 0;
|
||||
this.writeShort(var7.length);
|
||||
Logger.getAnonymousLogger().warning("unsigned short " + var7.length);
|
||||
this.__s_297(var7, 0, var7.length);
|
||||
}
|
||||
|
||||
@@ -736,17 +767,17 @@ public class Buffer extends Node {
|
||||
)
|
||||
@Export("__aa_312")
|
||||
public int __aa_312(int var1) {
|
||||
byte[] var2 = this.array;
|
||||
int var3 = this.index;
|
||||
int var4 = -1;
|
||||
byte[] var3 = this.array;
|
||||
int var4 = this.index;
|
||||
int var5 = -1;
|
||||
|
||||
for(int var5 = var1; var5 < var3; ++var5) {
|
||||
var4 = var4 >>> 8 ^ __gr_q[(var4 ^ var2[var5]) & 255];
|
||||
for(int var6 = var1; var6 < var4; ++var6) {
|
||||
var5 = var5 >>> 8 ^ __gr_q[(var5 ^ var3[var6]) & 255];
|
||||
}
|
||||
|
||||
var4 = ~var4;
|
||||
this.writeInt(var4);
|
||||
return var4;
|
||||
var5 = ~var5;
|
||||
this.writeInt(var5);
|
||||
return var5;
|
||||
}
|
||||
|
||||
@ObfuscatedName("ax")
|
||||
@@ -757,18 +788,18 @@ public class Buffer extends Node {
|
||||
@Export("__ax_313")
|
||||
public boolean __ax_313() {
|
||||
this.index -= 4;
|
||||
byte[] var1 = this.array;
|
||||
int var2 = this.index;
|
||||
int var3 = -1;
|
||||
byte[] var2 = this.array;
|
||||
int var3 = this.index;
|
||||
int var4 = -1;
|
||||
|
||||
int var4;
|
||||
for(var4 = 0; var4 < var2; ++var4) {
|
||||
var3 = var3 >>> 8 ^ __gr_q[(var3 ^ var1[var4]) & 255];
|
||||
int var5;
|
||||
for(var5 = 0; var5 < var3; ++var5) {
|
||||
var4 = var4 >>> 8 ^ __gr_q[(var4 ^ var2[var5]) & 255];
|
||||
}
|
||||
|
||||
var3 = ~var3;
|
||||
var4 = this.readInt();
|
||||
return var4 == var3;
|
||||
var4 = ~var4;
|
||||
var5 = this.readInt();
|
||||
return var5 == var4;
|
||||
}
|
||||
|
||||
@ObfuscatedName("af")
|
||||
@@ -1064,40 +1095,4 @@ public class Buffer extends Node {
|
||||
HealthBarDefinition.HealthBarDefinition_cached.clear();
|
||||
HealthBarDefinition.HealthBarDefinition_cachedSprites.clear();
|
||||
}
|
||||
|
||||
static {
|
||||
__gr_q = new int[256];
|
||||
|
||||
int var0;
|
||||
for(int var1 = 0; var1 < 256; ++var1) {
|
||||
int var2 = var1;
|
||||
|
||||
for(var0 = 0; var0 < 8; ++var0) {
|
||||
if((var2 & 1) == 1) {
|
||||
var2 = var2 >>> 1 ^ -306674912;
|
||||
} else {
|
||||
var2 >>>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
__gr_q[var1] = var2;
|
||||
}
|
||||
|
||||
__gr_o = new long[256];
|
||||
|
||||
for(var0 = 0; var0 < 256; ++var0) {
|
||||
long var4 = (long)var0;
|
||||
|
||||
for(int var3 = 0; var3 < 8; ++var3) {
|
||||
if((var4 & 1L) == 1L) {
|
||||
var4 = var4 >>> 1 ^ -3932672073523589310L;
|
||||
} else {
|
||||
var4 >>>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
__gr_o[var0] = var4;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,86 +145,86 @@ public class BufferedFile {
|
||||
}
|
||||
|
||||
long var4 = this.__l;
|
||||
int var6 = var3;
|
||||
int var7;
|
||||
int var7 = var3;
|
||||
int var8;
|
||||
if(this.__l >= this.__q && this.__l < this.__q + (long)this.__w) {
|
||||
var7 = (int)((long)this.__w - (this.__l - this.__q));
|
||||
if(var7 > var3) {
|
||||
var7 = var3;
|
||||
var8 = (int)((long)this.__w - (this.__l - this.__q));
|
||||
if(var8 > var3) {
|
||||
var8 = var3;
|
||||
}
|
||||
|
||||
System.arraycopy(this.readBuffer, (int)(this.__l - this.__q), var1, var2, var7);
|
||||
this.__l += (long)var7;
|
||||
var2 += var7;
|
||||
var3 -= var7;
|
||||
System.arraycopy(this.readBuffer, (int)(this.__l - this.__q), var1, var2, var8);
|
||||
this.__l += (long)var8;
|
||||
var2 += var8;
|
||||
var3 -= var8;
|
||||
}
|
||||
|
||||
if(var3 > this.readBuffer.length) {
|
||||
this.accessFile.seek(this.__l);
|
||||
|
||||
for(this.__d = this.__l; var3 > 0; var3 -= var7) {
|
||||
var7 = this.accessFile.read(var1, var2, var3);
|
||||
if(var7 == -1) {
|
||||
for(this.__d = this.__l; var3 > 0; var3 -= var8) {
|
||||
var8 = this.accessFile.read(var1, var2, var3);
|
||||
if(var8 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
this.__d += (long)var7;
|
||||
this.__l += (long)var7;
|
||||
var2 += var7;
|
||||
this.__d += (long)var8;
|
||||
this.__l += (long)var8;
|
||||
var2 += var8;
|
||||
}
|
||||
} else if(var3 > 0) {
|
||||
this.load();
|
||||
var7 = var3;
|
||||
var8 = var3;
|
||||
if(var3 > this.__w) {
|
||||
var7 = this.__w;
|
||||
var8 = this.__w;
|
||||
}
|
||||
|
||||
System.arraycopy(this.readBuffer, 0, var1, var2, var7);
|
||||
var2 += var7;
|
||||
var3 -= var7;
|
||||
this.__l += (long)var7;
|
||||
System.arraycopy(this.readBuffer, 0, var1, var2, var8);
|
||||
var2 += var8;
|
||||
var3 -= var8;
|
||||
this.__l += (long)var8;
|
||||
}
|
||||
|
||||
if(-1L != this.__u) {
|
||||
if(this.__u > this.__l && var3 > 0) {
|
||||
var7 = var2 + (int)(this.__u - this.__l);
|
||||
if(var7 > var3 + var2) {
|
||||
var7 = var3 + var2;
|
||||
var8 = var2 + (int)(this.__u - this.__l);
|
||||
if(var8 > var3 + var2) {
|
||||
var8 = var3 + var2;
|
||||
}
|
||||
|
||||
while(var2 < var7) {
|
||||
while(var2 < var8) {
|
||||
var1[var2++] = 0;
|
||||
--var3;
|
||||
++this.__l;
|
||||
}
|
||||
}
|
||||
|
||||
long var8 = -1L;
|
||||
long var13 = -1L;
|
||||
long var10 = -1L;
|
||||
if(this.__u >= var4 && this.__u < var4 + (long)var6) {
|
||||
var8 = this.__u;
|
||||
if(this.__u >= var4 && this.__u < var4 + (long)var7) {
|
||||
var13 = this.__u;
|
||||
} else if(var4 >= this.__u && var4 < this.__u + (long)this.__g) {
|
||||
var8 = var4;
|
||||
var13 = var4;
|
||||
}
|
||||
|
||||
if((long)this.__g + this.__u > var4 && this.__u + (long)this.__g <= var4 + (long)var6) {
|
||||
if((long)this.__g + this.__u > var4 && this.__u + (long)this.__g <= var4 + (long)var7) {
|
||||
var10 = (long)this.__g + this.__u;
|
||||
} else if((long)var6 + var4 > this.__u && (long)var6 + var4 <= this.__u + (long)this.__g) {
|
||||
var10 = (long)var6 + var4;
|
||||
} else if((long)var7 + var4 > this.__u && (long)var7 + var4 <= this.__u + (long)this.__g) {
|
||||
var10 = (long)var7 + var4;
|
||||
}
|
||||
|
||||
if(var8 > -1L && var10 > var8) {
|
||||
int var12 = (int)(var10 - var8);
|
||||
System.arraycopy(this.writeBuffer, (int)(var8 - this.__u), var1, (int)(var8 - var4) + var2, var12);
|
||||
if(var13 > -1L && var10 > var13) {
|
||||
int var12 = (int)(var10 - var13);
|
||||
System.arraycopy(this.writeBuffer, (int)(var13 - this.__u), var1, (int)(var13 - var4) + var2, var12);
|
||||
if(var10 > this.__l) {
|
||||
var3 = (int)((long)var3 - (var10 - this.__l));
|
||||
this.__l = var10;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException var13) {
|
||||
} catch (IOException var16) {
|
||||
this.__d = -1L;
|
||||
throw var13;
|
||||
throw var16;
|
||||
}
|
||||
|
||||
if(var3 > 0) {
|
||||
@@ -294,6 +294,7 @@ public class BufferedFile {
|
||||
if(this.__l - this.__u > (long)this.__g) {
|
||||
this.__g = (int)(this.__l - this.__u);
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
if(this.__d != this.__l) {
|
||||
@@ -307,12 +308,12 @@ public class BufferedFile {
|
||||
this.__e = this.__d;
|
||||
}
|
||||
|
||||
long var10 = -1L;
|
||||
long var9 = -1L;
|
||||
long var6 = -1L;
|
||||
if(this.__l >= this.__q && this.__l < (long)this.__w + this.__q) {
|
||||
var10 = this.__l;
|
||||
var9 = this.__l;
|
||||
} else if(this.__q >= this.__l && this.__q < (long)var3 + this.__l) {
|
||||
var10 = this.__q;
|
||||
var9 = this.__q;
|
||||
}
|
||||
|
||||
if(this.__l + (long)var3 > this.__q && (long)var3 + this.__l <= (long)this.__w + this.__q) {
|
||||
@@ -321,17 +322,16 @@ public class BufferedFile {
|
||||
var6 = (long)this.__w + this.__q;
|
||||
}
|
||||
|
||||
if(var10 > -1L && var6 > var10) {
|
||||
int var8 = (int)(var6 - var10);
|
||||
System.arraycopy(var1, (int)(var10 + (long)var2 - this.__l), this.readBuffer, (int)(var10 - this.__q), var8);
|
||||
if(var9 > -1L && var6 > var9) {
|
||||
int var8 = (int)(var6 - var9);
|
||||
System.arraycopy(var1, (int)(var9 + (long)var2 - this.__l), this.readBuffer, (int)(var9 - this.__q), var8);
|
||||
}
|
||||
|
||||
this.__l += (long)var3;
|
||||
}
|
||||
|
||||
} catch (IOException var9) {
|
||||
} catch (IOException var12) {
|
||||
this.__d = -1L;
|
||||
throw var9;
|
||||
throw var12;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -142,15 +142,10 @@ public class BufferedSink implements Runnable {
|
||||
@Export("run")
|
||||
@ObfuscatedName("run")
|
||||
public void run() {
|
||||
while(true) {
|
||||
synchronized(this){}
|
||||
|
||||
while(true) {
|
||||
boolean var13 = false;
|
||||
|
||||
int var1;
|
||||
try {
|
||||
var13 = true;
|
||||
do {
|
||||
int var1;
|
||||
synchronized(this) {
|
||||
while(true) {
|
||||
if(this.exception != null) {
|
||||
return;
|
||||
}
|
||||
@@ -161,60 +156,50 @@ public class BufferedSink implements Runnable {
|
||||
var1 = this.capacity - this.position + this.limit;
|
||||
}
|
||||
|
||||
if(var1 <= 0) {
|
||||
try {
|
||||
this.outputStream.flush();
|
||||
} catch (IOException var17) {
|
||||
this.exception = var17;
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.isClosed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
this.wait();
|
||||
} catch (InterruptedException var18) {
|
||||
;
|
||||
}
|
||||
continue;
|
||||
if(var1 > 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
var13 = false;
|
||||
} finally {
|
||||
if(var13) {
|
||||
try {
|
||||
this.outputStream.flush();
|
||||
} catch (IOException var11) {
|
||||
this.exception = var11;
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.isClosed()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
this.wait();
|
||||
} catch (InterruptedException var12) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if(var1 + this.position <= this.capacity) {
|
||||
this.outputStream.write(this.buffer, this.position, var1);
|
||||
} else {
|
||||
int var2 = this.capacity - this.position;
|
||||
this.outputStream.write(this.buffer, this.position, var2);
|
||||
this.outputStream.write(this.buffer, 0, var1 - var2);
|
||||
}
|
||||
} catch (IOException var16) {
|
||||
IOException var3 = var16;
|
||||
synchronized(this) {
|
||||
this.exception = var3;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
synchronized(this) {
|
||||
this.position = (var1 + this.position) % this.capacity;
|
||||
}
|
||||
|
||||
if(!this.isClosed()) {
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if(var1 + this.position <= this.capacity) {
|
||||
this.outputStream.write(this.buffer, this.position, var1);
|
||||
} else {
|
||||
int var7 = this.capacity - this.position;
|
||||
this.outputStream.write(this.buffer, this.position, var7);
|
||||
this.outputStream.write(this.buffer, 0, var1 - var7);
|
||||
}
|
||||
} catch (IOException var10) {
|
||||
IOException var2 = var10;
|
||||
synchronized(this) {
|
||||
this.exception = var2;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
synchronized(this) {
|
||||
this.position = (var1 + this.position) % this.capacity;
|
||||
}
|
||||
} while(!this.isClosed());
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -223,13 +208,13 @@ public class BufferedSink implements Runnable {
|
||||
garbageValue = "449588720"
|
||||
)
|
||||
static void method3603() {
|
||||
Tiles.__bq_w = (byte[][][])null;
|
||||
Fonts.__kz_o = (byte[][][])null;
|
||||
class32.__ay_u = (byte[][][])null;
|
||||
class307.__kc_g = (byte[][][])null;
|
||||
Tiles.__bq_a = (int[][][])null;
|
||||
Tiles.__bq_l = (byte[][][])null;
|
||||
Huffman.__gd_e = (int[][])null;
|
||||
Tiles.__bq_w = null;
|
||||
Fonts.__kz_o = null;
|
||||
class32.__ay_u = null;
|
||||
class307.__kc_g = null;
|
||||
Tiles.__bq_a = null;
|
||||
Tiles.__bq_l = null;
|
||||
Huffman.__gd_e = null;
|
||||
class13.__i_x = null;
|
||||
Formatting.__cy_d = null;
|
||||
class214.__hf_k = null;
|
||||
|
||||
@@ -234,22 +234,22 @@ public class BufferedSource implements Runnable {
|
||||
}
|
||||
}
|
||||
|
||||
int var2;
|
||||
int var7;
|
||||
try {
|
||||
var2 = this.inputStream.read(this.buffer, this.limit, var1);
|
||||
if(var2 == -1) {
|
||||
var7 = this.inputStream.read(this.buffer, this.limit, var1);
|
||||
if(var7 == -1) {
|
||||
throw new EOFException();
|
||||
}
|
||||
} catch (IOException var11) {
|
||||
IOException var4 = var11;
|
||||
IOException var3 = var11;
|
||||
synchronized(this) {
|
||||
this.exception = var4;
|
||||
this.exception = var3;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
synchronized(this) {
|
||||
this.limit = (var2 + this.limit) % this.capacity;
|
||||
this.limit = (var7 + this.limit) % this.capacity;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -261,7 +261,7 @@ public class BufferedSource implements Runnable {
|
||||
)
|
||||
static final void method3423(boolean var0) {
|
||||
for(int var1 = 0; var1 < Client.npcCount; ++var1) {
|
||||
NPC var2 = Client.npcs[Client.npcIndices[var1]];
|
||||
Npc var2 = Client.npcs[Client.npcIndices[var1]];
|
||||
if(var2 != null && var2.isVisible() && var2.definition.isVisible == var0 && var2.definition.__e_435()) {
|
||||
int var3 = var2.x >> 7;
|
||||
int var4 = var2.y >> 7;
|
||||
|
||||
@@ -44,6 +44,15 @@ public class ByteArrayPool {
|
||||
@Export("indexCache13")
|
||||
static IndexCache indexCache13;
|
||||
|
||||
static {
|
||||
ByteArrayPool_smallCount = 0;
|
||||
ByteArrayPool_mediumCount = 0;
|
||||
ByteArrayPool_largeCount = 0;
|
||||
ByteArrayPool_small = new byte[1000][];
|
||||
ByteArrayPool_medium = new byte[250][];
|
||||
ByteArrayPool_large = new byte[50][];
|
||||
}
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(IZI)[B",
|
||||
@@ -83,15 +92,15 @@ public class ByteArrayPool {
|
||||
}
|
||||
|
||||
if(class179.__fe_e != null) {
|
||||
for(int var3 = 0; var3 < __gi_g.length; ++var3) {
|
||||
if(__gi_g[var3] != var0) {
|
||||
if(var0 < __gi_g[var3]) {
|
||||
for(int var4 = 0; var4 < __gi_g.length; ++var4) {
|
||||
if(__gi_g[var4] != var0) {
|
||||
if(var0 < __gi_g[var4]) {
|
||||
;
|
||||
}
|
||||
} else if(WorldMapSection2.__ah_l[var3] > 0) {
|
||||
byte[] var4 = class179.__fe_e[var3][--WorldMapSection2.__ah_l[var3]];
|
||||
class179.__fe_e[var3][WorldMapSection2.__ah_l[var3]] = null;
|
||||
return var4;
|
||||
} else if(WorldMapSection2.__ah_l[var4] > 0) {
|
||||
byte[] var3 = class179.__fe_e[var4][--WorldMapSection2.__ah_l[var4]];
|
||||
class179.__fe_e[var4][WorldMapSection2.__ah_l[var4]] = null;
|
||||
return var3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -106,8 +115,8 @@ public class ByteArrayPool {
|
||||
)
|
||||
public static String method4001(int var0, boolean var1) {
|
||||
if(var1 && var0 >= 0) {
|
||||
int var2 = var0;
|
||||
String var3;
|
||||
int var3 = var0;
|
||||
String var2;
|
||||
if(var1 && var0 >= 0) {
|
||||
int var4 = 2;
|
||||
|
||||
@@ -115,37 +124,28 @@ public class ByteArrayPool {
|
||||
var5 /= 10;
|
||||
}
|
||||
|
||||
char[] var9 = new char[var4];
|
||||
var9[0] = '+';
|
||||
char[] var6 = new char[var4];
|
||||
var6[0] = '+';
|
||||
|
||||
for(int var6 = var4 - 1; var6 > 0; --var6) {
|
||||
int var7 = var2;
|
||||
var2 /= 10;
|
||||
int var8 = var7 - var2 * 10;
|
||||
if(var8 >= 10) {
|
||||
var9[var6] = (char)(var8 + 87);
|
||||
for(int var7 = var4 - 1; var7 > 0; --var7) {
|
||||
int var8 = var3;
|
||||
var3 /= 10;
|
||||
int var9 = var8 - var3 * 10;
|
||||
if(var9 >= 10) {
|
||||
var6[var7] = (char)(var9 + 87);
|
||||
} else {
|
||||
var9[var6] = (char)(var8 + 48);
|
||||
var6[var7] = (char)(var9 + 48);
|
||||
}
|
||||
}
|
||||
|
||||
var3 = new String(var9);
|
||||
var2 = new String(var6);
|
||||
} else {
|
||||
var3 = Integer.toString(var0, 10);
|
||||
var2 = Integer.toString(var0, 10);
|
||||
}
|
||||
|
||||
return var3;
|
||||
return var2;
|
||||
} else {
|
||||
return Integer.toString(var0);
|
||||
}
|
||||
}
|
||||
|
||||
static {
|
||||
ByteArrayPool_smallCount = 0;
|
||||
ByteArrayPool_mediumCount = 0;
|
||||
ByteArrayPool_largeCount = 0;
|
||||
ByteArrayPool_small = new byte[1000][];
|
||||
ByteArrayPool_medium = new byte[250][];
|
||||
ByteArrayPool_large = new byte[50][];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,11 +13,14 @@ public final class Bzip2Decompressor {
|
||||
@Export("Bzip2Decompressor_state")
|
||||
static Bzip2State Bzip2Decompressor_state;
|
||||
|
||||
static {
|
||||
Bzip2Decompressor_state = new Bzip2State();
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@Export("Bzip2Decompressor_decompress")
|
||||
public static int Bzip2Decompressor_decompress(byte[] var0, int var1, byte[] var2, int var3, int var4) {
|
||||
Bzip2State var5 = Bzip2Decompressor_state;
|
||||
Bzip2State var6 = Bzip2Decompressor_state;
|
||||
synchronized(Bzip2Decompressor_state) {
|
||||
Bzip2Decompressor_state.__g = var2;
|
||||
Bzip2Decompressor_state.__l = var4;
|
||||
@@ -27,7 +30,7 @@ public final class Bzip2Decompressor {
|
||||
Bzip2Decompressor_state.__j = 0;
|
||||
Bzip2Decompressor_state.__z = 0;
|
||||
Bzip2Decompressor_state.__e = 0;
|
||||
Bzip2Decompressor_state.surfaceOffsetY = 0;
|
||||
Bzip2Decompressor_state.__n = 0;
|
||||
method3725(Bzip2Decompressor_state);
|
||||
var1 -= Bzip2Decompressor_state.__k;
|
||||
Bzip2Decompressor_state.__g = null;
|
||||
@@ -41,131 +44,131 @@ public final class Bzip2Decompressor {
|
||||
signature = "(Lgt;)V"
|
||||
)
|
||||
static void method3705(Bzip2State var0) {
|
||||
byte var1 = var0.__i;
|
||||
int var2 = var0.__a;
|
||||
int var3 = var0.__c;
|
||||
int var4 = var0.__h;
|
||||
int[] var5 = WorldMapSection0.__y_p;
|
||||
int var6 = var0.__y;
|
||||
byte[] var7 = var0.__x;
|
||||
int var8 = var0.__d;
|
||||
int var9 = var0.__k;
|
||||
int var10 = var0.__ae + 1;
|
||||
byte var2 = var0.__i;
|
||||
int var3 = var0.__a;
|
||||
int var4 = var0.__c;
|
||||
int var5 = var0.__h;
|
||||
int[] var6 = WorldMapSection0.__y_p;
|
||||
int var7 = var0.__y;
|
||||
byte[] var8 = var0.__x;
|
||||
int var9 = var0.__d;
|
||||
int var10 = var0.__k;
|
||||
int var12 = var0.__ae + 1;
|
||||
|
||||
label65:
|
||||
while(true) {
|
||||
if(var2 > 0) {
|
||||
if(var3 > 0) {
|
||||
while(true) {
|
||||
if(var9 == 0) {
|
||||
if(var10 == 0) {
|
||||
break label65;
|
||||
}
|
||||
|
||||
if(var2 == 1) {
|
||||
if(var9 == 0) {
|
||||
var2 = 1;
|
||||
if(var3 == 1) {
|
||||
if(var10 == 0) {
|
||||
var3 = 1;
|
||||
break label65;
|
||||
}
|
||||
|
||||
var7[var8] = var1;
|
||||
++var8;
|
||||
--var9;
|
||||
var8[var9] = var2;
|
||||
++var9;
|
||||
--var10;
|
||||
break;
|
||||
}
|
||||
|
||||
var7[var8] = var1;
|
||||
--var2;
|
||||
++var8;
|
||||
--var9;
|
||||
var8[var9] = var2;
|
||||
--var3;
|
||||
++var9;
|
||||
--var10;
|
||||
}
|
||||
}
|
||||
|
||||
boolean var11 = true;
|
||||
boolean var14 = true;
|
||||
|
||||
byte var12;
|
||||
while(var11) {
|
||||
var11 = false;
|
||||
if(var3 == var10) {
|
||||
var2 = 0;
|
||||
byte var1;
|
||||
while(var14) {
|
||||
var14 = false;
|
||||
if(var4 == var12) {
|
||||
var3 = 0;
|
||||
break label65;
|
||||
}
|
||||
|
||||
var1 = (byte)var4;
|
||||
var6 = var5[var6];
|
||||
var12 = (byte)(var6 & 255);
|
||||
var6 >>= 8;
|
||||
++var3;
|
||||
if(var12 != var4) {
|
||||
var4 = var12;
|
||||
if(var9 == 0) {
|
||||
var2 = 1;
|
||||
var2 = (byte)var5;
|
||||
var7 = var6[var7];
|
||||
var1 = (byte)(var7 & 255);
|
||||
var7 >>= 8;
|
||||
++var4;
|
||||
if(var1 != var5) {
|
||||
var5 = var1;
|
||||
if(var10 == 0) {
|
||||
var3 = 1;
|
||||
break label65;
|
||||
}
|
||||
|
||||
var7[var8] = var1;
|
||||
++var8;
|
||||
--var9;
|
||||
var11 = true;
|
||||
} else if(var3 == var10) {
|
||||
if(var9 == 0) {
|
||||
var2 = 1;
|
||||
var8[var9] = var2;
|
||||
++var9;
|
||||
--var10;
|
||||
var14 = true;
|
||||
} else if(var4 == var12) {
|
||||
if(var10 == 0) {
|
||||
var3 = 1;
|
||||
break label65;
|
||||
}
|
||||
|
||||
var7[var8] = var1;
|
||||
++var8;
|
||||
--var9;
|
||||
var11 = true;
|
||||
var8[var9] = var2;
|
||||
++var9;
|
||||
--var10;
|
||||
var14 = true;
|
||||
}
|
||||
}
|
||||
|
||||
var2 = 2;
|
||||
var6 = var5[var6];
|
||||
var12 = (byte)(var6 & 255);
|
||||
var6 >>= 8;
|
||||
++var3;
|
||||
if(var3 != var10) {
|
||||
if(var12 != var4) {
|
||||
var4 = var12;
|
||||
var3 = 2;
|
||||
var7 = var6[var7];
|
||||
var1 = (byte)(var7 & 255);
|
||||
var7 >>= 8;
|
||||
++var4;
|
||||
if(var4 != var12) {
|
||||
if(var1 != var5) {
|
||||
var5 = var1;
|
||||
} else {
|
||||
var2 = 3;
|
||||
var6 = var5[var6];
|
||||
var12 = (byte)(var6 & 255);
|
||||
var6 >>= 8;
|
||||
++var3;
|
||||
if(var3 != var10) {
|
||||
if(var12 != var4) {
|
||||
var4 = var12;
|
||||
var3 = 3;
|
||||
var7 = var6[var7];
|
||||
var1 = (byte)(var7 & 255);
|
||||
var7 >>= 8;
|
||||
++var4;
|
||||
if(var4 != var12) {
|
||||
if(var1 != var5) {
|
||||
var5 = var1;
|
||||
} else {
|
||||
var6 = var5[var6];
|
||||
var12 = (byte)(var6 & 255);
|
||||
var6 >>= 8;
|
||||
++var3;
|
||||
var2 = (var12 & 255) + 4;
|
||||
var6 = var5[var6];
|
||||
var4 = (byte)(var6 & 255);
|
||||
var6 >>= 8;
|
||||
++var3;
|
||||
var7 = var6[var7];
|
||||
var1 = (byte)(var7 & 255);
|
||||
var7 >>= 8;
|
||||
++var4;
|
||||
var3 = (var1 & 255) + 4;
|
||||
var7 = var6[var7];
|
||||
var5 = (byte)(var7 & 255);
|
||||
var7 >>= 8;
|
||||
++var4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int var13 = var0.surfaceOffsetY;
|
||||
var0.surfaceOffsetY += var9 - var9;
|
||||
if(var0.surfaceOffsetY < var13) {
|
||||
int var13 = var0.__n;
|
||||
var0.__n += var10 - var10;
|
||||
if(var0.__n < var13) {
|
||||
;
|
||||
}
|
||||
|
||||
var0.__i = var1;
|
||||
var0.__a = var2;
|
||||
var0.__c = var3;
|
||||
var0.__h = var4;
|
||||
WorldMapSection0.__y_p = var5;
|
||||
var0.__y = var6;
|
||||
var0.__x = var7;
|
||||
var0.__d = var8;
|
||||
var0.__k = var9;
|
||||
var0.__i = var2;
|
||||
var0.__a = var3;
|
||||
var0.__c = var4;
|
||||
var0.__h = var5;
|
||||
WorldMapSection0.__y_p = var6;
|
||||
var0.__y = var7;
|
||||
var0.__x = var8;
|
||||
var0.__d = var9;
|
||||
var0.__k = var10;
|
||||
}
|
||||
|
||||
@ObfuscatedName("q")
|
||||
@@ -173,9 +176,6 @@ public final class Bzip2Decompressor {
|
||||
signature = "(Lgt;)V"
|
||||
)
|
||||
static void method3725(Bzip2State var0) {
|
||||
boolean var1 = false;
|
||||
boolean var2 = false;
|
||||
boolean var3 = false;
|
||||
boolean var4 = false;
|
||||
boolean var5 = false;
|
||||
boolean var6 = false;
|
||||
@@ -191,314 +191,314 @@ public final class Bzip2Decompressor {
|
||||
boolean var16 = false;
|
||||
boolean var17 = false;
|
||||
boolean var18 = false;
|
||||
int var19 = 0;
|
||||
int[] var20 = null;
|
||||
int[] var21 = null;
|
||||
int[] var22 = null;
|
||||
boolean var19 = false;
|
||||
boolean var20 = false;
|
||||
boolean var21 = false;
|
||||
int var22 = 0;
|
||||
int[] var23 = null;
|
||||
int[] var24 = null;
|
||||
int[] var25 = null;
|
||||
var0.__s = 1;
|
||||
if(WorldMapSection0.__y_p == null) {
|
||||
WorldMapSection0.__y_p = new int[var0.__s * 100000];
|
||||
}
|
||||
|
||||
boolean var23 = true;
|
||||
boolean var26 = true;
|
||||
|
||||
while(true) {
|
||||
while(var23) {
|
||||
byte var24 = method3707(var0);
|
||||
if(var24 == 23) {
|
||||
while(var26) {
|
||||
byte var1 = method3707(var0);
|
||||
if(var1 == 23) {
|
||||
return;
|
||||
}
|
||||
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3707(var0);
|
||||
var24 = method3711(var0);
|
||||
if(var24 != 0) {
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3707(var0);
|
||||
var1 = method3711(var0);
|
||||
if(var1 != 0) {
|
||||
;
|
||||
}
|
||||
|
||||
var0.__t = 0;
|
||||
var24 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var24 & 255;
|
||||
var24 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var24 & 255;
|
||||
var24 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var24 & 255;
|
||||
var1 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var1 & 255;
|
||||
var1 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var1 & 255;
|
||||
var1 = method3707(var0);
|
||||
var0.__t = var0.__t << 8 | var1 & 255;
|
||||
|
||||
int var25;
|
||||
for(var25 = 0; var25 < 16; ++var25) {
|
||||
var24 = method3711(var0);
|
||||
if(var24 == 1) {
|
||||
var0.__aq[var25] = true;
|
||||
int var36;
|
||||
for(var36 = 0; var36 < 16; ++var36) {
|
||||
var1 = method3711(var0);
|
||||
if(var1 == 1) {
|
||||
var0.__aq[var36] = true;
|
||||
} else {
|
||||
var0.__aq[var25] = false;
|
||||
var0.__aq[var36] = false;
|
||||
}
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < 256; ++var25) {
|
||||
var0.__ag[var25] = false;
|
||||
for(var36 = 0; var36 < 256; ++var36) {
|
||||
var0.__ag[var36] = false;
|
||||
}
|
||||
|
||||
int var26;
|
||||
for(var25 = 0; var25 < 16; ++var25) {
|
||||
if(var0.__aq[var25]) {
|
||||
for(var26 = 0; var26 < 16; ++var26) {
|
||||
var24 = method3711(var0);
|
||||
if(var24 == 1) {
|
||||
var0.__ag[var26 + var25 * 16] = true;
|
||||
int var37;
|
||||
for(var36 = 0; var36 < 16; ++var36) {
|
||||
if(var0.__aq[var36]) {
|
||||
for(var37 = 0; var37 < 16; ++var37) {
|
||||
var1 = method3711(var0);
|
||||
if(var1 == 1) {
|
||||
var0.__ag[var37 + var36 * 16] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
method3710(var0);
|
||||
int var27 = var0.__v + 2;
|
||||
int var28 = method3708(3, var0);
|
||||
int var29 = method3708(15, var0);
|
||||
int var39 = var0.__v + 2;
|
||||
int var40 = method3708(3, var0);
|
||||
int var41 = method3708(15, var0);
|
||||
|
||||
for(var25 = 0; var25 < var29; ++var25) {
|
||||
var26 = 0;
|
||||
for(var36 = 0; var36 < var41; ++var36) {
|
||||
var37 = 0;
|
||||
|
||||
while(true) {
|
||||
var24 = method3711(var0);
|
||||
if(var24 == 0) {
|
||||
var0.__ay[var25] = (byte)var26;
|
||||
var1 = method3711(var0);
|
||||
if(var1 == 0) {
|
||||
var0.__ay[var36] = (byte)var37;
|
||||
break;
|
||||
}
|
||||
|
||||
++var26;
|
||||
++var37;
|
||||
}
|
||||
}
|
||||
|
||||
byte[] var30 = new byte[6];
|
||||
byte[] var27 = new byte[6];
|
||||
|
||||
byte var31;
|
||||
for(var31 = 0; var31 < var28; var30[var31] = var31++) {
|
||||
byte var29;
|
||||
for(var29 = 0; var29 < var40; var27[var29] = var29++) {
|
||||
;
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < var29; ++var25) {
|
||||
var31 = var0.__ay[var25];
|
||||
for(var36 = 0; var36 < var41; ++var36) {
|
||||
var29 = var0.__ay[var36];
|
||||
|
||||
byte var32;
|
||||
for(var32 = var30[var31]; var31 > 0; --var31) {
|
||||
var30[var31] = var30[var31 - 1];
|
||||
byte var28;
|
||||
for(var28 = var27[var29]; var29 > 0; --var29) {
|
||||
var27[var29] = var27[var29 - 1];
|
||||
}
|
||||
|
||||
var30[0] = var32;
|
||||
var0.__ac[var25] = var32;
|
||||
var27[0] = var28;
|
||||
var0.__ac[var36] = var28;
|
||||
}
|
||||
|
||||
int var33;
|
||||
int var50;
|
||||
for(var50 = 0; var50 < var28; ++var50) {
|
||||
var33 = method3708(5, var0);
|
||||
int var38;
|
||||
for(var38 = 0; var38 < var40; ++var38) {
|
||||
int var50 = method3708(5, var0);
|
||||
|
||||
for(var25 = 0; var25 < var27; ++var25) {
|
||||
for(var36 = 0; var36 < var39; ++var36) {
|
||||
while(true) {
|
||||
var24 = method3711(var0);
|
||||
if(var24 == 0) {
|
||||
var0.__ah[var50][var25] = (byte)var33;
|
||||
var1 = method3711(var0);
|
||||
if(var1 == 0) {
|
||||
var0.__ah[var38][var36] = (byte)var50;
|
||||
break;
|
||||
}
|
||||
|
||||
var24 = method3711(var0);
|
||||
if(var24 == 0) {
|
||||
++var33;
|
||||
var1 = method3711(var0);
|
||||
if(var1 == 0) {
|
||||
++var50;
|
||||
} else {
|
||||
--var33;
|
||||
--var50;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var50 = 0; var50 < var28; ++var50) {
|
||||
byte var51 = 32;
|
||||
byte var34 = 0;
|
||||
for(var38 = 0; var38 < var40; ++var38) {
|
||||
byte var2 = 32;
|
||||
byte var3 = 0;
|
||||
|
||||
for(var25 = 0; var25 < var27; ++var25) {
|
||||
if(var0.__ah[var50][var25] > var34) {
|
||||
var34 = var0.__ah[var50][var25];
|
||||
for(var36 = 0; var36 < var39; ++var36) {
|
||||
if(var0.__ah[var38][var36] > var3) {
|
||||
var3 = var0.__ah[var38][var36];
|
||||
}
|
||||
|
||||
if(var0.__ah[var50][var25] < var51) {
|
||||
var51 = var0.__ah[var50][var25];
|
||||
if(var0.__ah[var38][var36] < var2) {
|
||||
var2 = var0.__ah[var38][var36];
|
||||
}
|
||||
}
|
||||
|
||||
method3706(var0.__ak[var50], var0.__aw[var50], var0.__al[var50], var0.__ah[var50], var51, var34, var27);
|
||||
var0.__ab[var50] = var51;
|
||||
method3706(var0.__ak[var38], var0.__aw[var38], var0.__al[var38], var0.__ah[var38], var2, var3, var39);
|
||||
var0.__ab[var38] = var2;
|
||||
}
|
||||
|
||||
var33 = var0.__v + 1;
|
||||
int var52 = -1;
|
||||
byte var35 = 0;
|
||||
int var42 = var0.__v + 1;
|
||||
int var43 = -1;
|
||||
byte var44 = 0;
|
||||
|
||||
for(var25 = 0; var25 <= 255; ++var25) {
|
||||
var0.__b[var25] = 0;
|
||||
for(var36 = 0; var36 <= 255; ++var36) {
|
||||
var0.__b[var36] = 0;
|
||||
}
|
||||
|
||||
int var36 = 4095;
|
||||
int var56 = 4095;
|
||||
|
||||
int var37;
|
||||
int var38;
|
||||
for(var37 = 15; var37 >= 0; --var37) {
|
||||
for(var38 = 15; var38 >= 0; --var38) {
|
||||
var0.__av[var36] = (byte)(var38 + var37 * 16);
|
||||
--var36;
|
||||
int var35;
|
||||
int var55;
|
||||
for(var35 = 15; var35 >= 0; --var35) {
|
||||
for(var55 = 15; var55 >= 0; --var55) {
|
||||
var0.__av[var56] = (byte)(var55 + var35 * 16);
|
||||
--var56;
|
||||
}
|
||||
|
||||
var0.__ar[var37] = var36 + 1;
|
||||
var0.__ar[var35] = var56 + 1;
|
||||
}
|
||||
|
||||
int var39 = 0;
|
||||
byte var40;
|
||||
if(var35 == 0) {
|
||||
++var52;
|
||||
var35 = 50;
|
||||
var40 = var0.__ac[var52];
|
||||
var19 = var0.__ab[var40];
|
||||
var20 = var0.__ak[var40];
|
||||
var22 = var0.__al[var40];
|
||||
var21 = var0.__aw[var40];
|
||||
int var47 = 0;
|
||||
byte var54;
|
||||
if(var44 == 0) {
|
||||
++var43;
|
||||
var44 = 50;
|
||||
var54 = var0.__ac[var43];
|
||||
var22 = var0.__ab[var54];
|
||||
var23 = var0.__ak[var54];
|
||||
var25 = var0.__al[var54];
|
||||
var24 = var0.__aw[var54];
|
||||
}
|
||||
|
||||
int var41 = var35 - 1;
|
||||
int var42 = var19;
|
||||
int var45 = var44 - 1;
|
||||
int var51 = var22;
|
||||
|
||||
int var43;
|
||||
byte var44;
|
||||
for(var43 = method3708(var19, var0); var43 > var20[var42]; var43 = var43 << 1 | var44) {
|
||||
++var42;
|
||||
var44 = method3711(var0);
|
||||
int var52;
|
||||
byte var53;
|
||||
for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) {
|
||||
++var51;
|
||||
var53 = method3711(var0);
|
||||
}
|
||||
|
||||
int var45 = var22[var43 - var21[var42]];
|
||||
int var46 = var25[var52 - var24[var51]];
|
||||
|
||||
while(true) {
|
||||
while(var45 != var33) {
|
||||
int var46;
|
||||
int var47;
|
||||
if(var45 != 0 && var45 != 1) {
|
||||
var46 = var45 - 1;
|
||||
int var48;
|
||||
if(var46 < 16) {
|
||||
var47 = var0.__ar[0];
|
||||
while(var46 != var42) {
|
||||
if(var46 != 0 && var46 != 1) {
|
||||
int var33 = var46 - 1;
|
||||
int var30;
|
||||
if(var33 < 16) {
|
||||
var30 = var0.__ar[0];
|
||||
|
||||
for(var24 = var0.__av[var47 + var46]; var46 > 3; var46 -= 4) {
|
||||
var48 = var47 + var46;
|
||||
var0.__av[var48] = var0.__av[var48 - 1];
|
||||
var0.__av[var48 - 1] = var0.__av[var48 - 2];
|
||||
var0.__av[var48 - 2] = var0.__av[var48 - 3];
|
||||
var0.__av[var48 - 3] = var0.__av[var48 - 4];
|
||||
for(var1 = var0.__av[var30 + var33]; var33 > 3; var33 -= 4) {
|
||||
int var34 = var30 + var33;
|
||||
var0.__av[var34] = var0.__av[var34 - 1];
|
||||
var0.__av[var34 - 1] = var0.__av[var34 - 2];
|
||||
var0.__av[var34 - 2] = var0.__av[var34 - 3];
|
||||
var0.__av[var34 - 3] = var0.__av[var34 - 4];
|
||||
}
|
||||
|
||||
while(var46 > 0) {
|
||||
var0.__av[var47 + var46] = var0.__av[var47 + var46 - 1];
|
||||
--var46;
|
||||
while(var33 > 0) {
|
||||
var0.__av[var30 + var33] = var0.__av[var30 + var33 - 1];
|
||||
--var33;
|
||||
}
|
||||
|
||||
var0.__av[var47] = var24;
|
||||
var0.__av[var30] = var1;
|
||||
} else {
|
||||
var48 = var46 / 16;
|
||||
int var49 = var46 % 16;
|
||||
var47 = var0.__ar[var48] + var49;
|
||||
int var31 = var33 / 16;
|
||||
int var32 = var33 % 16;
|
||||
var30 = var0.__ar[var31] + var32;
|
||||
|
||||
for(var24 = var0.__av[var47]; var47 > var0.__ar[var48]; --var47) {
|
||||
var0.__av[var47] = var0.__av[var47 - 1];
|
||||
for(var1 = var0.__av[var30]; var30 > var0.__ar[var31]; --var30) {
|
||||
var0.__av[var30] = var0.__av[var30 - 1];
|
||||
}
|
||||
|
||||
++var0.__ar[var48];
|
||||
++var0.__ar[var31];
|
||||
|
||||
while(var48 > 0) {
|
||||
--var0.__ar[var48];
|
||||
var0.__av[var0.__ar[var48]] = var0.__av[var0.__ar[var48 - 1] + 16 - 1];
|
||||
--var48;
|
||||
while(var31 > 0) {
|
||||
--var0.__ar[var31];
|
||||
var0.__av[var0.__ar[var31]] = var0.__av[var0.__ar[var31 - 1] + 16 - 1];
|
||||
--var31;
|
||||
}
|
||||
|
||||
--var0.__ar[0];
|
||||
var0.__av[var0.__ar[0]] = var24;
|
||||
var0.__av[var0.__ar[0]] = var1;
|
||||
if(var0.__ar[0] == 0) {
|
||||
var36 = 4095;
|
||||
var56 = 4095;
|
||||
|
||||
for(var37 = 15; var37 >= 0; --var37) {
|
||||
for(var38 = 15; var38 >= 0; --var38) {
|
||||
var0.__av[var36] = var0.__av[var0.__ar[var37] + var38];
|
||||
--var36;
|
||||
for(var35 = 15; var35 >= 0; --var35) {
|
||||
for(var55 = 15; var55 >= 0; --var55) {
|
||||
var0.__av[var56] = var0.__av[var0.__ar[var35] + var55];
|
||||
--var56;
|
||||
}
|
||||
|
||||
var0.__ar[var37] = var36 + 1;
|
||||
var0.__ar[var35] = var56 + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var0.__b[var0.__aj[var24 & 255] & 255];
|
||||
WorldMapSection0.__y_p[var39] = var0.__aj[var24 & 255] & 255;
|
||||
++var39;
|
||||
if(var41 == 0) {
|
||||
++var52;
|
||||
var41 = 50;
|
||||
var40 = var0.__ac[var52];
|
||||
var19 = var0.__ab[var40];
|
||||
var20 = var0.__ak[var40];
|
||||
var22 = var0.__al[var40];
|
||||
var21 = var0.__aw[var40];
|
||||
++var0.__b[var0.__aj[var1 & 255] & 255];
|
||||
WorldMapSection0.__y_p[var47] = var0.__aj[var1 & 255] & 255;
|
||||
++var47;
|
||||
if(var45 == 0) {
|
||||
++var43;
|
||||
var45 = 50;
|
||||
var54 = var0.__ac[var43];
|
||||
var22 = var0.__ab[var54];
|
||||
var23 = var0.__ak[var54];
|
||||
var25 = var0.__al[var54];
|
||||
var24 = var0.__aw[var54];
|
||||
}
|
||||
|
||||
--var41;
|
||||
var42 = var19;
|
||||
--var45;
|
||||
var51 = var22;
|
||||
|
||||
for(var43 = method3708(var19, var0); var43 > var20[var42]; var43 = var43 << 1 | var44) {
|
||||
++var42;
|
||||
var44 = method3711(var0);
|
||||
for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) {
|
||||
++var51;
|
||||
var53 = method3711(var0);
|
||||
}
|
||||
|
||||
var45 = var22[var43 - var21[var42]];
|
||||
var46 = var25[var52 - var24[var51]];
|
||||
} else {
|
||||
var46 = -1;
|
||||
var47 = 1;
|
||||
int var48 = -1;
|
||||
int var49 = 1;
|
||||
|
||||
do {
|
||||
if(var46 == 0) {
|
||||
var48 += var49;
|
||||
} else if(var46 == 1) {
|
||||
var48 += var49 * 2;
|
||||
}
|
||||
|
||||
var49 *= 2;
|
||||
if(var45 == 0) {
|
||||
var46 += var47;
|
||||
} else if(var45 == 1) {
|
||||
var46 += var47 * 2;
|
||||
++var43;
|
||||
var45 = 50;
|
||||
var54 = var0.__ac[var43];
|
||||
var22 = var0.__ab[var54];
|
||||
var23 = var0.__ak[var54];
|
||||
var25 = var0.__al[var54];
|
||||
var24 = var0.__aw[var54];
|
||||
}
|
||||
|
||||
var47 *= 2;
|
||||
if(var41 == 0) {
|
||||
++var52;
|
||||
var41 = 50;
|
||||
var40 = var0.__ac[var52];
|
||||
var19 = var0.__ab[var40];
|
||||
var20 = var0.__ak[var40];
|
||||
var22 = var0.__al[var40];
|
||||
var21 = var0.__aw[var40];
|
||||
--var45;
|
||||
var51 = var22;
|
||||
|
||||
for(var52 = method3708(var22, var0); var52 > var23[var51]; var52 = var52 << 1 | var53) {
|
||||
++var51;
|
||||
var53 = method3711(var0);
|
||||
}
|
||||
|
||||
--var41;
|
||||
var42 = var19;
|
||||
var46 = var25[var52 - var24[var51]];
|
||||
} while(var46 == 0 || var46 == 1);
|
||||
|
||||
for(var43 = method3708(var19, var0); var43 > var20[var42]; var43 = var43 << 1 | var44) {
|
||||
++var42;
|
||||
var44 = method3711(var0);
|
||||
}
|
||||
++var48;
|
||||
var1 = var0.__aj[var0.__av[var0.__ar[0]] & 255];
|
||||
|
||||
var45 = var22[var43 - var21[var42]];
|
||||
} while(var45 == 0 || var45 == 1);
|
||||
|
||||
++var46;
|
||||
var24 = var0.__aj[var0.__av[var0.__ar[0]] & 255];
|
||||
|
||||
for(var0.__b[var24 & 255] += var46; var46 > 0; --var46) {
|
||||
WorldMapSection0.__y_p[var39] = var24 & 255;
|
||||
++var39;
|
||||
for(var0.__b[var1 & 255] += var48; var48 > 0; --var48) {
|
||||
WorldMapSection0.__y_p[var47] = var1 & 255;
|
||||
++var47;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -507,18 +507,18 @@ public final class Bzip2Decompressor {
|
||||
var0.__i = 0;
|
||||
var0.__r[0] = 0;
|
||||
|
||||
for(var25 = 1; var25 <= 256; ++var25) {
|
||||
var0.__r[var25] = var0.__b[var25 - 1];
|
||||
for(var36 = 1; var36 <= 256; ++var36) {
|
||||
var0.__r[var36] = var0.__b[var36 - 1];
|
||||
}
|
||||
|
||||
for(var25 = 1; var25 <= 256; ++var25) {
|
||||
var0.__r[var25] += var0.__r[var25 - 1];
|
||||
for(var36 = 1; var36 <= 256; ++var36) {
|
||||
var0.__r[var36] += var0.__r[var36 - 1];
|
||||
}
|
||||
|
||||
for(var25 = 0; var25 < var39; ++var25) {
|
||||
var24 = (byte)(WorldMapSection0.__y_p[var25] & 255);
|
||||
WorldMapSection0.__y_p[var0.__r[var24 & 255]] |= var25 << 8;
|
||||
++var0.__r[var24 & 255];
|
||||
for(var36 = 0; var36 < var47; ++var36) {
|
||||
var1 = (byte)(WorldMapSection0.__y_p[var36] & 255);
|
||||
WorldMapSection0.__y_p[var0.__r[var1 & 255]] |= var36 << 8;
|
||||
++var0.__r[var1 & 255];
|
||||
}
|
||||
|
||||
var0.__y = WorldMapSection0.__y_p[var0.__t] >> 8;
|
||||
@@ -527,14 +527,14 @@ public final class Bzip2Decompressor {
|
||||
var0.__h = (byte)(var0.__y & 255);
|
||||
var0.__y >>= 8;
|
||||
++var0.__c;
|
||||
var0.__ae = var39;
|
||||
var0.__ae = var47;
|
||||
method3705(var0);
|
||||
if(var0.__ae + 1 == var0.__c && var0.__a == 0) {
|
||||
var23 = true;
|
||||
var26 = true;
|
||||
break;
|
||||
}
|
||||
|
||||
var23 = false;
|
||||
var26 = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -574,9 +574,9 @@ public final class Bzip2Decompressor {
|
||||
}
|
||||
}
|
||||
|
||||
int var2 = var1.__z >> var1.__j - var0 & (1 << var0) - 1;
|
||||
int var3 = var1.__z >> var1.__j - var0 & (1 << var0) - 1;
|
||||
var1.__j -= var0;
|
||||
return var2;
|
||||
return var3;
|
||||
}
|
||||
|
||||
@ObfuscatedName("g")
|
||||
@@ -600,9 +600,8 @@ public final class Bzip2Decompressor {
|
||||
int var7 = 0;
|
||||
|
||||
int var8;
|
||||
int var9;
|
||||
for(var8 = var4; var8 <= var5; ++var8) {
|
||||
for(var9 = 0; var9 < var6; ++var9) {
|
||||
for(int var9 = 0; var9 < var6; ++var9) {
|
||||
if(var8 == var3[var9]) {
|
||||
var2[var7] = var9;
|
||||
++var7;
|
||||
@@ -626,12 +625,12 @@ public final class Bzip2Decompressor {
|
||||
var0[var8] = 0;
|
||||
}
|
||||
|
||||
var9 = 0;
|
||||
int var10 = 0;
|
||||
|
||||
for(var8 = var4; var8 <= var5; ++var8) {
|
||||
var9 += var1[var8 + 1] - var1[var8];
|
||||
var0[var8] = var9 - 1;
|
||||
var9 <<= 1;
|
||||
var10 += var1[var8 + 1] - var1[var8];
|
||||
var0[var8] = var10 - 1;
|
||||
var10 <<= 1;
|
||||
}
|
||||
|
||||
for(var8 = var4 + 1; var8 <= var5; ++var8) {
|
||||
@@ -639,8 +638,4 @@ public final class Bzip2Decompressor {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
Bzip2Decompressor_state = new Bzip2State();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public final class Bzip2State {
|
||||
intValue = 1860254567
|
||||
)
|
||||
@Export("surfaceOffsetY")
|
||||
int surfaceOffsetY;
|
||||
int __n;
|
||||
@ObfuscatedName("i")
|
||||
@Export("__i")
|
||||
byte __i;
|
||||
|
||||
@@ -119,22 +119,21 @@ public final class Canvas extends java.awt.Canvas {
|
||||
static int method861(int var0, Script var1, boolean var2) {
|
||||
int var3;
|
||||
int var4;
|
||||
Widget var6;
|
||||
if(var0 == 100) {
|
||||
class179.Interpreter_intStackSize -= 3;
|
||||
var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1];
|
||||
int var9 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2];
|
||||
int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2];
|
||||
if(var4 == 0) {
|
||||
throw new RuntimeException();
|
||||
} else {
|
||||
var6 = Huffman.getWidget(var3);
|
||||
Widget var6 = Huffman.getWidget(var3);
|
||||
if(var6.children == null) {
|
||||
var6.children = new Widget[var9 + 1];
|
||||
var6.children = new Widget[var5 + 1];
|
||||
}
|
||||
|
||||
if(var6.children.length <= var9) {
|
||||
Widget[] var7 = new Widget[var9 + 1];
|
||||
if(var6.children.length <= var5) {
|
||||
Widget[] var7 = new Widget[var5 + 1];
|
||||
|
||||
for(int var8 = 0; var8 < var6.children.length; ++var8) {
|
||||
var7[var8] = var6.children[var8];
|
||||
@@ -143,19 +142,19 @@ public final class Canvas extends java.awt.Canvas {
|
||||
var6.children = var7;
|
||||
}
|
||||
|
||||
if(var9 > 0 && var6.children[var9 - 1] == null) {
|
||||
throw new RuntimeException("" + (var9 - 1));
|
||||
if(var5 > 0 && var6.children[var5 - 1] == null) {
|
||||
throw new RuntimeException("" + (var5 - 1));
|
||||
} else {
|
||||
Widget var10 = new Widget();
|
||||
var10.type = var4;
|
||||
var10.parentId = var10.id = var6.id;
|
||||
var10.childIndex = var9;
|
||||
var10.isIf3 = true;
|
||||
var6.children[var9] = var10;
|
||||
Widget var12 = new Widget();
|
||||
var12.type = var4;
|
||||
var12.parentId = var12.id = var6.id;
|
||||
var12.childIndex = var5;
|
||||
var12.isIf3 = true;
|
||||
var6.children[var5] = var12;
|
||||
if(var2) {
|
||||
WorldMapIcon1.__t_i = var10;
|
||||
WorldMapIcon1.__t_i = var12;
|
||||
} else {
|
||||
class12.__n_n = var10;
|
||||
class12.__n_n = var12;
|
||||
}
|
||||
|
||||
class22.method295(var6);
|
||||
@@ -163,27 +162,27 @@ public final class Canvas extends java.awt.Canvas {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Widget var5;
|
||||
Widget var9;
|
||||
if(var0 == 101) {
|
||||
var5 = var2?WorldMapIcon1.__t_i:class12.__n_n;
|
||||
var6 = Huffman.getWidget(var5.id);
|
||||
var6.children[var5.childIndex] = null;
|
||||
class22.method295(var6);
|
||||
var9 = var2?WorldMapIcon1.__t_i:class12.__n_n;
|
||||
Widget var10 = Huffman.getWidget(var9.id);
|
||||
var10.children[var9.childIndex] = null;
|
||||
class22.method295(var10);
|
||||
return 1;
|
||||
} else if(var0 == 102) {
|
||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]);
|
||||
var5.children = null;
|
||||
class22.method295(var5);
|
||||
var9 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]);
|
||||
var9.children = null;
|
||||
class22.method295(var9);
|
||||
return 1;
|
||||
} else if(var0 != 200) {
|
||||
if(var0 == 201) {
|
||||
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]);
|
||||
if(var5 != null) {
|
||||
var9 = Huffman.getWidget(Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize]);
|
||||
if(var9 != null) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1;
|
||||
if(var2) {
|
||||
WorldMapIcon1.__t_i = var5;
|
||||
WorldMapIcon1.__t_i = var9;
|
||||
} else {
|
||||
class12.__n_n = var5;
|
||||
class12.__n_n = var9;
|
||||
}
|
||||
} else {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0;
|
||||
@@ -197,13 +196,13 @@ public final class Canvas extends java.awt.Canvas {
|
||||
class179.Interpreter_intStackSize -= 2;
|
||||
var3 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1];
|
||||
var6 = class204.getWidgetChild(var3, var4);
|
||||
if(var6 != null && var4 != -1) {
|
||||
Widget var11 = class204.getWidgetChild(var3, var4);
|
||||
if(var11 != null && var4 != -1) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 1;
|
||||
if(var2) {
|
||||
WorldMapIcon1.__t_i = var6;
|
||||
WorldMapIcon1.__t_i = var11;
|
||||
} else {
|
||||
class12.__n_n = var6;
|
||||
class12.__n_n = var11;
|
||||
}
|
||||
} else {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0;
|
||||
|
||||
@@ -117,18 +117,18 @@ public class ChatChannel {
|
||||
var0.spotAnimationFrame = 0;
|
||||
}
|
||||
|
||||
int var2 = class50.getSpotAnimationDefinition(var0.spotAnimation).sequence;
|
||||
if(var2 != -1) {
|
||||
SequenceDefinition var3 = WorldMapAreaData.getSequenceDefinition(var2);
|
||||
if(var3 != null && var3.frameIds != null) {
|
||||
int var3 = class50.getSpotAnimationDefinition(var0.spotAnimation).sequence;
|
||||
if(var3 != -1) {
|
||||
SequenceDefinition var2 = WorldMapAreaData.getSequenceDefinition(var3);
|
||||
if(var2 != null && var2.frameIds != null) {
|
||||
++var0.spotAnimationFrameCycle;
|
||||
if(var0.spotAnimationFrame < var3.frameIds.length && var0.spotAnimationFrameCycle > var3.frameLengths[var0.spotAnimationFrame]) {
|
||||
if(var0.spotAnimationFrame < var2.frameIds.length && var0.spotAnimationFrameCycle > var2.frameLengths[var0.spotAnimationFrame]) {
|
||||
var0.spotAnimationFrameCycle = 1;
|
||||
++var0.spotAnimationFrame;
|
||||
Script.method2201(var3, var0.spotAnimationFrame, var0.x, var0.y);
|
||||
Script.method2201(var2, var0.spotAnimationFrame, var0.x, var0.y);
|
||||
}
|
||||
|
||||
if(var0.spotAnimationFrame >= var3.frameIds.length && (var0.spotAnimationFrame < 0 || var0.spotAnimationFrame >= var3.frameIds.length)) {
|
||||
if(var0.spotAnimationFrame >= var2.frameIds.length && (var0.spotAnimationFrame < 0 || var0.spotAnimationFrame >= var2.frameIds.length)) {
|
||||
var0.spotAnimation = -1;
|
||||
}
|
||||
} else {
|
||||
@@ -217,100 +217,100 @@ public class ChatChannel {
|
||||
|
||||
int var4;
|
||||
int var5;
|
||||
int var6;
|
||||
int var13;
|
||||
if(var0.type == 2) {
|
||||
var6 = 0;
|
||||
var13 = 0;
|
||||
|
||||
for(var4 = 0; var4 < var0.height; ++var4) {
|
||||
for(var5 = 0; var5 < var0.width; ++var5) {
|
||||
int var7 = (var0.paddingX + 32) * var5;
|
||||
int var8 = (var0.paddingY + 32) * var4;
|
||||
if(var6 < 20) {
|
||||
var7 += var0.inventoryXOffsets[var6];
|
||||
var8 += var0.inventoryYOffsets[var6];
|
||||
int var6 = (var0.paddingX + 32) * var5;
|
||||
int var7 = (var0.paddingY + 32) * var4;
|
||||
if(var13 < 20) {
|
||||
var6 += var0.inventoryXOffsets[var13];
|
||||
var7 += var0.inventoryYOffsets[var13];
|
||||
}
|
||||
|
||||
if(var1 >= var7 && var2 >= var8 && var1 < var7 + 32 && var2 < var8 + 32) {
|
||||
Client.dragItemSlotDestination = var6;
|
||||
if(var1 >= var6 && var2 >= var7 && var1 < var6 + 32 && var2 < var7 + 32) {
|
||||
Client.dragItemSlotDestination = var13;
|
||||
UserComparator6.__fg_jh = var0;
|
||||
if(var0.itemIds[var6] > 0) {
|
||||
ItemDefinition var9 = Skills.getItemDefinition(var0.itemIds[var6] - 1);
|
||||
if(var0.itemIds[var13] > 0) {
|
||||
ItemDefinition var8 = Skills.getItemDefinition(var0.itemIds[var13] - 1);
|
||||
if(Client.isItemSelected == 1 && WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) {
|
||||
if(var0.id != ServerPacket.selectedItemWidget || var6 != HealthBarDefinition.selectedItemSlot) {
|
||||
Tiles.method1106("Use", Client.selectedItemName + " -> " + BufferedFile.colorStartTag(16748608) + var9.name, 31, var9.id, var6, var0.id);
|
||||
if(var0.id != ServerPacket.selectedItemWidget || var13 != HealthBarDefinition.selectedItemSlot) {
|
||||
Tiles.method1106("Use", Client.selectedItemName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var8.name, 31, var8.id, var13, var0.id);
|
||||
}
|
||||
} else if(Client.isSpellSelected && WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) {
|
||||
if((FloorDecoration.selectedSpellFlags & 16) == 16) {
|
||||
Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + BufferedFile.colorStartTag(16748608) + var9.name, 32, var9.id, var6, var0.id);
|
||||
Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + BufferedFile.colorStartTag(16748608) + var8.name, 32, var8.id, var13, var0.id);
|
||||
}
|
||||
} else {
|
||||
String[] var10 = var9.inventoryActions;
|
||||
int var11 = -1;
|
||||
String[] var9 = var8.inventoryActions;
|
||||
int var10 = -1;
|
||||
if(Client.shiftClickDrop && WorldMapEvent.method779()) {
|
||||
var11 = var9.getShiftClickIndex();
|
||||
var10 = var8.getShiftClickIndex();
|
||||
}
|
||||
|
||||
int var12;
|
||||
int var11;
|
||||
if(WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) {
|
||||
for(var12 = 4; var12 >= 3; --var12) {
|
||||
if(var11 != var12) {
|
||||
AccessFile.method2726(var0, var9, var6, var12, false);
|
||||
for(var11 = 4; var11 >= 3; --var11) {
|
||||
if(var10 != var11) {
|
||||
AccessFile.method2726(var0, var8, var13, var11, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(SecureRandomFuture.method2101(class1.getWidgetClickMask(var0))) {
|
||||
Tiles.method1106("Use", BufferedFile.colorStartTag(16748608) + var9.name, 38, var9.id, var6, var0.id);
|
||||
Tiles.method1106("Use", BufferedFile.colorStartTag(16748608) + var8.name, 38, var8.id, var13, var0.id);
|
||||
}
|
||||
|
||||
if(WorldMapAreaData.method708(class1.getWidgetClickMask(var0))) {
|
||||
for(var12 = 2; var12 >= 0; --var12) {
|
||||
if(var12 != var11) {
|
||||
AccessFile.method2726(var0, var9, var6, var12, false);
|
||||
for(var11 = 2; var11 >= 0; --var11) {
|
||||
if(var11 != var10) {
|
||||
AccessFile.method2726(var0, var8, var13, var11, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(var11 >= 0) {
|
||||
AccessFile.method2726(var0, var9, var6, var11, true);
|
||||
if(var10 >= 0) {
|
||||
AccessFile.method2726(var0, var8, var13, var10, true);
|
||||
}
|
||||
}
|
||||
|
||||
var10 = var0.itemActions;
|
||||
if(var10 != null) {
|
||||
for(var12 = 4; var12 >= 0; --var12) {
|
||||
if(var10[var12] != null) {
|
||||
byte var13 = 0;
|
||||
if(var12 == 0) {
|
||||
var13 = 39;
|
||||
var9 = var0.itemActions;
|
||||
if(var9 != null) {
|
||||
for(var11 = 4; var11 >= 0; --var11) {
|
||||
if(var9[var11] != null) {
|
||||
byte var12 = 0;
|
||||
if(var11 == 0) {
|
||||
var12 = 39;
|
||||
}
|
||||
|
||||
if(var12 == 1) {
|
||||
var13 = 40;
|
||||
if(var11 == 1) {
|
||||
var12 = 40;
|
||||
}
|
||||
|
||||
if(var12 == 2) {
|
||||
var13 = 41;
|
||||
if(var11 == 2) {
|
||||
var12 = 41;
|
||||
}
|
||||
|
||||
if(var12 == 3) {
|
||||
var13 = 42;
|
||||
if(var11 == 3) {
|
||||
var12 = 42;
|
||||
}
|
||||
|
||||
if(var12 == 4) {
|
||||
var13 = 43;
|
||||
if(var11 == 4) {
|
||||
var12 = 43;
|
||||
}
|
||||
|
||||
Tiles.method1106(var10[var12], BufferedFile.colorStartTag(16748608) + var9.name, var13, var9.id, var6, var0.id);
|
||||
Tiles.method1106(var9[var11], BufferedFile.colorStartTag(16748608) + var8.name, var12, var8.id, var13, var0.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Tiles.method1106("Examine", BufferedFile.colorStartTag(16748608) + var9.name, 1005, var9.id, var6, var0.id);
|
||||
Tiles.method1106("Examine", BufferedFile.colorStartTag(16748608) + var8.name, 1005, var8.id, var13, var0.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
++var6;
|
||||
++var13;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,14 +318,13 @@ public class ChatChannel {
|
||||
if(var0.isIf3) {
|
||||
if(Client.isSpellSelected) {
|
||||
if(WorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) {
|
||||
Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + var0.dataText, 58, 0, var0.childIndex, var0.id);
|
||||
Tiles.method1106(Client.selectedSpellActionName, Client.selectedSpellName + " " + "->" + " " + var0.dataText, 58, 0, var0.childIndex, var0.id);
|
||||
}
|
||||
} else {
|
||||
String var14;
|
||||
for(var6 = 9; var6 >= 5; --var6) {
|
||||
var14 = GameShell.method1060(var0, var6);
|
||||
for(var13 = 9; var13 >= 5; --var13) {
|
||||
String var14 = GameShell.method1060(var0, var13);
|
||||
if(var14 != null) {
|
||||
Tiles.method1106(var14, var0.dataText, 1007, var6 + 1, var0.childIndex, var0.id);
|
||||
Tiles.method1106(var14, var0.dataText, 1007, var13 + 1, var0.childIndex, var0.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -335,15 +334,15 @@ public class ChatChannel {
|
||||
}
|
||||
|
||||
for(var4 = 4; var4 >= 0; --var4) {
|
||||
var14 = GameShell.method1060(var0, var4);
|
||||
if(var14 != null) {
|
||||
class16.insertMenuItem(var14, var0.dataText, 57, var4 + 1, var0.childIndex, var0.id, var0.__fz);
|
||||
String var15 = GameShell.method1060(var0, var4);
|
||||
if(var15 != null) {
|
||||
class16.insertMenuItem(var15, var0.dataText, 57, var4 + 1, var0.childIndex, var0.id, var0.__fz);
|
||||
}
|
||||
}
|
||||
|
||||
var5 = class1.getWidgetClickMask(var0);
|
||||
boolean var15 = (var5 & 1) != 0;
|
||||
if(var15) {
|
||||
boolean var16 = (var5 & 1) != 0;
|
||||
if(var16) {
|
||||
Tiles.method1106("Continue", "", 30, 0, var0.childIndex, var0.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,49 +100,49 @@ public class ClanChat extends UserList {
|
||||
public final void readUpdate(Buffer var1) {
|
||||
this.__x_473(var1.readStringCp1252NullTerminated());
|
||||
long var2 = var1.readLong();
|
||||
long var4 = var2;
|
||||
String var6;
|
||||
long var5 = var2;
|
||||
String var4;
|
||||
int var7;
|
||||
if(var2 > 0L && var2 < 6582952005840035281L) {
|
||||
if(var2 % 37L == 0L) {
|
||||
var6 = null;
|
||||
var4 = null;
|
||||
} else {
|
||||
var7 = 0;
|
||||
|
||||
for(long var8 = var2; var8 != 0L; var8 /= 37L) {
|
||||
for(long var13 = var2; var13 != 0L; var13 /= 37L) {
|
||||
++var7;
|
||||
}
|
||||
|
||||
StringBuilder var11 = new StringBuilder(var7);
|
||||
StringBuilder var15 = new StringBuilder(var7);
|
||||
|
||||
while(var4 != 0L) {
|
||||
long var9 = var4;
|
||||
var4 /= 37L;
|
||||
var11.append(class306.base37Table[(int)(var9 - 37L * var4)]);
|
||||
while(var5 != 0L) {
|
||||
long var11 = var5;
|
||||
var5 /= 37L;
|
||||
var15.append(class306.base37Table[(int)(var11 - 37L * var5)]);
|
||||
}
|
||||
|
||||
var6 = var11.reverse().toString();
|
||||
var4 = var15.reverse().toString();
|
||||
}
|
||||
} else {
|
||||
var6 = null;
|
||||
var4 = null;
|
||||
}
|
||||
|
||||
this.__q_472(var6);
|
||||
this.__q_472(var4);
|
||||
this.__k = var1.readByte();
|
||||
var7 = var1.readUnsignedByte();
|
||||
if(var7 != 255) {
|
||||
this.clear();
|
||||
|
||||
for(int var12 = 0; var12 < var7; ++var12) {
|
||||
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType));
|
||||
for(int var8 = 0; var8 < var7; ++var8) {
|
||||
ClanMate var9 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType));
|
||||
int var10 = var1.__ag_302();
|
||||
var13.set(var10, ++this.__i - 1);
|
||||
var13.rank = var1.readByte();
|
||||
var9.set(var10, ++this.__i - 1);
|
||||
var9.rank = var1.readByte();
|
||||
var1.readStringCp1252NullTerminated();
|
||||
this.__cp_475(var13);
|
||||
this.__cp_475(var9);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ObfuscatedName("a")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -626,29 +626,6 @@ public class ClientPacket implements ClientPacketMarker {
|
||||
@Export("length")
|
||||
final int length;
|
||||
|
||||
ClientPacket(int var1, int var2) {
|
||||
this.id = var1;
|
||||
this.length = var2;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(B)[Lis;",
|
||||
garbageValue = "-26"
|
||||
)
|
||||
public static StudioGame[] method3664() {
|
||||
return new StudioGame[]{StudioGame.__is_q, StudioGame.__is_m, StudioGame.__is_o, StudioGame.__is_u, StudioGame.__is_f, StudioGame.__is_w};
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(B)[Lcj;",
|
||||
garbageValue = "-43"
|
||||
)
|
||||
static AttackOption[] method3665() {
|
||||
return new AttackOption[]{AttackOption.AttackOption_hidden, AttackOption.AttackOption_leftClickWhereAvailable, AttackOption.AttackOption_alwaysRightClick, AttackOption.AttackOption_dependsOnCombatLevels};
|
||||
}
|
||||
|
||||
static {
|
||||
__gs_m = new ClientPacket(0, 8);
|
||||
__gs_f = new ClientPacket(1, 3);
|
||||
@@ -751,4 +728,27 @@ public class ClientPacket implements ClientPacketMarker {
|
||||
__gs_cc = new ClientPacket(98, 8);
|
||||
__gs_ci = new ClientPacket(99, 7);
|
||||
}
|
||||
|
||||
ClientPacket(int var1, int var2) {
|
||||
this.id = var1;
|
||||
this.length = var2;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(B)[Lis;",
|
||||
garbageValue = "-26"
|
||||
)
|
||||
public static StudioGame[] method3664() {
|
||||
return new StudioGame[]{StudioGame.__is_q, StudioGame.__is_m, StudioGame.__is_o, StudioGame.__is_u, StudioGame.__is_f, StudioGame.__is_w};
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(B)[Lcj;",
|
||||
garbageValue = "-43"
|
||||
)
|
||||
static AttackOption[] method3665() {
|
||||
return new AttackOption[]{AttackOption.AttackOption_hidden, AttackOption.AttackOption_leftClickWhereAvailable, AttackOption.AttackOption_alwaysRightClick, AttackOption.AttackOption_dependsOnCombatLevels};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,50 +136,6 @@ public class ClientParameter {
|
||||
@Export("id")
|
||||
public final String id;
|
||||
|
||||
ClientParameter(String var1, String var2) {
|
||||
this.id = var2;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(I)Z",
|
||||
garbageValue = "-1723515140"
|
||||
)
|
||||
@Export("loadWorlds")
|
||||
static boolean loadWorlds() {
|
||||
try {
|
||||
if(FriendLoginUpdate.__kn_x == null) {
|
||||
FriendLoginUpdate.__kn_x = TriBool.urlRequester.request(new URL(ServerBuild.worldsUrl));
|
||||
} else if(FriendLoginUpdate.__kn_x.isDone()) {
|
||||
byte[] var0 = FriendLoginUpdate.__kn_x.getResponse();
|
||||
Buffer var1 = new Buffer(var0);
|
||||
var1.readInt();
|
||||
World.worldsCount = var1.__ag_302();
|
||||
ItemContainer.worlds = new World[World.worldsCount];
|
||||
|
||||
World var2;
|
||||
for(int var3 = 0; var3 < World.worldsCount; var2.index = var3++) {
|
||||
var2 = ItemContainer.worlds[var3] = new World();
|
||||
var2.id = var1.__ag_302();
|
||||
var2.properties = var1.readInt();
|
||||
var2.host = var1.readStringCp1252NullTerminated();
|
||||
var2.activity = var1.readStringCp1252NullTerminated();
|
||||
var2.location = var1.readUnsignedByte();
|
||||
var2.population = var1.__aq_303();
|
||||
}
|
||||
|
||||
MilliClock.method3400(ItemContainer.worlds, 0, ItemContainer.worlds.length - 1, World.__bt_e, World.__bt_l);
|
||||
FriendLoginUpdate.__kn_x = null;
|
||||
return true;
|
||||
}
|
||||
} catch (Exception var4) {
|
||||
var4.printStackTrace();
|
||||
FriendLoginUpdate.__kn_x = null;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static {
|
||||
__ji_m = new ClientParameter("8", "8");
|
||||
__ji_f = new ClientParameter("15", "15");
|
||||
@@ -201,4 +157,48 @@ public class ClientParameter {
|
||||
__ji_s = new ClientParameter("2", "2");
|
||||
__ji_t = new ClientParameter("19", "19");
|
||||
}
|
||||
|
||||
ClientParameter(String var1, String var2) {
|
||||
this.id = var2;
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@ObfuscatedSignature(
|
||||
signature = "(I)Z",
|
||||
garbageValue = "-1723515140"
|
||||
)
|
||||
@Export("loadWorlds")
|
||||
static boolean loadWorlds() {
|
||||
try {
|
||||
if(FriendLoginUpdate.__kn_x == null) {
|
||||
FriendLoginUpdate.__kn_x = TriBool.urlRequester.request(new URL(ServerBuild.worldsUrl));
|
||||
} else if(FriendLoginUpdate.__kn_x.isDone()) {
|
||||
byte[] var0 = FriendLoginUpdate.__kn_x.getResponse();
|
||||
Buffer var1 = new Buffer(var0);
|
||||
var1.readInt();
|
||||
World.worldsCount = var1.__ag_302();
|
||||
ItemContainer.worlds = new World[World.worldsCount];
|
||||
|
||||
World var3;
|
||||
for(int var2 = 0; var2 < World.worldsCount; var3.index = var2++) {
|
||||
var3 = ItemContainer.worlds[var2] = new World();
|
||||
var3.id = var1.__ag_302();
|
||||
var3.properties = var1.readInt();
|
||||
var3.host = var1.readStringCp1252NullTerminated();
|
||||
var3.activity = var1.readStringCp1252NullTerminated();
|
||||
var3.location = var1.readUnsignedByte();
|
||||
var3.population = var1.__aq_303();
|
||||
}
|
||||
|
||||
MilliClock.method3400(ItemContainer.worlds, 0, ItemContainer.worlds.length - 1, World.__bt_e, World.__bt_l);
|
||||
FriendLoginUpdate.__kn_x = null;
|
||||
return true;
|
||||
}
|
||||
} catch (Exception var4) {
|
||||
var4.printStackTrace();
|
||||
FriendLoginUpdate.__kn_x = null;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,10 @@ public class ClientPreferences {
|
||||
@Export("parameters")
|
||||
LinkedHashMap parameters;
|
||||
|
||||
static {
|
||||
__bf_m = 6;
|
||||
}
|
||||
|
||||
ClientPreferences() {
|
||||
this.windowMode = 1;
|
||||
this.rememberedUsername = null;
|
||||
@@ -154,10 +158,5 @@ public class ClientPreferences {
|
||||
if(GroundItemPile.loadWidgetGroup(var0)) {
|
||||
NetFileRequest.method4555(Widget.widgets[var0], -1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
__bf_m = 6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,22 +41,22 @@ public abstract class Clock {
|
||||
++var2;
|
||||
}
|
||||
|
||||
char var4;
|
||||
StringBuilder var8;
|
||||
for(var8 = new StringBuilder(var2); var0 != 0L; var8.append(var4)) {
|
||||
long var5 = var0;
|
||||
StringBuilder var5;
|
||||
char var8;
|
||||
for(var5 = new StringBuilder(var2); var0 != 0L; var5.append(var8)) {
|
||||
long var6 = var0;
|
||||
var0 /= 37L;
|
||||
var4 = class306.base37Table[(int)(var5 - 37L * var0)];
|
||||
if(var4 == '_') {
|
||||
int var7 = var8.length() - 1;
|
||||
var8.setCharAt(var7, Character.toUpperCase(var8.charAt(var7)));
|
||||
var4 = 160;
|
||||
var8 = class306.base37Table[(int)(var6 - 37L * var0)];
|
||||
if(var8 == '_') {
|
||||
int var9 = var5.length() - 1;
|
||||
var5.setCharAt(var9, Character.toUpperCase(var5.charAt(var9)));
|
||||
var8 = 160;
|
||||
}
|
||||
}
|
||||
|
||||
var8.reverse();
|
||||
var8.setCharAt(0, Character.toUpperCase(var8.charAt(0)));
|
||||
return var8.toString();
|
||||
var5.reverse();
|
||||
var5.setCharAt(0, Character.toUpperCase(var5.charAt(0)));
|
||||
return var5.toString();
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
|
||||
@@ -25,52 +25,51 @@ public class Decimator {
|
||||
|
||||
public Decimator(int var1, int var2) {
|
||||
if(var2 != var1) {
|
||||
int var3 = var1;
|
||||
int var4 = var2;
|
||||
int var4 = var1;
|
||||
int var5 = var2;
|
||||
if(var2 > var1) {
|
||||
var3 = var2;
|
||||
var4 = var1;
|
||||
var4 = var2;
|
||||
var5 = var1;
|
||||
}
|
||||
|
||||
int var5;
|
||||
while(var4 != 0) {
|
||||
var5 = var3 % var4;
|
||||
var3 = var4;
|
||||
while(var5 != 0) {
|
||||
int var6 = var4 % var5;
|
||||
var4 = var5;
|
||||
var5 = var6;
|
||||
}
|
||||
|
||||
var1 /= var3;
|
||||
var2 /= var3;
|
||||
var1 /= var4;
|
||||
var2 /= var4;
|
||||
this.inputRate = var1;
|
||||
this.outputRate = var2;
|
||||
this.table = new int[var1][14];
|
||||
|
||||
for(var5 = 0; var5 < var1; ++var5) {
|
||||
int[] var6 = this.table[var5];
|
||||
double var7 = (double)var5 / (double)var1 + 6.0D;
|
||||
int var9 = (int)Math.floor(var7 - 7.0D + 1.0D);
|
||||
if(var9 < 0) {
|
||||
var9 = 0;
|
||||
for(int var7 = 0; var7 < var1; ++var7) {
|
||||
int[] var8 = this.table[var7];
|
||||
double var9 = (double)var7 / (double)var1 + 6.0D;
|
||||
int var11 = (int)Math.floor(var9 - 7.0D + 1.0D);
|
||||
if(var11 < 0) {
|
||||
var11 = 0;
|
||||
}
|
||||
|
||||
int var10 = (int)Math.ceil(var7 + 7.0D);
|
||||
if(var10 > 14) {
|
||||
var10 = 14;
|
||||
int var12 = (int)Math.ceil(var9 + 7.0D);
|
||||
if(var12 > 14) {
|
||||
var12 = 14;
|
||||
}
|
||||
|
||||
for(double var11 = (double)var2 / (double)var1; var9 < var10; ++var9) {
|
||||
double var13 = ((double)var9 - var7) * 3.141592653589793D;
|
||||
double var15 = var11;
|
||||
if(var13 < -1.0E-4D || var13 > 1.0E-4D) {
|
||||
var15 = var11 * (Math.sin(var13) / var13);
|
||||
for(double var13 = (double)var2 / (double)var1; var11 < var12; ++var11) {
|
||||
double var15 = ((double)var11 - var9) * 3.141592653589793D;
|
||||
double var17 = var13;
|
||||
if(var15 < -1.0E-4D || var15 > 1.0E-4D) {
|
||||
var17 = var13 * (Math.sin(var15) / var15);
|
||||
}
|
||||
|
||||
var15 *= 0.54D + 0.46D * Math.cos(((double)var9 - var7) * 0.2243994752564138D);
|
||||
var6[var9] = (int)Math.floor(0.5D + var15 * 65536.0D);
|
||||
var17 *= 0.54D + 0.46D * Math.cos(((double)var11 - var9) * 0.2243994752564138D);
|
||||
var8[var11] = (int)Math.floor(0.5D + var17 * 65536.0D);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ObfuscatedName("m")
|
||||
@@ -154,7 +153,6 @@ public class Decimator {
|
||||
)
|
||||
public static final boolean method2490() {
|
||||
KeyHandler var0 = KeyHandler.KeyHandler_instance;
|
||||
KeyHandler var1 = KeyHandler.KeyHandler_instance;
|
||||
synchronized(KeyHandler.KeyHandler_instance) {
|
||||
if(KeyHandler.__an_ct == KeyHandler.__an_cc) {
|
||||
return false;
|
||||
@@ -181,39 +179,39 @@ public class Decimator {
|
||||
int var6;
|
||||
int var7;
|
||||
int var8;
|
||||
int var9;
|
||||
int var10;
|
||||
int var11;
|
||||
int var12;
|
||||
int var13;
|
||||
int var16;
|
||||
int var17;
|
||||
if(!ViewportMouse.ViewportMouse_false0) {
|
||||
var5 = Scene.Scene_cameraPitchSine;
|
||||
var6 = Scene.Scene_cameraPitchCosine;
|
||||
var7 = Scene.Scene_cameraYawSine;
|
||||
var8 = Scene.Scene_cameraYawCosine;
|
||||
byte var14 = 50;
|
||||
short var15 = 3500;
|
||||
var9 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var14 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
var10 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var14 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
var11 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var15 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
int var16 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var15 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
int var17 = Rasterizer3D.method3007(var10, var14, var6, var5);
|
||||
var12 = Rasterizer3D.method3008(var10, var14, var6, var5);
|
||||
var10 = var17;
|
||||
var17 = Rasterizer3D.method3007(var16, var15, var6, var5);
|
||||
var13 = Rasterizer3D.method3008(var16, var15, var6, var5);
|
||||
var16 = var17;
|
||||
var17 = Rasterizer3D.method3005(var9, var12, var8, var7);
|
||||
var12 = Rasterizer3D.method3006(var9, var12, var8, var7);
|
||||
var9 = var17;
|
||||
var17 = Rasterizer3D.method3005(var11, var13, var8, var7);
|
||||
var13 = Rasterizer3D.method3006(var11, var13, var8, var7);
|
||||
AccessFile.__dk_o = (var9 + var17) / 2;
|
||||
ViewportMouse.__dm_u = (var16 + var10) / 2;
|
||||
ViewportMouse.__dm_g = (var13 + var12) / 2;
|
||||
ViewportMouse.__dm_l = (var17 - var9) / 2;
|
||||
class311.__ka_e = (var16 - var10) / 2;
|
||||
Skeleton.__ek_x = (var13 - var12) / 2;
|
||||
byte var9 = 50;
|
||||
short var10 = 3500;
|
||||
var11 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var9 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
var12 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var9 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
var13 = (ViewportMouse.ViewportMouse_x - Rasterizer3D.Rasterizer3D_clipMidX) * var10 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
int var14 = (ViewportMouse.ViewportMouse_y - Rasterizer3D.Rasterizer3D_clipMidY) * var10 / Rasterizer3D.Rasterizer3D_zoom;
|
||||
int var15 = Rasterizer3D.method3007(var12, var9, var6, var5);
|
||||
var16 = Rasterizer3D.method3008(var12, var9, var6, var5);
|
||||
var12 = var15;
|
||||
var15 = Rasterizer3D.method3007(var14, var10, var6, var5);
|
||||
var17 = Rasterizer3D.method3008(var14, var10, var6, var5);
|
||||
var14 = var15;
|
||||
var15 = Rasterizer3D.method3005(var11, var16, var8, var7);
|
||||
var16 = Rasterizer3D.method3006(var11, var16, var8, var7);
|
||||
var11 = var15;
|
||||
var15 = Rasterizer3D.method3005(var13, var17, var8, var7);
|
||||
var17 = Rasterizer3D.method3006(var13, var17, var8, var7);
|
||||
AccessFile.__dk_o = (var11 + var15) / 2;
|
||||
ViewportMouse.__dm_u = (var14 + var12) / 2;
|
||||
ViewportMouse.__dm_g = (var17 + var16) / 2;
|
||||
ViewportMouse.__dm_l = (var15 - var11) / 2;
|
||||
class311.__ka_e = (var14 - var12) / 2;
|
||||
Skeleton.__ek_x = (var17 - var16) / 2;
|
||||
GraphicsObject.__bw_d = Math.abs(ViewportMouse.__dm_l);
|
||||
ViewportMouse.__dm_k = Math.abs(class311.__ka_e);
|
||||
class248.__iu_n = Math.abs(Skeleton.__ek_x);
|
||||
@@ -223,12 +221,12 @@ public class Decimator {
|
||||
var6 = var2 + var0.yMid;
|
||||
var7 = var3 + var0.zMid;
|
||||
var8 = var0.xMidOffset;
|
||||
var12 = var0.yMidOffset;
|
||||
var13 = var0.zMidOffset;
|
||||
var9 = AccessFile.__dk_o - var5;
|
||||
var10 = ViewportMouse.__dm_u - var6;
|
||||
var11 = ViewportMouse.__dm_g - var7;
|
||||
return Math.abs(var9) > var8 + GraphicsObject.__bw_d?false:(Math.abs(var10) > var12 + ViewportMouse.__dm_k?false:(Math.abs(var11) > var13 + class248.__iu_n?false:(Math.abs(var11 * class311.__ka_e - var10 * Skeleton.__ek_x) > var13 * ViewportMouse.__dm_k + var12 * class248.__iu_n?false:(Math.abs(var9 * Skeleton.__ek_x - var11 * ViewportMouse.__dm_l) > var8 * class248.__iu_n + var13 * GraphicsObject.__bw_d?false:Math.abs(var10 * ViewportMouse.__dm_l - var9 * class311.__ka_e) <= var8 * ViewportMouse.__dm_k + var12 * GraphicsObject.__bw_d))));
|
||||
var16 = var0.yMidOffset;
|
||||
var17 = var0.zMidOffset;
|
||||
var11 = AccessFile.__dk_o - var5;
|
||||
var12 = ViewportMouse.__dm_u - var6;
|
||||
var13 = ViewportMouse.__dm_g - var7;
|
||||
return Math.abs(var11) > var8 + GraphicsObject.__bw_d?false:(Math.abs(var12) > var16 + ViewportMouse.__dm_k?false:(Math.abs(var13) > var17 + class248.__iu_n?false:(Math.abs(var13 * class311.__ka_e - var12 * Skeleton.__ek_x) > var17 * ViewportMouse.__dm_k + var16 * class248.__iu_n?false:(Math.abs(var11 * Skeleton.__ek_x - var13 * ViewportMouse.__dm_l) > var8 * class248.__iu_n + var17 * GraphicsObject.__bw_d?false:Math.abs(var12 * ViewportMouse.__dm_l - var11 * class311.__ka_e) <= var8 * ViewportMouse.__dm_k + var16 * GraphicsObject.__bw_d))));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,14 +26,14 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider {
|
||||
String var2;
|
||||
try {
|
||||
var2 = System.getProperty("os.arch").toLowerCase();
|
||||
} catch (Exception var25) {
|
||||
} catch (Exception var35) {
|
||||
var2 = "";
|
||||
}
|
||||
|
||||
String var3;
|
||||
try {
|
||||
var3 = System.getProperty("os.version").toLowerCase();
|
||||
} catch (Exception var24) {
|
||||
} catch (Exception var34) {
|
||||
var3 = "";
|
||||
}
|
||||
|
||||
@@ -43,15 +43,15 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider {
|
||||
try {
|
||||
var4 = System.getProperty("java.vendor");
|
||||
var5 = System.getProperty("java.version");
|
||||
} catch (Exception var23) {
|
||||
} catch (Exception var33) {
|
||||
;
|
||||
}
|
||||
|
||||
boolean var6;
|
||||
boolean var29;
|
||||
if(!var2.startsWith("amd64") && !var2.startsWith("x86_64")) {
|
||||
var6 = false;
|
||||
var29 = false;
|
||||
} else {
|
||||
var6 = true;
|
||||
var29 = true;
|
||||
}
|
||||
|
||||
byte var7 = 0;
|
||||
@@ -129,11 +129,11 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider {
|
||||
var10 = var10 * 10 + (var11 - '0');
|
||||
++var9;
|
||||
}
|
||||
} catch (Exception var28) {
|
||||
} catch (Exception var38) {
|
||||
;
|
||||
}
|
||||
|
||||
int var29 = var10;
|
||||
int var39 = var10;
|
||||
var9 = var5.indexOf(46, 2) + 1;
|
||||
var10 = 0;
|
||||
|
||||
@@ -147,11 +147,11 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider {
|
||||
var10 = var12 - '0' + var10 * 10;
|
||||
++var9;
|
||||
}
|
||||
} catch (Exception var27) {
|
||||
} catch (Exception var37) {
|
||||
;
|
||||
}
|
||||
|
||||
int var30 = var10;
|
||||
int var40 = var10;
|
||||
var9 = var5.indexOf(95, 4) + 1;
|
||||
var10 = 0;
|
||||
|
||||
@@ -165,27 +165,27 @@ public class DesktopPlatformInfoProvider implements PlatformInfoProvider {
|
||||
var10 = var13 - '0' + var10 * 10;
|
||||
++var9;
|
||||
}
|
||||
} catch (Exception var26) {
|
||||
} catch (Exception var36) {
|
||||
;
|
||||
}
|
||||
|
||||
Runtime.getRuntime();
|
||||
int var31 = (int)((long)((new Random()).nextInt(31457280) + 230686720) / 1048576L) + 1;
|
||||
int var14;
|
||||
if(var29 > 3) {
|
||||
var14 = Runtime.getRuntime().availableProcessors();
|
||||
int var15 = (int)((long)((new Random()).nextInt(31457280) + 230686720) / 1048576L) + 1;
|
||||
int var16;
|
||||
if(var39 > 3) {
|
||||
var16 = Runtime.getRuntime().availableProcessors();
|
||||
} else {
|
||||
var14 = 0;
|
||||
var16 = 0;
|
||||
}
|
||||
|
||||
byte var15 = 0;
|
||||
String var16 = "";
|
||||
String var17 = "";
|
||||
byte var17 = 0;
|
||||
String var18 = "";
|
||||
String var19 = "";
|
||||
String var20 = "";
|
||||
String var21 = "";
|
||||
int[] var22 = new int[3];
|
||||
return new PlatformInfo(var1, var6, var7, var8, var29, var30, var10, false, var31, var14, var15, 0, var16, var17, var18, var19, 0, 0, 0, 0, var20, var21, var22, 0, "");
|
||||
String var22 = "";
|
||||
String var23 = "";
|
||||
int[] var28 = new int[3];
|
||||
return new PlatformInfo(var1, var29, var7, var8, var39, var40, var10, false, var15, var16, var17, 0, var18, var19, var20, var21, 0, 0, 0, 0, var22, var23, var28, 0, "");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import javax.sound.sampled.AudioFormat;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.DataLine.Info;
|
||||
import javax.sound.sampled.LineUnavailableException;
|
||||
import javax.sound.sampled.SourceDataLine;
|
||||
import javax.sound.sampled.DataLine.Info;
|
||||
import net.runelite.mapping.Export;
|
||||
import net.runelite.mapping.Implements;
|
||||
import net.runelite.mapping.ObfuscatedGetter;
|
||||
@@ -53,20 +53,19 @@ public class DevicePcmPlayer extends PcmPlayer {
|
||||
this.line.start();
|
||||
this.capacity2 = var1;
|
||||
} catch (LineUnavailableException var5) {
|
||||
int var3 = (var1 >>> 1 & 1431655765) + (var1 & 1431655765);
|
||||
var3 = (var3 >>> 2 & 858993459) + (var3 & 858993459);
|
||||
var3 = (var3 >>> 4) + var3 & 252645135;
|
||||
var3 += var3 >>> 8;
|
||||
var3 += var3 >>> 16;
|
||||
int var4 = var3 & 255;
|
||||
if(var4 == 1) {
|
||||
int var4 = (var1 >>> 1 & 1431655765) + (var1 & 1431655765);
|
||||
var4 = (var4 >>> 2 & 858993459) + (var4 & 858993459);
|
||||
var4 = (var4 >>> 4) + var4 & 252645135;
|
||||
var4 += var4 >>> 8;
|
||||
var4 += var4 >>> 16;
|
||||
int var3 = var4 & 255;
|
||||
if(var3 != 1) {
|
||||
this.open(World.method1759(var1));
|
||||
} else {
|
||||
this.line = null;
|
||||
throw var5;
|
||||
}
|
||||
|
||||
this.open(World.method1759(var1));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("q")
|
||||
|
||||
@@ -219,43 +219,43 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
|
||||
int var17;
|
||||
int var18;
|
||||
int var19;
|
||||
int var20;
|
||||
int var21;
|
||||
int var22;
|
||||
int var30;
|
||||
if(var10.type == 2) {
|
||||
var15 = var2;
|
||||
var16 = var3;
|
||||
var17 = var4;
|
||||
var18 = var5;
|
||||
} else if(var10.type == 9) {
|
||||
var22 = var12;
|
||||
var19 = var13;
|
||||
var20 = var12 + var10.width;
|
||||
var21 = var13 + var10.height;
|
||||
if(var20 < var12) {
|
||||
var22 = var20;
|
||||
var20 = var12;
|
||||
var30 = var12;
|
||||
var20 = var13;
|
||||
var21 = var12 + var10.width;
|
||||
var22 = var13 + var10.height;
|
||||
if(var21 < var12) {
|
||||
var30 = var21;
|
||||
var21 = var12;
|
||||
}
|
||||
|
||||
if(var21 < var13) {
|
||||
var19 = var21;
|
||||
var21 = var13;
|
||||
if(var22 < var13) {
|
||||
var20 = var22;
|
||||
var22 = var13;
|
||||
}
|
||||
|
||||
++var20;
|
||||
++var21;
|
||||
var15 = var22 > var2?var22:var2;
|
||||
var16 = var19 > var3?var19:var3;
|
||||
var17 = var20 < var4?var20:var4;
|
||||
var18 = var21 < var5?var21:var5;
|
||||
++var22;
|
||||
var15 = var30 > var2?var30:var2;
|
||||
var16 = var20 > var3?var20:var3;
|
||||
var17 = var21 < var4?var21:var4;
|
||||
var18 = var22 < var5?var22:var5;
|
||||
} else {
|
||||
var22 = var12 + var10.width;
|
||||
var19 = var13 + var10.height;
|
||||
var30 = var12 + var10.width;
|
||||
var20 = var13 + var10.height;
|
||||
var15 = var12 > var2?var12:var2;
|
||||
var16 = var13 > var3?var13:var3;
|
||||
var17 = var22 < var4?var22:var4;
|
||||
var18 = var19 < var5?var19:var5;
|
||||
var17 = var30 < var4?var30:var4;
|
||||
var18 = var20 < var5?var20:var5;
|
||||
}
|
||||
|
||||
if(!var10.isIf3 || var15 < var17 && var16 < var18) {
|
||||
@@ -265,14 +265,14 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
var13 += 15;
|
||||
fontPlain12.drawRightAligned("Fps:" + GameShell.fps, var12 + var10.width, var13, 16776960, -1);
|
||||
var13 += 15;
|
||||
Runtime var34 = Runtime.getRuntime();
|
||||
var19 = (int)((var34.totalMemory() - var34.freeMemory()) / 1024L);
|
||||
var20 = 16776960;
|
||||
if(var19 > 327680 && !Client.isLowDetail) {
|
||||
var20 = 16711680;
|
||||
Runtime var38 = Runtime.getRuntime();
|
||||
var20 = (int)((var38.totalMemory() - var38.freeMemory()) / 1024L);
|
||||
var21 = 16776960;
|
||||
if(var20 > 327680 && !Client.isLowDetail) {
|
||||
var21 = 16711680;
|
||||
}
|
||||
|
||||
fontPlain12.drawRightAligned("Mem:" + var19 + "k", var12 + var10.width, var13, var20, -1);
|
||||
fontPlain12.drawRightAligned("Mem:" + var20 + "k", var12 + var10.width, var13, var21, -1);
|
||||
var13 += 15;
|
||||
}
|
||||
continue;
|
||||
@@ -332,9 +332,9 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
drawWidgetGroup(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
|
||||
}
|
||||
|
||||
WidgetGroupParent var23 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var10.id);
|
||||
if(var23 != null) {
|
||||
Interpreter.drawWidgets(var23.group, var15, var16, var17, var18, var12, var13, var11);
|
||||
WidgetGroupParent var19 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var10.id);
|
||||
if(var19 != null) {
|
||||
Interpreter.drawWidgets(var19.group, var15, var16, var17, var18, var12, var13, var11);
|
||||
}
|
||||
|
||||
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5);
|
||||
@@ -347,45 +347,45 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
}
|
||||
|
||||
if(var10.type != 1) {
|
||||
int var23;
|
||||
int var24;
|
||||
int var25;
|
||||
int var26;
|
||||
int var33;
|
||||
if(var10.type == 2) {
|
||||
var22 = 0;
|
||||
var30 = 0;
|
||||
|
||||
for(var19 = 0; var19 < var10.rawHeight; ++var19) {
|
||||
for(var20 = 0; var20 < var10.rawWidth; ++var20) {
|
||||
var21 = var12 + var20 * (var10.paddingX + 32);
|
||||
var33 = var13 + var19 * (var10.paddingY + 32);
|
||||
if(var22 < 20) {
|
||||
var21 += var10.inventoryXOffsets[var22];
|
||||
var33 += var10.inventoryYOffsets[var22];
|
||||
for(var20 = 0; var20 < var10.rawHeight; ++var20) {
|
||||
for(var21 = 0; var21 < var10.rawWidth; ++var21) {
|
||||
var22 = var12 + var21 * (var10.paddingX + 32);
|
||||
var23 = var13 + var20 * (var10.paddingY + 32);
|
||||
if(var30 < 20) {
|
||||
var22 += var10.inventoryXOffsets[var30];
|
||||
var23 += var10.inventoryYOffsets[var30];
|
||||
}
|
||||
|
||||
if(var10.itemIds[var22] <= 0) {
|
||||
if(var10.inventorySprites != null && var22 < 20) {
|
||||
Sprite var36 = var10.getInventorySprite(var22);
|
||||
if(var36 != null) {
|
||||
var36.drawAt2(var21, var33);
|
||||
if(var10.itemIds[var30] <= 0) {
|
||||
if(var10.inventorySprites != null && var30 < 20) {
|
||||
Sprite var42 = var10.getInventorySprite(var30);
|
||||
if(var42 != null) {
|
||||
var42.drawAt2(var22, var23);
|
||||
} else if(Widget.__ho_j) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
boolean var35 = false;
|
||||
boolean var46 = false;
|
||||
var26 = var10.itemIds[var22] - 1;
|
||||
if(var21 + 32 > var2 && var21 < var4 && var33 + 32 > var3 && var33 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||
Sprite var42;
|
||||
if(Client.isItemSelected == 1 && var22 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) {
|
||||
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 2, 0, 2, false);
|
||||
boolean var39 = false;
|
||||
boolean var40 = false;
|
||||
var26 = var10.itemIds[var30] - 1;
|
||||
if(var22 + 32 > var2 && var22 < var4 && var23 + 32 > var3 && var23 < var5 || var10 == dragInventoryWidget && var30 == Client.dragItemSlotSource) {
|
||||
Sprite var27;
|
||||
if(Client.isItemSelected == 1 && var30 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) {
|
||||
var27 = class226.getItemSprite(var26, var10.itemQuantities[var30], 2, 0, 2, false);
|
||||
} else {
|
||||
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 1, 3153952, 2, false);
|
||||
var27 = class226.getItemSprite(var26, var10.itemQuantities[var30], 1, 3153952, 2, false);
|
||||
}
|
||||
|
||||
if(var42 != null) {
|
||||
if(var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
|
||||
if(var27 != null) {
|
||||
if(var10 == dragInventoryWidget && var30 == Client.dragItemSlotSource) {
|
||||
var24 = MouseHandler.MouseHandler_x - Client.__client_ja;
|
||||
var25 = MouseHandler.MouseHandler_y - Client.__client_je;
|
||||
if(var24 < 5 && var24 > -5) {
|
||||
@@ -401,44 +401,44 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
var25 = 0;
|
||||
}
|
||||
|
||||
var42.__h_508(var21 + var24, var33 + var25, 128);
|
||||
var27.__h_508(var22 + var24, var23 + var25, 128);
|
||||
if(var1 != -1) {
|
||||
Widget var47 = var0[var1 & 65535];
|
||||
int var45;
|
||||
if(var33 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
|
||||
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var33 - var25) * Client.__client_gy / 3;
|
||||
if(var45 > Client.__client_gy * 10) {
|
||||
var45 = Client.__client_gy * 10;
|
||||
Widget var28 = var0[var1 & 65535];
|
||||
int var29;
|
||||
if(var23 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var28.scrollY > 0) {
|
||||
var29 = (Rasterizer2D.Rasterizer2D_yClipStart - var23 - var25) * Client.__client_gy / 3;
|
||||
if(var29 > Client.__client_gy * 10) {
|
||||
var29 = Client.__client_gy * 10;
|
||||
}
|
||||
|
||||
if(var45 > var47.scrollY) {
|
||||
var45 = var47.scrollY;
|
||||
if(var29 > var28.scrollY) {
|
||||
var29 = var28.scrollY;
|
||||
}
|
||||
|
||||
var47.scrollY -= var45;
|
||||
Client.__client_je += var45;
|
||||
class22.method295(var47);
|
||||
var28.scrollY -= var29;
|
||||
Client.__client_je += var29;
|
||||
class22.method295(var28);
|
||||
}
|
||||
|
||||
if(var25 + var33 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
|
||||
var45 = (var33 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.__client_gy / 3;
|
||||
if(var45 > Client.__client_gy * 10) {
|
||||
var45 = Client.__client_gy * 10;
|
||||
if(var25 + var23 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var28.scrollY < var28.scrollHeight - var28.height) {
|
||||
var29 = (var23 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.__client_gy / 3;
|
||||
if(var29 > Client.__client_gy * 10) {
|
||||
var29 = Client.__client_gy * 10;
|
||||
}
|
||||
|
||||
if(var45 > var47.scrollHeight - var47.height - var47.scrollY) {
|
||||
var45 = var47.scrollHeight - var47.height - var47.scrollY;
|
||||
if(var29 > var28.scrollHeight - var28.height - var28.scrollY) {
|
||||
var29 = var28.scrollHeight - var28.height - var28.scrollY;
|
||||
}
|
||||
|
||||
var47.scrollY += var45;
|
||||
Client.__client_je -= var45;
|
||||
class22.method295(var47);
|
||||
var28.scrollY += var29;
|
||||
Client.__client_je -= var29;
|
||||
class22.method295(var28);
|
||||
}
|
||||
}
|
||||
} else if(var10 == BoundaryObject.__ej_jv && var22 == Client.__client_jz) {
|
||||
var42.__h_508(var21, var33, 128);
|
||||
} else if(var10 == BoundaryObject.__ej_jv && var30 == Client.__client_jz) {
|
||||
var27.__h_508(var22, var23, 128);
|
||||
} else {
|
||||
var42.drawAt2(var21, var33);
|
||||
var27.drawAt2(var22, var23);
|
||||
}
|
||||
} else {
|
||||
class22.method295(var10);
|
||||
@@ -446,19 +446,19 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
}
|
||||
}
|
||||
|
||||
++var22;
|
||||
++var30;
|
||||
}
|
||||
}
|
||||
} else if(var10.type == 3) {
|
||||
if(class238.runCs1(var10)) {
|
||||
var22 = var10.color2;
|
||||
var30 = var10.color2;
|
||||
if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor2 != 0) {
|
||||
var22 = var10.mouseOverColor2;
|
||||
var30 = var10.mouseOverColor2;
|
||||
}
|
||||
} else {
|
||||
var22 = var10.color;
|
||||
var30 = var10.color;
|
||||
if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor != 0) {
|
||||
var22 = var10.mouseOverColor;
|
||||
var30 = var10.mouseOverColor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -472,64 +472,64 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
break;
|
||||
default:
|
||||
if(var14 == 0) {
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var12, var13, var10.width, var10.height, var22);
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var12, var13, var10.width, var10.height, var30);
|
||||
} else {
|
||||
Rasterizer2D.Rasterizer2D_fillRectangleAlpha(var12, var13, var10.width, var10.height, var22, 256 - (var14 & 255));
|
||||
Rasterizer2D.Rasterizer2D_fillRectangleAlpha(var12, var13, var10.width, var10.height, var30, 256 - (var14 & 255));
|
||||
}
|
||||
}
|
||||
} else if(var14 == 0) {
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var12, var13, var10.width, var10.height, var22);
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var12, var13, var10.width, var10.height, var30);
|
||||
} else {
|
||||
Rasterizer2D.Rasterizer2D_drawRectangleAlpha(var12, var13, var10.width, var10.height, var22, 256 - (var14 & 255));
|
||||
Rasterizer2D.Rasterizer2D_drawRectangleAlpha(var12, var13, var10.width, var10.height, var30, 256 - (var14 & 255));
|
||||
}
|
||||
} else {
|
||||
Font var27;
|
||||
Font var36;
|
||||
if(var10.type == 4) {
|
||||
var27 = var10.getFont();
|
||||
if(var27 == null) {
|
||||
var36 = var10.getFont();
|
||||
if(var36 == null) {
|
||||
if(Widget.__ho_j) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
} else {
|
||||
String var38 = var10.text;
|
||||
String var45 = var10.text;
|
||||
if(class238.runCs1(var10)) {
|
||||
var19 = var10.color2;
|
||||
var20 = var10.color2;
|
||||
if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor2 != 0) {
|
||||
var19 = var10.mouseOverColor2;
|
||||
var20 = var10.mouseOverColor2;
|
||||
}
|
||||
|
||||
if(var10.text2.length() > 0) {
|
||||
var38 = var10.text2;
|
||||
var45 = var10.text2;
|
||||
}
|
||||
} else {
|
||||
var19 = var10.color;
|
||||
var20 = var10.color;
|
||||
if(var10 == Clock.mousedOverWidgetIf1 && var10.mouseOverColor != 0) {
|
||||
var19 = var10.mouseOverColor;
|
||||
var20 = var10.mouseOverColor;
|
||||
}
|
||||
}
|
||||
|
||||
if(var10.isIf3 && var10.itemId != -1) {
|
||||
ItemDefinition var41 = Skills.getItemDefinition(var10.itemId);
|
||||
var38 = var41.name;
|
||||
if(var38 == null) {
|
||||
var38 = "null";
|
||||
ItemDefinition var46 = Skills.getItemDefinition(var10.itemId);
|
||||
var45 = var46.name;
|
||||
if(var45 == null) {
|
||||
var45 = "null";
|
||||
}
|
||||
|
||||
if((var41.isStackable == 1 || var10.itemQuantity != 1) && var10.itemQuantity != -1) {
|
||||
var38 = BufferedFile.colorStartTag(16748608) + var38 + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantity);
|
||||
if((var46.isStackable == 1 || var10.itemQuantity != 1) && var10.itemQuantity != -1) {
|
||||
var45 = BufferedFile.colorStartTag(16748608) + var45 + "</col>" + " " + 'x' + GrandExchangeEvent.method88(var10.itemQuantity);
|
||||
}
|
||||
}
|
||||
|
||||
if(var10 == Client.__client_mo) {
|
||||
var38 = "Please wait...";
|
||||
var19 = var10.color;
|
||||
var45 = "Please wait...";
|
||||
var20 = var10.color;
|
||||
}
|
||||
|
||||
if(!var10.isIf3) {
|
||||
var38 = MouseRecorder.method1194(var38, var10);
|
||||
var45 = MouseRecorder.method1194(var45, var10);
|
||||
}
|
||||
|
||||
var27.drawLines(var38, var12, var13, var10.width, var10.height, var19, var10.textShadowed?0:-1, var10.textXAlignment, var10.textYAlignment, var10.textLineHeight);
|
||||
var36.drawLines(var45, var12, var13, var10.width, var10.height, var20, var10.textShadowed?0:-1, var10.textXAlignment, var10.textYAlignment, var10.textLineHeight);
|
||||
}
|
||||
} else if(var10.type == 5) {
|
||||
Sprite var37;
|
||||
@@ -552,32 +552,32 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
class22.method295(var10);
|
||||
}
|
||||
} else {
|
||||
var19 = var37.width;
|
||||
var20 = var37.height;
|
||||
var20 = var37.width;
|
||||
var21 = var37.height;
|
||||
if(!var10.spriteTiling) {
|
||||
var21 = var10.width * 4096 / var19;
|
||||
var22 = var10.width * 4096 / var20;
|
||||
if(var10.spriteAngle != 0) {
|
||||
var37.__ak_515(var10.width / 2 + var12, var10.height / 2 + var13, var10.spriteAngle, var21);
|
||||
var37.__ak_515(var10.width / 2 + var12, var10.height / 2 + var13, var10.spriteAngle, var22);
|
||||
} else if(var14 != 0) {
|
||||
var37.__c_509(var12, var13, var10.width, var10.height, 256 - (var14 & 255));
|
||||
} else if(var19 == var10.width && var20 == var10.height) {
|
||||
} else if(var20 == var10.width && var21 == var10.height) {
|
||||
var37.drawAt2(var12, var13);
|
||||
} else {
|
||||
var37.__j_506(var12, var13, var10.width, var10.height);
|
||||
}
|
||||
} else {
|
||||
Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height);
|
||||
var21 = (var19 - 1 + var10.width) / var19;
|
||||
var33 = (var20 - 1 + var10.height) / var20;
|
||||
var22 = (var20 - 1 + var10.width) / var20;
|
||||
var23 = (var21 - 1 + var10.height) / var21;
|
||||
|
||||
for(var24 = 0; var24 < var21; ++var24) {
|
||||
for(var25 = 0; var25 < var33; ++var25) {
|
||||
for(var24 = 0; var24 < var22; ++var24) {
|
||||
for(var25 = 0; var25 < var23; ++var25) {
|
||||
if(var10.spriteAngle != 0) {
|
||||
var37.__ak_515(var19 / 2 + var12 + var19 * var24, var20 / 2 + var13 + var25 * var20, var10.spriteAngle, 4096);
|
||||
var37.__ak_515(var20 / 2 + var12 + var20 * var24, var21 / 2 + var13 + var25 * var21, var10.spriteAngle, 4096);
|
||||
} else if(var14 != 0) {
|
||||
var37.__h_508(var12 + var19 * var24, var13 + var20 * var25, 256 - (var14 & 255));
|
||||
var37.__h_508(var12 + var20 * var24, var13 + var21 * var25, 256 - (var14 & 255));
|
||||
} else {
|
||||
var37.drawAt2(var12 + var19 * var24, var13 + var25 * var20);
|
||||
var37.drawAt2(var12 + var20 * var24, var13 + var25 * var21);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -587,60 +587,60 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ItemDefinition var28;
|
||||
ItemDefinition var34;
|
||||
if(var10.type == 6) {
|
||||
boolean var40 = class238.runCs1(var10);
|
||||
if(var40) {
|
||||
var19 = var10.sequenceId2;
|
||||
boolean var43 = class238.runCs1(var10);
|
||||
if(var43) {
|
||||
var20 = var10.sequenceId2;
|
||||
} else {
|
||||
var19 = var10.sequenceId;
|
||||
var20 = var10.sequenceId;
|
||||
}
|
||||
|
||||
Model var43 = null;
|
||||
var21 = 0;
|
||||
Model var41 = null;
|
||||
var22 = 0;
|
||||
if(var10.itemId != -1) {
|
||||
var28 = Skills.getItemDefinition(var10.itemId);
|
||||
if(var28 != null) {
|
||||
var28 = var28.__x_430(var10.itemQuantity);
|
||||
var43 = var28.getModel(1);
|
||||
if(var43 != null) {
|
||||
var43.calculateBoundsCylinder();
|
||||
var21 = var43.height / 2;
|
||||
var34 = Skills.getItemDefinition(var10.itemId);
|
||||
if(var34 != null) {
|
||||
var34 = var34.__x_430(var10.itemQuantity);
|
||||
var41 = var34.getModel(1);
|
||||
if(var41 != null) {
|
||||
var41.calculateBoundsCylinder();
|
||||
var22 = var41.height / 2;
|
||||
} else {
|
||||
class22.method295(var10);
|
||||
}
|
||||
}
|
||||
} else if(var10.modelType == 5) {
|
||||
if(var10.modelId == 0) {
|
||||
var43 = Client.__client_ru.getModel((SequenceDefinition)null, -1, (SequenceDefinition)null, -1);
|
||||
var41 = Client.__client_ru.getModel((SequenceDefinition)null, -1, (SequenceDefinition)null, -1);
|
||||
} else {
|
||||
var43 = Canvas.localPlayer.getModel();
|
||||
var41 = Canvas.localPlayer.getModel();
|
||||
}
|
||||
} else if(var19 == -1) {
|
||||
var43 = var10.getModel((SequenceDefinition)null, -1, var40, Canvas.localPlayer.appearance);
|
||||
if(var43 == null && Widget.__ho_j) {
|
||||
} else if(var20 == -1) {
|
||||
var41 = var10.getModel((SequenceDefinition)null, -1, var43, Canvas.localPlayer.appearance);
|
||||
if(var41 == null && Widget.__ho_j) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
} else {
|
||||
SequenceDefinition var44 = WorldMapAreaData.getSequenceDefinition(var19);
|
||||
var43 = var10.getModel(var44, var10.modelFrame, var40, Canvas.localPlayer.appearance);
|
||||
if(var43 == null && Widget.__ho_j) {
|
||||
SequenceDefinition var47 = WorldMapAreaData.getSequenceDefinition(var20);
|
||||
var41 = var10.getModel(var47, var10.modelFrame, var43, Canvas.localPlayer.appearance);
|
||||
if(var41 == null && Widget.__ho_j) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
}
|
||||
|
||||
Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13);
|
||||
var33 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
var23 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
var24 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
|
||||
if(var43 != null) {
|
||||
if(var41 != null) {
|
||||
if(!var10.isIf3) {
|
||||
var43.__c_234(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var33, var24);
|
||||
var41.__c_234(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var23, var24);
|
||||
} else {
|
||||
var43.calculateBoundsCylinder();
|
||||
var41.calculateBoundsCylinder();
|
||||
if(var10.modelOrthog) {
|
||||
var43.__p_235(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var21 + var33 + var10.modelOffsetY, var24 + var10.modelOffsetY, var10.modelZoom);
|
||||
var41.__p_235(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var22 + var23 + var10.modelOffsetY, var24 + var10.modelOffsetY, var10.modelZoom);
|
||||
} else {
|
||||
var43.__c_234(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var33 + var21 + var10.modelOffsetY, var24 + var10.modelOffsetY);
|
||||
var41.__c_234(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var23 + var22 + var10.modelOffsetY, var24 + var10.modelOffsetY);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -648,118 +648,118 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
Rasterizer3D.Rasterizer3D_method3();
|
||||
} else {
|
||||
if(var10.type == 7) {
|
||||
var27 = var10.getFont();
|
||||
if(var27 == null) {
|
||||
var36 = var10.getFont();
|
||||
if(var36 == null) {
|
||||
if(Widget.__ho_j) {
|
||||
class22.method295(var10);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
var19 = 0;
|
||||
var20 = 0;
|
||||
|
||||
for(var20 = 0; var20 < var10.rawHeight; ++var20) {
|
||||
for(var21 = 0; var21 < var10.rawWidth; ++var21) {
|
||||
if(var10.itemIds[var19] > 0) {
|
||||
var28 = Skills.getItemDefinition(var10.itemIds[var19] - 1);
|
||||
String var29;
|
||||
if(var28.isStackable != 1 && var10.itemQuantities[var19] == 1) {
|
||||
var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col>";
|
||||
for(var21 = 0; var21 < var10.rawHeight; ++var21) {
|
||||
for(var22 = 0; var22 < var10.rawWidth; ++var22) {
|
||||
if(var10.itemIds[var20] > 0) {
|
||||
var34 = Skills.getItemDefinition(var10.itemIds[var20] - 1);
|
||||
String var31;
|
||||
if(var34.isStackable != 1 && var10.itemQuantities[var20] == 1) {
|
||||
var31 = BufferedFile.colorStartTag(16748608) + var34.name + "</col>";
|
||||
} else {
|
||||
var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var19]);
|
||||
var31 = BufferedFile.colorStartTag(16748608) + var34.name + "</col>" + " " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var20]);
|
||||
}
|
||||
|
||||
var25 = var21 * (var10.paddingX + 115) + var12;
|
||||
var26 = var20 * (var10.paddingY + 12) + var13;
|
||||
var25 = var22 * (var10.paddingX + 115) + var12;
|
||||
var26 = var21 * (var10.paddingY + 12) + var13;
|
||||
if(var10.textXAlignment == 0) {
|
||||
var27.draw(var29, var25, var26, var10.color, var10.textShadowed?0:-1);
|
||||
var36.draw(var31, var25, var26, var10.color, var10.textShadowed?0:-1);
|
||||
} else if(var10.textXAlignment == 1) {
|
||||
var27.drawCentered(var29, var10.width / 2 + var25, var26, var10.color, var10.textShadowed?0:-1);
|
||||
var36.drawCentered(var31, var10.width / 2 + var25, var26, var10.color, var10.textShadowed?0:-1);
|
||||
} else {
|
||||
var27.drawRightAligned(var29, var25 + var10.width - 1, var26, var10.color, var10.textShadowed?0:-1);
|
||||
var36.drawRightAligned(var31, var25 + var10.width - 1, var26, var10.color, var10.textShadowed?0:-1);
|
||||
}
|
||||
}
|
||||
|
||||
++var19;
|
||||
++var20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var10.type == 8 && var10 == AccessFile.__dk_lm && Client.__client_ls == Client.__client_lb) {
|
||||
var22 = 0;
|
||||
var19 = 0;
|
||||
Font var39 = fontPlain12;
|
||||
String var30 = var10.text;
|
||||
var30 = 0;
|
||||
var20 = 0;
|
||||
Font var32 = fontPlain12;
|
||||
String var33 = var10.text;
|
||||
|
||||
String var31;
|
||||
for(var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) {
|
||||
var24 = var30.indexOf("<br>");
|
||||
String var44;
|
||||
for(var33 = MouseRecorder.method1194(var33, var10); var33.length() > 0; var20 = var20 + var32.ascent + 1) {
|
||||
var24 = var33.indexOf("<br>");
|
||||
if(var24 != -1) {
|
||||
var31 = var30.substring(0, var24);
|
||||
var30 = var30.substring(var24 + 4);
|
||||
var44 = var33.substring(0, var24);
|
||||
var33 = var33.substring(var24 + 4);
|
||||
} else {
|
||||
var31 = var30;
|
||||
var30 = "";
|
||||
var44 = var33;
|
||||
var33 = "";
|
||||
}
|
||||
|
||||
var25 = var39.stringWidth(var31);
|
||||
if(var25 > var22) {
|
||||
var22 = var25;
|
||||
var25 = var32.stringWidth(var44);
|
||||
if(var25 > var30) {
|
||||
var30 = var25;
|
||||
}
|
||||
}
|
||||
|
||||
var22 += 6;
|
||||
var19 += 7;
|
||||
var24 = var12 + var10.width - 5 - var22;
|
||||
var30 += 6;
|
||||
var20 += 7;
|
||||
var24 = var12 + var10.width - 5 - var30;
|
||||
var25 = var13 + var10.height + 5;
|
||||
if(var24 < var12 + 5) {
|
||||
var24 = var12 + 5;
|
||||
}
|
||||
|
||||
if(var22 + var24 > var4) {
|
||||
var24 = var4 - var22;
|
||||
if(var30 + var24 > var4) {
|
||||
var24 = var4 - var30;
|
||||
}
|
||||
|
||||
if(var25 + var19 > var5) {
|
||||
var25 = var5 - var19;
|
||||
if(var25 + var20 > var5) {
|
||||
var25 = var5 - var20;
|
||||
}
|
||||
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var22, var19, 16777120);
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var22, var19, 0);
|
||||
var30 = var10.text;
|
||||
var26 = var25 + var39.ascent + 2;
|
||||
Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var30, var20, 16777120);
|
||||
Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var30, var20, 0);
|
||||
var33 = var10.text;
|
||||
var26 = var25 + var32.ascent + 2;
|
||||
|
||||
for(var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var26 = var26 + var39.ascent + 1) {
|
||||
int var32 = var30.indexOf("<br>");
|
||||
if(var32 != -1) {
|
||||
var31 = var30.substring(0, var32);
|
||||
var30 = var30.substring(var32 + 4);
|
||||
for(var33 = MouseRecorder.method1194(var33, var10); var33.length() > 0; var26 = var26 + var32.ascent + 1) {
|
||||
int var35 = var33.indexOf("<br>");
|
||||
if(var35 != -1) {
|
||||
var44 = var33.substring(0, var35);
|
||||
var33 = var33.substring(var35 + 4);
|
||||
} else {
|
||||
var31 = var30;
|
||||
var30 = "";
|
||||
var44 = var33;
|
||||
var33 = "";
|
||||
}
|
||||
|
||||
var39.draw(var31, var24 + 3, var26, 0, -1);
|
||||
var32.draw(var44, var24 + 3, var26, 0, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if(var10.type == 9) {
|
||||
if(var10.__ba) {
|
||||
var22 = var12;
|
||||
var19 = var13 + var10.height;
|
||||
var20 = var12 + var10.width;
|
||||
var21 = var13;
|
||||
var30 = var12;
|
||||
var20 = var13 + var10.height;
|
||||
var21 = var12 + var10.width;
|
||||
var22 = var13;
|
||||
} else {
|
||||
var22 = var12;
|
||||
var19 = var13;
|
||||
var20 = var12 + var10.width;
|
||||
var21 = var13 + var10.height;
|
||||
var30 = var12;
|
||||
var20 = var13;
|
||||
var21 = var12 + var10.width;
|
||||
var22 = var13 + var10.height;
|
||||
}
|
||||
|
||||
if(var10.lineWid == 1) {
|
||||
Rasterizer2D.Rasterizer2D_drawLine(var22, var19, var20, var21, var10.color);
|
||||
Rasterizer2D.Rasterizer2D_drawLine(var30, var20, var21, var22, var10.color);
|
||||
} else {
|
||||
class190.method3669(var22, var19, var20, var21, var10.color, var10.lineWid);
|
||||
class190.method3669(var30, var20, var21, var22, var10.color, var10.lineWid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -790,7 +790,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
|
||||
var3.modelFrameCycle = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,5 @@ public class DualNode extends Node {
|
||||
this.previousDual = null;
|
||||
this.nextDual = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,11 +114,11 @@ public class DynamicObject extends Entity {
|
||||
var1 = 100;
|
||||
}
|
||||
|
||||
label47: {
|
||||
label55: {
|
||||
do {
|
||||
do {
|
||||
if(var1 <= this.sequenceDefinition.frameLengths[this.frame]) {
|
||||
break label47;
|
||||
break label55;
|
||||
}
|
||||
|
||||
var1 -= this.sequenceDefinition.frameLengths[this.frame];
|
||||
@@ -219,42 +219,41 @@ public class DynamicObject extends Entity {
|
||||
}
|
||||
|
||||
Client.__client_pl = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 2];
|
||||
PacketBufferNode var15 = Interpreter.method1915(ClientPacket.__gs_z, Client.packetWriter.isaacCipher);
|
||||
var15.packetBuffer.writeByte(Client.publicChatMode);
|
||||
var15.packetBuffer.writeByte(IndexCacheLoader.field512.field3804);
|
||||
var15.packetBuffer.writeByte(Client.__client_pl);
|
||||
Client.packetWriter.__q_167(var15);
|
||||
PacketBufferNode var18 = Interpreter.method1915(ClientPacket.__gs_z, Client.packetWriter.isaacCipher);
|
||||
var18.packetBuffer.writeByte(Client.publicChatMode);
|
||||
var18.packetBuffer.writeByte(IndexCacheLoader.field512.field3804);
|
||||
var18.packetBuffer.writeByte(Client.__client_pl);
|
||||
Client.packetWriter.__q_167(var18);
|
||||
return 1;
|
||||
} else {
|
||||
String var3;
|
||||
int var4;
|
||||
int var5;
|
||||
if(var0 == 5002) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
class179.Interpreter_intStackSize -= 2;
|
||||
var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize];
|
||||
var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1];
|
||||
PacketBufferNode var13 = Interpreter.method1915(ClientPacket.__gs_ae, Client.packetWriter.isaacCipher);
|
||||
var13.packetBuffer.writeByte(WorldMapRegion.method550(var3) + 2);
|
||||
var13.packetBuffer.writeStringCp1252NullTerminated(var3);
|
||||
var13.packetBuffer.writeByte(var4 - 1);
|
||||
var13.packetBuffer.writeByte(var5);
|
||||
Client.packetWriter.__q_167(var13);
|
||||
int var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1];
|
||||
PacketBufferNode var6 = Interpreter.method1915(ClientPacket.__gs_ae, Client.packetWriter.isaacCipher);
|
||||
var6.packetBuffer.writeByte(WorldMapRegion.method550(var3) + 2);
|
||||
var6.packetBuffer.writeStringCp1252NullTerminated(var3);
|
||||
var6.packetBuffer.writeByte(var4 - 1);
|
||||
var6.packetBuffer.writeByte(var5);
|
||||
Client.packetWriter.__q_167(var6);
|
||||
return 1;
|
||||
} else {
|
||||
Message var11;
|
||||
int var10;
|
||||
if(var0 == 5003) {
|
||||
class179.Interpreter_intStackSize -= 2;
|
||||
var5 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize];
|
||||
var10 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[class179.Interpreter_intStackSize + 1];
|
||||
var11 = Message.method1226(var5, var4);
|
||||
if(var11 != null) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.count;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.cycle;
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.sender != null?var11.sender:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.prefix != null?var11.prefix:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.text != null?var11.text:"";
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.isFromFriend()?1:(var11.isFromIgnored()?2:0);
|
||||
Message var15 = Message.method1226(var10, var4);
|
||||
if(var15 != null) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.count;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.cycle;
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.sender != null?var15.sender:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.prefix != null?var15.prefix:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var15.text != null?var15.text:"";
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var15.isFromFriend()?1:(var15.isFromIgnored()?2:0);
|
||||
} else {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0;
|
||||
@@ -266,15 +265,15 @@ public class DynamicObject extends Entity {
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 5004) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
var11 = NetCache.method4708(var5);
|
||||
if(var11 != null) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.type;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.cycle;
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.sender != null?var11.sender:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.prefix != null?var11.prefix:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var11.text != null?var11.text:"";
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var11.isFromFriend()?1:(var11.isFromIgnored()?2:0);
|
||||
var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Message var16 = NetCache.method4708(var10);
|
||||
if(var16 != null) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.type;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.cycle;
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.sender != null?var16.sender:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.prefix != null?var16.prefix:"";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var16.text != null?var16.text:"";
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = var16.isFromFriend()?1:(var16.isFromIgnored()?2:0);
|
||||
} else {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = -1;
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = 0;
|
||||
@@ -293,190 +292,187 @@ public class DynamicObject extends Entity {
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
String var6;
|
||||
if(var0 == 5008) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
var6 = var3.toLowerCase();
|
||||
byte var12 = 0;
|
||||
if(var6.startsWith("yellow:")) {
|
||||
var12 = 0;
|
||||
} else if(var0 == 5008) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var4 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
String var14 = var3.toLowerCase();
|
||||
byte var17 = 0;
|
||||
if(var14.startsWith("yellow:")) {
|
||||
var17 = 0;
|
||||
var3 = var3.substring("yellow:".length());
|
||||
} else if(var14.startsWith("red:")) {
|
||||
var17 = 1;
|
||||
var3 = var3.substring("red:".length());
|
||||
} else if(var14.startsWith("green:")) {
|
||||
var17 = 2;
|
||||
var3 = var3.substring("green:".length());
|
||||
} else if(var14.startsWith("cyan:")) {
|
||||
var17 = 3;
|
||||
var3 = var3.substring("cyan:".length());
|
||||
} else if(var14.startsWith("purple:")) {
|
||||
var17 = 4;
|
||||
var3 = var3.substring("purple:".length());
|
||||
} else if(var14.startsWith("white:")) {
|
||||
var17 = 5;
|
||||
var3 = var3.substring("white:".length());
|
||||
} else if(var14.startsWith("flash1:")) {
|
||||
var17 = 6;
|
||||
var3 = var3.substring("flash1:".length());
|
||||
} else if(var14.startsWith("flash2:")) {
|
||||
var17 = 7;
|
||||
var3 = var3.substring("flash2:".length());
|
||||
} else if(var14.startsWith("flash3:")) {
|
||||
var17 = 8;
|
||||
var3 = var3.substring("flash3:".length());
|
||||
} else if(var14.startsWith("glow1:")) {
|
||||
var17 = 9;
|
||||
var3 = var3.substring("glow1:".length());
|
||||
} else if(var14.startsWith("glow2:")) {
|
||||
var17 = 10;
|
||||
var3 = var3.substring("glow2:".length());
|
||||
} else if(var14.startsWith("glow3:")) {
|
||||
var17 = 11;
|
||||
var3 = var3.substring("glow3:".length());
|
||||
} else if(Client.language != 0) {
|
||||
if(var14.startsWith("yellow:")) {
|
||||
var17 = 0;
|
||||
var3 = var3.substring("yellow:".length());
|
||||
} else if(var6.startsWith("red:")) {
|
||||
var12 = 1;
|
||||
} else if(var14.startsWith("red:")) {
|
||||
var17 = 1;
|
||||
var3 = var3.substring("red:".length());
|
||||
} else if(var6.startsWith("green:")) {
|
||||
var12 = 2;
|
||||
} else if(var14.startsWith("green:")) {
|
||||
var17 = 2;
|
||||
var3 = var3.substring("green:".length());
|
||||
} else if(var6.startsWith("cyan:")) {
|
||||
var12 = 3;
|
||||
} else if(var14.startsWith("cyan:")) {
|
||||
var17 = 3;
|
||||
var3 = var3.substring("cyan:".length());
|
||||
} else if(var6.startsWith("purple:")) {
|
||||
var12 = 4;
|
||||
} else if(var14.startsWith("purple:")) {
|
||||
var17 = 4;
|
||||
var3 = var3.substring("purple:".length());
|
||||
} else if(var6.startsWith("white:")) {
|
||||
var12 = 5;
|
||||
} else if(var14.startsWith("white:")) {
|
||||
var17 = 5;
|
||||
var3 = var3.substring("white:".length());
|
||||
} else if(var6.startsWith("flash1:")) {
|
||||
var12 = 6;
|
||||
} else if(var14.startsWith("flash1:")) {
|
||||
var17 = 6;
|
||||
var3 = var3.substring("flash1:".length());
|
||||
} else if(var6.startsWith("flash2:")) {
|
||||
var12 = 7;
|
||||
} else if(var14.startsWith("flash2:")) {
|
||||
var17 = 7;
|
||||
var3 = var3.substring("flash2:".length());
|
||||
} else if(var6.startsWith("flash3:")) {
|
||||
var12 = 8;
|
||||
} else if(var14.startsWith("flash3:")) {
|
||||
var17 = 8;
|
||||
var3 = var3.substring("flash3:".length());
|
||||
} else if(var6.startsWith("glow1:")) {
|
||||
var12 = 9;
|
||||
} else if(var14.startsWith("glow1:")) {
|
||||
var17 = 9;
|
||||
var3 = var3.substring("glow1:".length());
|
||||
} else if(var6.startsWith("glow2:")) {
|
||||
var12 = 10;
|
||||
} else if(var14.startsWith("glow2:")) {
|
||||
var17 = 10;
|
||||
var3 = var3.substring("glow2:".length());
|
||||
} else if(var6.startsWith("glow3:")) {
|
||||
var12 = 11;
|
||||
} else if(var14.startsWith("glow3:")) {
|
||||
var17 = 11;
|
||||
var3 = var3.substring("glow3:".length());
|
||||
} else if(Client.language != 0) {
|
||||
if(var6.startsWith("yellow:")) {
|
||||
var12 = 0;
|
||||
var3 = var3.substring("yellow:".length());
|
||||
} else if(var6.startsWith("red:")) {
|
||||
var12 = 1;
|
||||
var3 = var3.substring("red:".length());
|
||||
} else if(var6.startsWith("green:")) {
|
||||
var12 = 2;
|
||||
var3 = var3.substring("green:".length());
|
||||
} else if(var6.startsWith("cyan:")) {
|
||||
var12 = 3;
|
||||
var3 = var3.substring("cyan:".length());
|
||||
} else if(var6.startsWith("purple:")) {
|
||||
var12 = 4;
|
||||
var3 = var3.substring("purple:".length());
|
||||
} else if(var6.startsWith("white:")) {
|
||||
var12 = 5;
|
||||
var3 = var3.substring("white:".length());
|
||||
} else if(var6.startsWith("flash1:")) {
|
||||
var12 = 6;
|
||||
var3 = var3.substring("flash1:".length());
|
||||
} else if(var6.startsWith("flash2:")) {
|
||||
var12 = 7;
|
||||
var3 = var3.substring("flash2:".length());
|
||||
} else if(var6.startsWith("flash3:")) {
|
||||
var12 = 8;
|
||||
var3 = var3.substring("flash3:".length());
|
||||
} else if(var6.startsWith("glow1:")) {
|
||||
var12 = 9;
|
||||
var3 = var3.substring("glow1:".length());
|
||||
} else if(var6.startsWith("glow2:")) {
|
||||
var12 = 10;
|
||||
var3 = var3.substring("glow2:".length());
|
||||
} else if(var6.startsWith("glow3:")) {
|
||||
var12 = 11;
|
||||
var3 = var3.substring("glow3:".length());
|
||||
}
|
||||
}
|
||||
|
||||
var6 = var3.toLowerCase();
|
||||
byte var14 = 0;
|
||||
if(var6.startsWith("wave:")) {
|
||||
var14 = 1;
|
||||
var3 = var3.substring("wave:".length());
|
||||
} else if(var6.startsWith("wave2:")) {
|
||||
var14 = 2;
|
||||
var3 = var3.substring("wave2:".length());
|
||||
} else if(var6.startsWith("shake:")) {
|
||||
var14 = 3;
|
||||
var3 = var3.substring("shake:".length());
|
||||
} else if(var6.startsWith("scroll:")) {
|
||||
var14 = 4;
|
||||
var3 = var3.substring("scroll:".length());
|
||||
} else if(var6.startsWith("slide:")) {
|
||||
var14 = 5;
|
||||
var3 = var3.substring("slide:".length());
|
||||
} else if(Client.language != 0) {
|
||||
if(var6.startsWith("wave:")) {
|
||||
var14 = 1;
|
||||
var3 = var3.substring("wave:".length());
|
||||
} else if(var6.startsWith("wave2:")) {
|
||||
var14 = 2;
|
||||
var3 = var3.substring("wave2:".length());
|
||||
} else if(var6.startsWith("shake:")) {
|
||||
var14 = 3;
|
||||
var3 = var3.substring("shake:".length());
|
||||
} else if(var6.startsWith("scroll:")) {
|
||||
var14 = 4;
|
||||
var3 = var3.substring("scroll:".length());
|
||||
} else if(var6.startsWith("slide:")) {
|
||||
var14 = 5;
|
||||
var3 = var3.substring("slide:".length());
|
||||
}
|
||||
}
|
||||
|
||||
PacketBufferNode var9 = Interpreter.method1915(ClientPacket.__gs_cz, Client.packetWriter.isaacCipher);
|
||||
var9.packetBuffer.writeByte(0);
|
||||
int var10 = var9.packetBuffer.index;
|
||||
var9.packetBuffer.writeByte(var4);
|
||||
var9.packetBuffer.writeByte(var12);
|
||||
var9.packetBuffer.writeByte(var14);
|
||||
TextureProvider.method2777(var9.packetBuffer, var3);
|
||||
var9.packetBuffer.__h_300(var9.packetBuffer.index - var10);
|
||||
Client.packetWriter.__q_167(var9);
|
||||
return 1;
|
||||
} else if(var0 == 5009) {
|
||||
Interpreter.Interpreter_stringStackSize -= 2;
|
||||
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
|
||||
var6 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
|
||||
PacketBufferNode var7 = Interpreter.method1915(ClientPacket.__gs_v, Client.packetWriter.isaacCipher);
|
||||
var7.packetBuffer.writeShort(0);
|
||||
int var8 = var7.packetBuffer.index;
|
||||
var7.packetBuffer.writeStringCp1252NullTerminated(var3);
|
||||
TextureProvider.method2777(var7.packetBuffer, var6);
|
||||
var7.packetBuffer.__y_299(var7.packetBuffer.index - var8);
|
||||
Client.packetWriter.__q_167(var7);
|
||||
return 1;
|
||||
} else if(var0 != 5015) {
|
||||
if(var0 == 5016) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_pl;
|
||||
return 1;
|
||||
} else if(var0 == 5017) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WidgetGroupParent.method1174(var5);
|
||||
return 1;
|
||||
} else if(var0 == 5018) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class12.method161(var5);
|
||||
return 1;
|
||||
} else if(var0 == 5019) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = SpriteMask.method4391(var5);
|
||||
return 1;
|
||||
} else if(var0 == 5020) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
BoundaryObject.method3235(var3);
|
||||
return 1;
|
||||
} else if(var0 == 5021) {
|
||||
Client.__client_pz = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize].toLowerCase().trim();
|
||||
return 1;
|
||||
} else if(var0 == 5022) {
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Client.__client_pz;
|
||||
return 1;
|
||||
} else if(var0 == 5023) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
System.out.println(var3);
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
} else {
|
||||
if(Canvas.localPlayer != null && Canvas.localPlayer.username != null) {
|
||||
var3 = Canvas.localPlayer.username.getName();
|
||||
} else {
|
||||
var3 = "";
|
||||
}
|
||||
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3;
|
||||
return 1;
|
||||
}
|
||||
|
||||
var14 = var3.toLowerCase();
|
||||
byte var7 = 0;
|
||||
if(var14.startsWith("wave:")) {
|
||||
var7 = 1;
|
||||
var3 = var3.substring("wave:".length());
|
||||
} else if(var14.startsWith("wave2:")) {
|
||||
var7 = 2;
|
||||
var3 = var3.substring("wave2:".length());
|
||||
} else if(var14.startsWith("shake:")) {
|
||||
var7 = 3;
|
||||
var3 = var3.substring("shake:".length());
|
||||
} else if(var14.startsWith("scroll:")) {
|
||||
var7 = 4;
|
||||
var3 = var3.substring("scroll:".length());
|
||||
} else if(var14.startsWith("slide:")) {
|
||||
var7 = 5;
|
||||
var3 = var3.substring("slide:".length());
|
||||
} else if(Client.language != 0) {
|
||||
if(var14.startsWith("wave:")) {
|
||||
var7 = 1;
|
||||
var3 = var3.substring("wave:".length());
|
||||
} else if(var14.startsWith("wave2:")) {
|
||||
var7 = 2;
|
||||
var3 = var3.substring("wave2:".length());
|
||||
} else if(var14.startsWith("shake:")) {
|
||||
var7 = 3;
|
||||
var3 = var3.substring("shake:".length());
|
||||
} else if(var14.startsWith("scroll:")) {
|
||||
var7 = 4;
|
||||
var3 = var3.substring("scroll:".length());
|
||||
} else if(var14.startsWith("slide:")) {
|
||||
var7 = 5;
|
||||
var3 = var3.substring("slide:".length());
|
||||
}
|
||||
}
|
||||
|
||||
PacketBufferNode var8 = Interpreter.method1915(ClientPacket.__gs_cz, Client.packetWriter.isaacCipher);
|
||||
var8.packetBuffer.writeByte(0);
|
||||
int var9 = var8.packetBuffer.index;
|
||||
var8.packetBuffer.writeByte(var4);
|
||||
var8.packetBuffer.writeByte(var17);
|
||||
var8.packetBuffer.writeByte(var7);
|
||||
TextureProvider.method2777(var8.packetBuffer, var3);
|
||||
var8.packetBuffer.__h_300(var8.packetBuffer.index - var9);
|
||||
Client.packetWriter.__q_167(var8);
|
||||
return 1;
|
||||
} else if(var0 == 5009) {
|
||||
Interpreter.Interpreter_stringStackSize -= 2;
|
||||
var3 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize];
|
||||
String var12 = Interpreter.Interpreter_stringStack[Interpreter.Interpreter_stringStackSize + 1];
|
||||
PacketBufferNode var11 = Interpreter.method1915(ClientPacket.__gs_v, Client.packetWriter.isaacCipher);
|
||||
var11.packetBuffer.writeShort(0);
|
||||
int var13 = var11.packetBuffer.index;
|
||||
var11.packetBuffer.writeStringCp1252NullTerminated(var3);
|
||||
TextureProvider.method2777(var11.packetBuffer, var12);
|
||||
var11.packetBuffer.__y_299(var11.packetBuffer.index - var13);
|
||||
Client.packetWriter.__q_167(var11);
|
||||
return 1;
|
||||
} else if(var0 != 5015) {
|
||||
if(var0 == 5016) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = Client.__client_pl;
|
||||
return 1;
|
||||
} else if(var0 == 5017) {
|
||||
var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WidgetGroupParent.method1174(var10);
|
||||
return 1;
|
||||
} else if(var0 == 5018) {
|
||||
var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = class12.method161(var10);
|
||||
return 1;
|
||||
} else if(var0 == 5019) {
|
||||
var10 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = SpriteMask.method4391(var10);
|
||||
return 1;
|
||||
} else if(var0 == 5020) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
BoundaryObject.method3235(var3);
|
||||
return 1;
|
||||
} else if(var0 == 5021) {
|
||||
Client.__client_pz = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize].toLowerCase().trim();
|
||||
return 1;
|
||||
} else if(var0 == 5022) {
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = Client.__client_pz;
|
||||
return 1;
|
||||
} else if(var0 == 5023) {
|
||||
var3 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
System.out.println(var3);
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
} else {
|
||||
if(Canvas.localPlayer != null && Canvas.localPlayer.username != null) {
|
||||
var3 = Canvas.localPlayer.username.getName();
|
||||
} else {
|
||||
var3 = "";
|
||||
}
|
||||
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var3;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -501,24 +497,24 @@ public class DynamicObject extends Entity {
|
||||
GameShell.garbageCollectorLastCollectionTime = -1L;
|
||||
}
|
||||
}
|
||||
} catch (Throwable var9) {
|
||||
} catch (Throwable var11) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
if(AbstractIndexCache.garbageCollector != null) {
|
||||
long var10 = class203.currentTimeMs();
|
||||
long var9 = class203.currentTimeMs();
|
||||
long var3 = AbstractIndexCache.garbageCollector.getCollectionTime();
|
||||
if(GameShell.garbageCollectorLastCollectionTime != -1L) {
|
||||
long var5 = var3 - GameShell.garbageCollectorLastCollectionTime;
|
||||
long var7 = var10 - GameShell.garbageCollectorLastCheckTimeMs;
|
||||
long var7 = var9 - GameShell.garbageCollectorLastCheckTimeMs;
|
||||
if(0L != var7) {
|
||||
var0 = (int)(var5 * 100L / var7);
|
||||
}
|
||||
}
|
||||
|
||||
GameShell.garbageCollectorLastCollectionTime = var3;
|
||||
GameShell.garbageCollectorLastCheckTimeMs = var10;
|
||||
GameShell.garbageCollectorLastCheckTimeMs = var9;
|
||||
}
|
||||
|
||||
return var0;
|
||||
@@ -545,72 +541,72 @@ public class DynamicObject extends Entity {
|
||||
var4 = GraphicsObject.baseY;
|
||||
|
||||
int var7;
|
||||
int var8;
|
||||
int var9;
|
||||
for(var7 = 0; var7 < 32768; ++var7) {
|
||||
NPC var9 = Client.npcs[var7];
|
||||
if(var9 != null) {
|
||||
for(var8 = 0; var8 < 10; ++var8) {
|
||||
var9.pathX[var8] -= var5;
|
||||
var9.pathY[var8] -= var6;
|
||||
Npc var8 = Client.npcs[var7];
|
||||
if(var8 != null) {
|
||||
for(var9 = 0; var9 < 10; ++var9) {
|
||||
var8.pathX[var9] -= var5;
|
||||
var8.pathY[var9] -= var6;
|
||||
}
|
||||
|
||||
var9.x -= var5 * 128;
|
||||
var9.y -= var6 * 128;
|
||||
var8.x -= var5 * 128;
|
||||
var8.y -= var6 * 128;
|
||||
}
|
||||
}
|
||||
|
||||
for(var7 = 0; var7 < 2048; ++var7) {
|
||||
Player var20 = Client.players[var7];
|
||||
if(var20 != null) {
|
||||
for(var8 = 0; var8 < 10; ++var8) {
|
||||
var20.pathX[var8] -= var5;
|
||||
var20.pathY[var8] -= var6;
|
||||
Player var21 = Client.players[var7];
|
||||
if(var21 != null) {
|
||||
for(var9 = 0; var9 < 10; ++var9) {
|
||||
var21.pathX[var9] -= var5;
|
||||
var21.pathY[var9] -= var6;
|
||||
}
|
||||
|
||||
var20.x -= var5 * 128;
|
||||
var20.y -= var6 * 128;
|
||||
var21.x -= var5 * 128;
|
||||
var21.y -= var6 * 128;
|
||||
}
|
||||
}
|
||||
|
||||
byte var21 = 0;
|
||||
byte var10 = 104;
|
||||
byte var11 = 1;
|
||||
byte var20 = 0;
|
||||
byte var18 = 104;
|
||||
byte var22 = 1;
|
||||
if(var5 < 0) {
|
||||
var21 = 103;
|
||||
var10 = -1;
|
||||
var11 = -1;
|
||||
var20 = 103;
|
||||
var18 = -1;
|
||||
var22 = -1;
|
||||
}
|
||||
|
||||
byte var12 = 0;
|
||||
byte var13 = 104;
|
||||
byte var14 = 1;
|
||||
byte var10 = 0;
|
||||
byte var11 = 104;
|
||||
byte var12 = 1;
|
||||
if(var6 < 0) {
|
||||
var12 = 103;
|
||||
var13 = -1;
|
||||
var14 = -1;
|
||||
var10 = 103;
|
||||
var11 = -1;
|
||||
var12 = -1;
|
||||
}
|
||||
|
||||
int var15;
|
||||
for(int var16 = var21; var16 != var10; var16 += var11) {
|
||||
for(var15 = var12; var13 != var15; var15 += var14) {
|
||||
int var17 = var16 + var5;
|
||||
int var18 = var15 + var6;
|
||||
int var14;
|
||||
for(int var13 = var20; var13 != var18; var13 += var22) {
|
||||
for(var14 = var10; var11 != var14; var14 += var12) {
|
||||
int var15 = var13 + var5;
|
||||
int var16 = var14 + var6;
|
||||
|
||||
for(int var19 = 0; var19 < 4; ++var19) {
|
||||
if(var17 >= 0 && var18 >= 0 && var17 < 104 && var18 < 104) {
|
||||
Client.groundItems[var19][var16][var15] = Client.groundItems[var19][var17][var18];
|
||||
for(int var17 = 0; var17 < 4; ++var17) {
|
||||
if(var15 >= 0 && var16 >= 0 && var15 < 104 && var16 < 104) {
|
||||
Client.groundItems[var17][var13][var14] = Client.groundItems[var17][var15][var16];
|
||||
} else {
|
||||
Client.groundItems[var19][var16][var15] = null;
|
||||
Client.groundItems[var17][var13][var14] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(class68 var22 = (class68)Client.__client_kh.last(); var22 != null; var22 = (class68)Client.__client_kh.previous()) {
|
||||
var22.field913 -= var5;
|
||||
var22.field901 -= var6;
|
||||
if(var22.field913 < 0 || var22.field901 < 0 || var22.field913 >= 104 || var22.field901 >= 104) {
|
||||
var22.remove();
|
||||
for(class68 var19 = (class68)Client.__client_kh.last(); var19 != null; var19 = (class68)Client.__client_kh.previous()) {
|
||||
var19.field913 -= var5;
|
||||
var19.field901 -= var6;
|
||||
if(var19.field913 < 0 || var19.field901 < 0 || var19.field913 >= 104 || var19.field901 >= 104) {
|
||||
var19.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -629,10 +625,10 @@ public class DynamicObject extends Entity {
|
||||
Client.graphicsObjects.clear();
|
||||
Client.projectiles.clear();
|
||||
|
||||
for(var15 = 0; var15 < 4; ++var15) {
|
||||
Client.collisionMaps[var15].clear();
|
||||
for(var14 = 0; var14 < 4; ++var14) {
|
||||
Client.collisionMaps[var14].clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,10 @@ public class EnumDefinition extends DualNode {
|
||||
@Export("stringVals")
|
||||
public String[] stringVals;
|
||||
|
||||
static {
|
||||
EnumDefinition_cached = new EvictingDualNodeHashTable(64);
|
||||
}
|
||||
|
||||
EnumDefinition() {
|
||||
this.defaultString = "null";
|
||||
this.size0 = 0;
|
||||
@@ -121,8 +125,4 @@ public class EnumDefinition extends DualNode {
|
||||
public int size() {
|
||||
return this.size0;
|
||||
}
|
||||
|
||||
static {
|
||||
EnumDefinition_cached = new EvictingDualNodeHashTable(64);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,5 +10,5 @@ public interface Enumerated {
|
||||
signature = "(B)I",
|
||||
garbageValue = "83"
|
||||
)
|
||||
int ordinal();
|
||||
int rsOrdinal();
|
||||
}
|
||||
|
||||
@@ -71,10 +71,10 @@ public class FaceNormal {
|
||||
} else if(!var0.startsWith("http://") && !var0.startsWith("https://")) {
|
||||
throw new Exception();
|
||||
} else {
|
||||
String var11 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*";
|
||||
String var13 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*";
|
||||
|
||||
for(int var12 = 0; var12 < var0.length(); ++var12) {
|
||||
if(var11.indexOf(var0.charAt(var12)) == -1) {
|
||||
for(int var4 = 0; var4 < var0.length(); ++var4) {
|
||||
if(var13.indexOf(var0.charAt(var4)) == -1) {
|
||||
throw new Exception();
|
||||
}
|
||||
}
|
||||
@@ -82,36 +82,36 @@ public class FaceNormal {
|
||||
Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var0 + "\"");
|
||||
return true;
|
||||
}
|
||||
} catch (Throwable var6) {
|
||||
} catch (Throwable var8) {
|
||||
return false;
|
||||
}
|
||||
} else if(var1 == 1) {
|
||||
try {
|
||||
Applet var3 = class50.__af_m;
|
||||
Object[] var4 = new Object[]{(new URL(class50.__af_m.getCodeBase(), var0)).toString()};
|
||||
Object var5 = JSObject.getWindow(var3).call(var2, var4);
|
||||
return var5 != null;
|
||||
} catch (Throwable var7) {
|
||||
Applet var7 = class50.__af_m;
|
||||
Object[] var5 = new Object[]{(new URL(class50.__af_m.getCodeBase(), var0)).toString()};
|
||||
Object var3 = JSObject.getWindow(var7).call(var2, var5);
|
||||
return var3 != null;
|
||||
} catch (Throwable var9) {
|
||||
return false;
|
||||
}
|
||||
} else if(var1 == 2) {
|
||||
try {
|
||||
class50.__af_m.getAppletContext().showDocument(new URL(class50.__af_m.getCodeBase(), var0), "_blank");
|
||||
return true;
|
||||
} catch (Exception var8) {
|
||||
} catch (Exception var10) {
|
||||
return false;
|
||||
}
|
||||
} else if(var1 == 3) {
|
||||
try {
|
||||
class46.method851(class50.__af_m, "loggedout");
|
||||
} catch (Throwable var10) {
|
||||
} catch (Throwable var12) {
|
||||
;
|
||||
}
|
||||
|
||||
try {
|
||||
class50.__af_m.getAppletContext().showDocument(new URL(class50.__af_m.getCodeBase(), var0), "_top");
|
||||
return true;
|
||||
} catch (Exception var9) {
|
||||
} catch (Exception var11) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -51,7 +51,6 @@ public final class Font extends AbstractFont {
|
||||
if(var4 > 0 && var5 > 0) {
|
||||
AbstractFont.AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var1, var6, var10, var7, var4, var5, var8, var9);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ObfuscatedName("f")
|
||||
@@ -93,6 +92,5 @@ public final class Font extends AbstractFont {
|
||||
if(var4 > 0 && var5 > 0) {
|
||||
AbstractFont.AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var1, var6, var11, var8, var4, var5, var9, var10, var7);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,15 @@ public class FontName {
|
||||
@Export("__g")
|
||||
String __g;
|
||||
|
||||
static {
|
||||
FontName_plain11 = new FontName("p11_full");
|
||||
FontName_plain12 = new FontName("p12_full");
|
||||
FontName_bold12 = new FontName("b12_full");
|
||||
FontName_verdana11 = new FontName("verdana_11pt_regular");
|
||||
FontName_verdana13 = new FontName("verdana_13pt_regular");
|
||||
FontName_verdana15 = new FontName("verdana_15pt_regular");
|
||||
}
|
||||
|
||||
FontName(String var1) {
|
||||
this.__g = var1;
|
||||
}
|
||||
@@ -110,9 +119,9 @@ public class FontName {
|
||||
if(var0 == 3601) {
|
||||
var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.friendsList.size()) {
|
||||
Friend var6 = (Friend)WorldMapArea.friendSystem.friendsList.get(var3);
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var6.name();
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var6.previousName();
|
||||
Friend var8 = (Friend)WorldMapArea.friendSystem.friendsList.get(var3);
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var8.name();
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var8.previousName();
|
||||
} else {
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = "";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = "";
|
||||
@@ -138,32 +147,32 @@ public class FontName {
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
String var4;
|
||||
String var5;
|
||||
if(var0 == 3604) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
int var8 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
method5638(var4, var8);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
int var6 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
method5638(var5, var6);
|
||||
return 1;
|
||||
} else if(var0 == 3605) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.__l_157(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.__l_157(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3606) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.removeFriend(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.removeFriend(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3607) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.__x_159(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.__x_159(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3608) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.removeIgnore(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
WorldMapArea.friendSystem.removeIgnore(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3609) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var4 = NPCDefinition.method5161(var4);
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isFriended(new Username(var4, KeyHandler.loginType), false)?1:0;
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var5 = NpcDefinition.method5161(var5);
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isFriended(new Username(var5, KeyHandler.loginType), false)?1:0;
|
||||
return 1;
|
||||
} else if(var0 == 3611) {
|
||||
if(PacketWriter.clanChat != null) {
|
||||
@@ -212,15 +221,15 @@ public class FontName {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = PacketWriter.clanChat != null?PacketWriter.clanChat.__k:0;
|
||||
return 1;
|
||||
} else if(var0 == 3617) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
IndexStoreActionHandler.method4655(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
IndexStoreActionHandler.method4655(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3618) {
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = PacketWriter.clanChat != null?PacketWriter.clanChat.rank:0;
|
||||
return 1;
|
||||
} else if(var0 == 3619) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
class31.method574(var4);
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
class31.method574(var5);
|
||||
return 1;
|
||||
} else if(var0 == 3620) {
|
||||
class12.method158();
|
||||
@@ -236,9 +245,9 @@ public class FontName {
|
||||
} else if(var0 == 3622) {
|
||||
var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
if(WorldMapArea.friendSystem.__m_151() && var3 >= 0 && var3 < WorldMapArea.friendSystem.ignoreList.size()) {
|
||||
Ignored var7 = (Ignored)WorldMapArea.friendSystem.ignoreList.get(var3);
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var7.name();
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var7.previousName();
|
||||
Ignored var4 = (Ignored)WorldMapArea.friendSystem.ignoreList.get(var3);
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.name();
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = var4.previousName();
|
||||
} else {
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = "";
|
||||
Interpreter.Interpreter_stringStack[++Interpreter.Interpreter_stringStackSize - 1] = "";
|
||||
@@ -246,9 +255,9 @@ public class FontName {
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3623) {
|
||||
var4 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var4 = NPCDefinition.method5161(var4);
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isIgnored(new Username(var4, KeyHandler.loginType))?1:0;
|
||||
var5 = Interpreter.Interpreter_stringStack[--Interpreter.Interpreter_stringStackSize];
|
||||
var5 = NpcDefinition.method5161(var5);
|
||||
Interpreter.Interpreter_intStack[++class179.Interpreter_intStackSize - 1] = WorldMapArea.friendSystem.isIgnored(new Username(var5, KeyHandler.loginType))?1:0;
|
||||
return 1;
|
||||
} else if(var0 == 3624) {
|
||||
var3 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize];
|
||||
@@ -281,46 +290,46 @@ public class FontName {
|
||||
WorldMapArea.friendSystem.friendsList.removeComparator();
|
||||
return 1;
|
||||
} else {
|
||||
boolean var5;
|
||||
boolean var7;
|
||||
if(var0 == 3629) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator1(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator1(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3630) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator2(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator2(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3631) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator3(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator3(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3632) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator4(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator4(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3633) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator5(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator5(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3634) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator6(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator6(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3635) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator7(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator7(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3636) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator8(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator8(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3637) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator9(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator9(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3638) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator10(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new UserComparator10(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3639) {
|
||||
WorldMapArea.friendSystem.friendsList.sort();
|
||||
@@ -329,12 +338,12 @@ public class FontName {
|
||||
WorldMapArea.friendSystem.ignoreList.removeComparator();
|
||||
return 1;
|
||||
} else if(var0 == 3641) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator1(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator1(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3642) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator2(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.ignoreList.addComparator(new UserComparator2(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3643) {
|
||||
WorldMapArea.friendSystem.ignoreList.sort();
|
||||
@@ -346,72 +355,72 @@ public class FontName {
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3645) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator1(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator1(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3646) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator2(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator2(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3647) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator3(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator3(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3648) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator4(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator4(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3649) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator5(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator5(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3650) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator6(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator6(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3651) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator7(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator7(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3652) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator8(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator8(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3653) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator9(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator9(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3654) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new UserComparator10(var5));
|
||||
PacketWriter.clanChat.addComparator(new UserComparator10(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -422,13 +431,13 @@ public class FontName {
|
||||
|
||||
return 1;
|
||||
} else if(var0 == 3656) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new class157(var5));
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
WorldMapArea.friendSystem.friendsList.addComparator(new class157(var7));
|
||||
return 1;
|
||||
} else if(var0 == 3657) {
|
||||
var5 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
var7 = Interpreter.Interpreter_intStack[--class179.Interpreter_intStackSize] == 1;
|
||||
if(PacketWriter.clanChat != null) {
|
||||
PacketWriter.clanChat.addComparator(new class157(var5));
|
||||
PacketWriter.clanChat.addComparator(new class157(var7));
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -576,13 +585,4 @@ public class FontName {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static {
|
||||
FontName_plain11 = new FontName("p11_full");
|
||||
FontName_plain12 = new FontName("p12_full");
|
||||
FontName_bold12 = new FontName("b12_full");
|
||||
FontName_verdana11 = new FontName("verdana_11pt_regular");
|
||||
FontName_verdana13 = new FontName("verdana_13pt_regular");
|
||||
FontName_verdana15 = new FontName("verdana_15pt_regular");
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user