Merge pull request #5 from runelite-extended/master

bringup
This commit is contained in:
Tyler Bochard
2019-06-24 22:51:20 -04:00
committed by GitHub
284 changed files with 18901 additions and 18983 deletions

1
.gitignore vendored
View File

@@ -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

View File

@@ -2,25 +2,23 @@
# RuneLitePlus-PS rev180 [![Build Status](https://travis-ci.org/zeruth/runeliteplus-ps.svg?branch=master)](https://travis-ci.org/zeruth/runeliteplus-ps) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](https://discord.gg/HN5gf3m)
# RuneLitePlus [![Build Status](https://travis-ci.org/runelite-extended/runelite.svg?branch=master)](https://travis-ci.org/runelite-extended/runelite) [![Discord](https://img.shields.io/discord/373382904769675265.svg)](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

View File

@@ -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();
}
}

View File

@@ -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)

View File

@@ -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()
{

View File

@@ -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()));
}
}

View File

@@ -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());
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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.
*

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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);

View File

@@ -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));
}

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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();

View File

@@ -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)."
)

View File

@@ -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;
}
}

View File

@@ -31,7 +31,8 @@ public enum InfernoWaveDisplayMode
{
CURRENT("Current wave"),
NEXT("Next wave"),
BOTH("Both");
BOTH("Both"),
NONE("None");
private final String name;

View File

@@ -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());
}
}
}
}

View File

@@ -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);
}
}

View File

@@ -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:

View File

@@ -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 "";
}
}

View File

@@ -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()));
}
}

View File

@@ -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())
{

View File

@@ -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)

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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

View File

@@ -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",

View File

@@ -172,10 +172,6 @@ public class PlayerIndicatorsOverlay extends Overlay
{
name = "[C] " + name;
}
if (config.highlightPile() && playerIndicatorsPlugin.isPile(actor))
{
name = "[P] " + name;
}
if (config.showCombatLevel())
{

View File

@@ -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();

View File

@@ -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());
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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) ->

View File

@@ -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;
}
}

View File

@@ -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++;
}

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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));
}
}

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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];
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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);
}
}
}

View File

@@ -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];
}
}

View File

@@ -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;
}

View File

@@ -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];
}
}

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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][];
}
}

View File

@@ -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();
}
}

View File

@@ -59,7 +59,7 @@ public final class Bzip2State {
intValue = 1860254567
)
@Export("surfaceOffsetY")
int surfaceOffsetY;
int __n;
@ObfuscatedName("i")
@Export("__i")
byte __i;

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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};
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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))));
}
}

View File

@@ -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, "");
}
}

View File

@@ -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")

View File

@@ -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;
}
}
}
}
}
}

View File

@@ -31,6 +31,5 @@ public class DualNode extends Node {
this.previousDual = null;
this.nextDual = null;
}
}
}

View File

@@ -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();
}
}
}
}
}

View File

@@ -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);
}
}

View File

@@ -10,5 +10,5 @@ public interface Enumerated {
signature = "(B)I",
garbageValue = "83"
)
int ordinal();
int rsOrdinal();
}

View File

@@ -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 {

View File

@@ -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);
}
}
}

View File

@@ -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