Merge remote-tracking branch 'upstream/master' into master

This commit is contained in:
ThatGamerBlue
2021-05-19 13:21:08 +01:00
43 changed files with 2516 additions and 1047 deletions

View File

@@ -124,6 +124,11 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
item(ItemID.CRYSTAL_HARPOON_INACTIVE)
);
private static final AnyRequirementCollection ANY_HAMMER = any("Hammer",
item(ItemID.HAMMER),
item(ItemID.IMCANDO_HAMMER)
);
private static final Set<SkillChallengeClue> CLUES = ImmutableSet.of(
// Charlie Tasks
new SkillChallengeClue("Cook a Pike", "i need to cook charlie a pike.", "i need to take the cooked pike to charlie.", item(ItemID.PIKE), item(ItemID.RAW_PIKE)),
@@ -133,7 +138,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Fish a Herring", "i need to fish charlie a herring.", "i need to take a raw herring to charlie.", item(ItemID.RAW_HERRING), any("Fishing rod", item(ItemID.FISHING_ROD), item(ItemID.PEARL_FISHING_ROD)), item(ItemID.FISHING_BAIT)),
new SkillChallengeClue("Fish a Trout", "i need to fish charlie a trout.", "i need to take a raw trout to charlie.", item(ItemID.RAW_TROUT), any("Fly fishing rod", item(ItemID.FLY_FISHING_ROD), item(ItemID.PEARL_FLY_FISHING_ROD)), item(ItemID.FEATHER)),
new SkillChallengeClue("Mine a piece of Iron Ore", "i need to mine charlie a piece of iron ore from an iron vein.", "i need to take the iron ore to charlie.", item(ItemID.IRON_ORE), ANY_PICKAXE),
new SkillChallengeClue("Smith an Iron Dagger", "i need to smith charlie one iron dagger.", "i need to take the iron dagger i smithed to charlie.", item(ItemID.IRON_DAGGER), item(ItemID.IRON_BAR), item(ItemID.HAMMER)),
new SkillChallengeClue("Smith an Iron Dagger", "i need to smith charlie one iron dagger.", "i need to take the iron dagger i smithed to charlie.", item(ItemID.IRON_DAGGER), item(ItemID.IRON_BAR), ANY_HAMMER),
// Elite Sherlock Tasks
new SkillChallengeClue("Equip a Dragon Scimitar.", true, any("Any Dragon Scimitar", item(ItemID.DRAGON_SCIMITAR), item(ItemID.DRAGON_SCIMITAR_OR))),
new SkillChallengeClue("Enchant some Dragonstone Jewellery.", "enchant a piece of dragonstone jewellery.",
@@ -153,7 +158,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Catch a black warlock.", item(ItemID.BUTTERFLY_JAR), any("Butterfly Net", item(ItemID.BUTTERFLY_NET), item(ItemID.MAGIC_BUTTERFLY_NET))),
new SkillChallengeClue("Catch a red chinchompa.", item(ItemID.BOX_TRAP)),
new SkillChallengeClue("Mine a mithril ore.", ANY_PICKAXE),
new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)),
new SkillChallengeClue("Smith a mithril 2h sword.", ANY_HAMMER, xOfItem(ItemID.MITHRIL_BAR, 3)),
new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON),
new SkillChallengeClue("Cut a yew log.", ANY_AXE),
new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", new String[] { "Broken lamp" }, new int[] { 10834, 10835 }, item(ItemID.LIGHT_ORB)),
@@ -165,7 +170,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam
new SkillChallengeClue("Hand in a Tier 2 or higher set of Shayzien supply armour. (Requires 11 lovakite bars)", "take the lovakengj armourers a boxed set of shayzien supply armour at tier 2 or above.", any("Shayzien Supply Set (Tier 2 or higher)", item(ItemID.SHAYZIEN_SUPPLY_SET_2), item(ItemID.SHAYZIEN_SUPPLY_SET_3), item(ItemID.SHAYZIEN_SUPPLY_SET_4), item(ItemID.SHAYZIEN_SUPPLY_SET_5))),
// Master Sherlock Tasks
new SkillChallengeClue("Equip an abyssal whip in front of the abyssal demons of the Slayer Tower.", true, any("Abyssal Whip", item(ItemID.ABYSSAL_WHIP), item(ItemID.FROZEN_ABYSSAL_WHIP), item(ItemID.VOLCANIC_ABYSSAL_WHIP))),
new SkillChallengeClue("Smith a runite med helm.", item(ItemID.HAMMER), item(ItemID.RUNITE_BAR)),
new SkillChallengeClue("Smith a runite med helm.", ANY_HAMMER, item(ItemID.RUNITE_BAR)),
new SkillChallengeClue("Teleport to a spirit tree you planted yourself."),
new SkillChallengeClue("Create a Barrows teleport tablet.", item(ItemID.DARK_ESSENCE_BLOCK), xOfItem(ItemID.BLOOD_RUNE, 1), xOfItem(ItemID.LAW_RUNE, 2), xOfItem(ItemID.SOUL_RUNE, 2)),
new SkillChallengeClue("Kill a Nechryael in the Slayer Tower.", "slay a nechryael in the slayer tower."),

View File

@@ -139,17 +139,6 @@ public interface FriendsChatConfig extends Config
return false;
}
@ConfigItem(
keyName = "clanTabChat",
name = "Tab Chat",
description = "Message friends chat without appending '/' when the friends chat tab is selected.",
position = 9
)
default boolean friendsChatTabChat()
{
return false;
}
@ConfigItem(
keyName = "confirmKicks",
name = "Confirm Kicks",

View File

@@ -96,8 +96,6 @@ import net.runelite.client.util.Text;
public class FriendsChatPlugin extends Plugin
{
private static final int MAX_CHATS = 10;
private static final String TITLE = "FC";
private static final String RECENT_TITLE = "Recent FCs";
private static final int MESSAGE_DELAY = 10;
@Inject
@@ -284,27 +282,16 @@ public class FriendsChatPlugin extends Plugin
return;
}
Widget chatTitleWidget = client.getWidget(WidgetInfo.FRIENDS_CHAT_TITLE);
if (chatTitleWidget != null)
Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
if (chatList != null)
{
Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
Widget owner = client.getWidget(WidgetInfo.FRIENDS_CHAT_OWNER);
FriendsChatManager friendsChatManager = client.getFriendsChatManager();
if (friendsChatManager != null && friendsChatManager.getCount() > 0)
if ((friendsChatManager == null || friendsChatManager.getCount() <= 0)
&& chatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText())
&& config.recentChats())
{
chatTitleWidget.setText(TITLE + " (" + friendsChatManager.getCount() + "/100)");
}
else if (chatList.getChildren() == null && !Strings.isNullOrEmpty(owner.getText()))
{
if (config.recentChats())
{
chatTitleWidget.setText(RECENT_TITLE);
loadFriendsChats();
}
else
{
chatTitleWidget.setText(TITLE);
}
loadFriendsChats();
}
}
@@ -542,15 +529,6 @@ public class FriendsChatPlugin extends Plugin
{
switch (scriptCallbackEvent.getEventName())
{
case "friendsChatInput":
{
final int[] intStack = client.getIntStack();
final int size = client.getIntStackSize();
// If the user accidentally adds a / when the config and the friends chat chat tab is active, handle it like a normal message
boolean alterDispatch = config.friendsChatTabChat() && !client.getVar(VarClientStr.CHATBOX_TYPED_TEXT).startsWith("/");
intStack[size - 1] = alterDispatch ? 1 : 0;
break;
}
case "confirmFriendsChatKick":
{
if (!config.confirmKicks() || kickConfirmed)
@@ -614,7 +592,6 @@ public class FriendsChatPlugin extends Plugin
private void resetChats()
{
Widget chatList = client.getWidget(WidgetInfo.FRIENDS_CHAT_LIST);
Widget chatTitleWidget = client.getWidget(WidgetInfo.FRIENDS_CHAT_TITLE);
if (chatList == null)
{
@@ -626,8 +603,6 @@ public class FriendsChatPlugin extends Plugin
{
chatList.setChildren(null);
}
chatTitleWidget.setText(TITLE);
}
private void loadFriendsChats()

View File

@@ -218,7 +218,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private int textureArrayId;
private final GLBuffer uniformBuffer = new GLBuffer();
private final float[] textureOffsets = new float[128];
private final float[] textureOffsets = new float[256];
private GpuIntBuffer vertexBuffer;
private GpuFloatBuffer uvBuffer;
@@ -1198,7 +1198,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
// Bind uniforms
gl.glUniformBlockBinding(glProgram, uniBlockMain, 0);
gl.glUniform1i(uniTextures, 1); // texture sampler array is bound to texture1
gl.glUniform2fv(uniTextureOffsets, 128, textureOffsets, 0);
gl.glUniform2fv(uniTextureOffsets, textureOffsets.length, textureOffsets, 0);
// We just allow the GL to do face culling. Note this requires the priority renderer
// to have logic to disregard culled faces in the priority depth testing.

View File

@@ -30,6 +30,7 @@ import lombok.Data;
class XpAction
{
private int actions = 0;
private int actionsSinceReset = 0;
private boolean actionsHistoryInitialized = false;
private int[] actionExps = new int[10];
private int actionExpIndex = 0;

View File

@@ -135,6 +135,10 @@ class XpInfoBox extends JPanel
final JMenuItem resetOthers = new JMenuItem("Reset others");
resetOthers.addActionListener(e -> xpTrackerPlugin.resetOtherSkillState(skill));
// Create reset per hour menu
final JMenuItem resetPerHour = new JMenuItem("Reset/hr");
resetPerHour.addActionListener(e -> xpTrackerPlugin.resetSkillPerHourState(skill));
// Create reset others menu
pauseSkill.addActionListener(e -> xpTrackerPlugin.pauseSkill(skill, !paused));
@@ -144,6 +148,7 @@ class XpInfoBox extends JPanel
popupMenu.add(openXpTracker);
popupMenu.add(reset);
popupMenu.add(resetOthers);
popupMenu.add(resetPerHour);
popupMenu.add(pauseSkill);
popupMenu.add(canvasItem);
popupMenu.addPopupMenuListener(new PopupMenuListener()

View File

@@ -90,6 +90,10 @@ class XpPanel extends PluginPanel
final JMenuItem reset = new JMenuItem("Reset All");
reset.addActionListener(e -> xpTrackerPlugin.resetAndInitState());
// Create reset all per hour menu
final JMenuItem resetPerHour = new JMenuItem("Reset All/hr");
resetPerHour.addActionListener(e -> xpTrackerPlugin.resetAllSkillsPerHourState());
// Create pause all menu
final JMenuItem pauseAll = new JMenuItem("Pause All");
pauseAll.addActionListener(e -> xpTrackerPlugin.pauseAllSkills(true));
@@ -104,6 +108,7 @@ class XpPanel extends PluginPanel
popupMenu.setBorder(new EmptyBorder(5, 5, 5, 5));
popupMenu.add(openXpTracker);
popupMenu.add(reset);
popupMenu.add(resetPerHour);
popupMenu.add(pauseAll);
popupMenu.add(unpauseAll);
overallPanel.setComponentPopupMenu(popupMenu);

View File

@@ -24,15 +24,17 @@
*/
package net.runelite.client.plugins.xptracker;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.Map;
import javax.inject.Inject;
import lombok.NonNull;
import net.runelite.api.NPC;
import net.runelite.api.Skill;
/**
* Internal state for the XpTrackerPlugin
*
* <p>
* Note: This class's operations are not currently synchronized.
* It is intended to be called by the XpTrackerPlugin on the client thread.
*/
@@ -43,6 +45,9 @@ class XpState
private final Map<Skill, XpStateSingle> xpSkills = new EnumMap<>(Skill.class);
private NPC interactedNPC;
@Inject
private XpTrackerConfig xpTrackerConfig;
/**
* Destroys all internal state, however any XpSnapshotSingle or XpSnapshotTotal remain unaffected.
*/
@@ -53,7 +58,8 @@ class XpState
/**
* Resets a single skill
* @param skill Skill to reset
*
* @param skill Skill to reset
* @param currentXp Current XP to set to, if unknown set to -1
*/
void resetSkill(Skill skill, long currentXp)
@@ -62,15 +68,26 @@ class XpState
xpSkills.put(skill, new XpStateSingle(skill, currentXp));
}
/**
* Resets the per hour rates of a single skill
*
* @param skill Skill to reset per hour rates
*/
void resetSkillPerHour(Skill skill)
{
xpSkills.get(skill).resetPerHour();
}
/**
* Updates a skill with the current known XP.
* When the result of this operation is XpUpdateResult.UPDATED, the UI should be updated accordingly.
* This is to distinguish events that reload all the skill's current values (such as world hopping)
* and also first-login when the skills are not initialized (the start XP will be -1 in this case).
* @param skill Skill to update
* @param currentXp Current known XP for this skill
*
* @param skill Skill to update
* @param currentXp Current known XP for this skill
* @param goalStartXp Possible XP start goal
* @param goalEndXp Possible XP end goal
* @param goalEndXp Possible XP end goal
* @return Whether or not the skill has been initialized, there was no change, or it has been updated
*/
XpUpdateResult updateSkill(Skill skill, long currentXp, int goalStartXp, int goalEndXp)
@@ -92,7 +109,7 @@ class XpState
else
{
long startXp = state.getStartXp();
int gainedXp = state.getXpGained();
int gainedXp = state.getTotalXpGained();
if (startXp + gainedXp > currentXp)
{
@@ -119,8 +136,9 @@ class XpState
/**
* Updates skill with average actions based on currently interacted NPC.
* @param skill experience gained skill
* @param npc currently interacted NPC
*
* @param skill experience gained skill
* @param npc currently interacted NPC
* @param npcHealth health of currently interacted NPC
*/
void updateNpcExperience(Skill skill, NPC npc, Integer npcHealth, int xpModifier)
@@ -146,10 +164,7 @@ class XpState
else
{
// So we have a decent average off the bat, lets populate all values with what we see.
for (int i = 0; i < action.getActionExps().length; i++)
{
action.getActionExps()[i] = actionExp;
}
Arrays.fill(action.getActionExps(), actionExp);
action.setActionsHistoryInitialized(true);
}
@@ -161,8 +176,9 @@ class XpState
/**
* Update number of actions performed for skill if last interacted NPC died.
* (eg. amount of kills in this case)
* @param skill skill to update actions for
* @param npc npc that just died
*
* @param skill skill to update actions for
* @param npc npc that just died
* @param npcHealth max health of npc that just died
* @return UPDATED in case new kill was successfully added
*/
@@ -170,25 +186,41 @@ class XpState
{
XpStateSingle state = getSkill(skill);
if (state.getXpGained() <= 0 || npcHealth == null || npc != interactedNPC)
if (state.getXpGainedSinceReset() <= 0 || npcHealth == null || npc != interactedNPC)
{
return XpUpdateResult.NO_CHANGE;
}
final XpAction xpAction = state.getXpAction(XpActionType.ACTOR_HEALTH);
xpAction.setActions(xpAction.getActions() + 1);
xpAction.setActionsSinceReset(xpAction.getActionsSinceReset() + 1);
return xpAction.isActionsHistoryInitialized() ? XpUpdateResult.UPDATED : XpUpdateResult.NO_CHANGE;
}
void tick(Skill skill, long delta)
{
getSkill(skill).tick(delta);
final XpStateSingle state = getSkill(skill);
state.tick(delta);
int resetAfterMinutes = xpTrackerConfig.resetSkillRateAfter();
if (resetAfterMinutes > 0)
{
final long now = System.currentTimeMillis();
final int resetAfterMillis = resetAfterMinutes * 60 * 1000;
final long lastChangeMillis = state.getLastChangeMillis();
// When pauseSkillAfter is 0, it is effectively disabled
if (lastChangeMillis != 0 && (now - lastChangeMillis) >= resetAfterMillis)
{
state.resetPerHour();
}
}
}
/**
* Forcefully initialize a skill with a known start XP from the current XP.
* This is used in resetAndInitState by the plugin. It should not result in showing the XP in the UI.
* @param skill Skill to initialize
*
* @param skill Skill to initialize
* @param currentXp Current known XP for the skill
*/
void initializeSkill(Skill skill, long currentXp)
@@ -211,6 +243,7 @@ class XpState
/**
* Obtain an immutable snapshot of the provided skill
* intended for use with the UI which operates on another thread
*
* @param skill Skill to obtain the snapshot for
* @return An immutable snapshot of the specified skill for this session since first login or last reset
*/
@@ -223,6 +256,7 @@ class XpState
/**
* Obtain an immutable snapshot of the provided skill
* intended for use with the UI which operates on another thread
*
* @return An immutable snapshot of total information for this session since first login or last reset
*/
@NonNull

View File

@@ -26,7 +26,8 @@
*/
package net.runelite.client.plugins.xptracker;
import java.util.HashMap;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
@@ -38,19 +39,25 @@ import net.runelite.api.Skill;
class XpStateSingle
{
private final Skill skill;
private final Map<XpActionType, XpAction> actions = new HashMap<>();
private final Map<XpActionType, XpAction> actions = new EnumMap<>(XpActionType.class);
@Getter
@Setter
private long startXp;
@Getter
private int xpGained = 0;
private int xpGainedSinceReset = 0;
private int xpGainedBeforeReset = 0;
@Setter
private XpActionType actionType = XpActionType.EXPERIENCE;
@Setter
private long skillTime = 0;
@Getter
private long lastChangeMillis;
private int startLevelExp = 0;
private int endLevelExp = 0;
@@ -62,18 +69,28 @@ class XpStateSingle
XpAction getXpAction(final XpActionType type)
{
actions.putIfAbsent(type, new XpAction());
return actions.get(type);
return actions.computeIfAbsent(type, k -> new XpAction());
}
long getCurrentXp()
{
return startXp + xpGained;
return startXp + getTotalXpGained();
}
void setXpGainedSinceReset(int xpGainedSinceReset)
{
this.xpGainedSinceReset = xpGainedSinceReset;
lastChangeMillis = System.currentTimeMillis();
}
int getTotalXpGained()
{
return xpGainedBeforeReset + xpGainedSinceReset;
}
private int getActionsHr()
{
return toHourly(getXpAction(actionType).getActions());
return toHourly(getXpAction(actionType).getActionsSinceReset());
}
private int toHourly(int value)
@@ -131,12 +148,9 @@ class XpStateSingle
private long getSecondsTillLevel()
{
// Java 8 doesn't have good duration / period objects to represent spans of time that can be formatted
// Rather than importing another dependency like joda time (which is practically built into java 10)
// below will be a custom formatter that handles spans larger than 1 day
long seconds = getTimeElapsedInSeconds();
if (seconds <= 0 || xpGained <= 0)
if (seconds <= 0 || xpGainedSinceReset <= 0)
{
return -1;
}
@@ -144,7 +158,7 @@ class XpStateSingle
// formula is xpRemaining / xpPerSecond
// xpPerSecond being xpGained / seconds
// This can be simplified so division is only done once and we can work in whole numbers!
return (getXpRemaining() * seconds) / xpGained;
return (getXpRemaining() * seconds) / xpGainedSinceReset;
}
private String getTimeTillLevel(XpGoalTimeType goalTimeType)
@@ -155,6 +169,9 @@ class XpStateSingle
return "\u221e";
}
// Java 8 doesn't have good duration / period objects to represent spans of time that can be formatted
// Rather than importing another dependency like joda time (which is practically built into java 10)
// below will be a custom formatter that handles spans larger than 1 day
long durationDays = remainingSeconds / (24 * 60 * 60);
long durationHours = (remainingSeconds % (24 * 60 * 60)) / (60 * 60);
long durationHoursTotal = remainingSeconds / (60 * 60);
@@ -197,18 +214,33 @@ class XpStateSingle
int getXpHr()
{
return toHourly(xpGained);
return toHourly(xpGainedSinceReset);
}
void resetPerHour()
{
//reset actions per hour
for (XpAction action : actions.values())
{
action.setActions(action.getActions() + action.getActionsSinceReset());
action.setActionsSinceReset(0);
}
//reset xp per hour
xpGainedBeforeReset += xpGainedSinceReset;
setXpGainedSinceReset(0);
setSkillTime(0);
}
boolean update(long currentXp, int goalStartXp, int goalEndXp)
{
if (startXp == -1)
{
log.warn("Attempted to update skill state " + skill + " but was not initialized with current xp");
log.warn("Attempted to update skill state {} but was not initialized with current xp", skill);
return false;
}
long originalXp = xpGained + startXp;
long originalXp = getTotalXpGained() + startXp;
int actionExp = (int) (currentXp - originalXp);
// No experience gained
@@ -228,19 +260,16 @@ class XpStateSingle
{
// populate all values in our action history array with this first value that we see
// so the average value of our action history starts out as this first value we see
for (int i = 0; i < action.getActionExps().length; i++)
{
action.getActionExps()[i] = actionExp;
}
Arrays.fill(action.getActionExps(), actionExp);
action.setActionsHistoryInitialized(true);
}
action.setActionExpIndex((action.getActionExpIndex() + 1) % action.getActionExps().length);
action.setActions(action.getActions() + 1);
action.setActionsSinceReset(action.getActionsSinceReset() + 1);
// Calculate experience gained
xpGained = (int) (currentXp - startXp);
setXpGainedSinceReset((int) (currentXp - (startXp + xpGainedBeforeReset)));
// Determine XP goals, overall has no goals
if (skill != Skill.OVERALL)
@@ -273,7 +302,7 @@ class XpStateSingle
public void tick(long delta)
{
// Don't tick skills that have not gained XP or have been reset.
if (xpGained <= 0)
if (xpGainedSinceReset <= 0)
{
return;
}
@@ -285,12 +314,12 @@ class XpStateSingle
return XpSnapshotSingle.builder()
.startLevel(Experience.getLevelForXp(startLevelExp))
.endLevel(Experience.getLevelForXp(endLevelExp))
.xpGainedInSession(xpGained)
.xpGainedInSession(getTotalXpGained())
.xpRemainingToGoal(getXpRemaining())
.xpPerHour(getXpHr())
.skillProgressToGoal(getSkillProgress())
.actionType(actionType)
.actionsInSession(getXpAction(actionType).getActions())
.actionsInSession(getXpAction(actionType).getActions() + getXpAction(actionType).getActionsSinceReset())
.actionsRemainingToGoal(getActionsRemaining())
.actionsPerHour(getActionsHr())
.timeTillGoal(getTimeTillLevel(XpGoalTimeType.DAYS))

View File

@@ -88,6 +88,18 @@ public interface XpTrackerConfig extends Config
@ConfigItem(
position = 4,
keyName = "resetSkillRateAfter",
name = "Auto reset after",
description = "Configures how many minutes passes before resetting a skill's per hour rates while in game and there's no XP, 0 means disabled"
)
@Units(Units.MINUTES)
default int resetSkillRateAfter()
{
return 0;
}
@ConfigItem(
position = 5,
keyName = "skillTabOverlayMenuOptions",
name = "Add skill tab canvas menu option",
description = "Configures whether a menu option to show/hide canvas XP trackers will be added to skills on the skill tab",
@@ -99,7 +111,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 5,
position = 6,
keyName = "onScreenDisplayMode",
name = "On-screen tracker display mode (top)",
description = "Configures the information displayed in the first line of on-screen XP overlays",
@@ -111,7 +123,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 6,
position = 7,
keyName = "onScreenDisplayModeBottom",
name = "On-screen tracker display mode (bottom)",
description = "Configures the information displayed in the second line of on-screen XP overlays",
@@ -123,7 +135,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 7,
position = 8,
keyName = "xpPanelLabel1",
name = "Top-left XP info label",
description = "Configures the information displayed in the top-left of XP info box"
@@ -134,7 +146,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 8,
position = 9,
keyName = "xpPanelLabel2",
name = "Top-right XP info label",
description = "Configures the information displayed in the top-right of XP info box"
@@ -146,7 +158,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 9,
position = 10,
keyName = "xpPanelLabel3",
name = "Bottom-left XP info label",
description = "Configures the information displayed in the bottom-left of XP info box"
@@ -157,7 +169,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 10,
position = 11,
keyName = "xpPanelLabel4",
name = "Bottom-right XP info label",
description = "Configures the information displayed in the bottom-right of XP info box"
@@ -168,7 +180,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 11,
position = 12,
keyName = "progressBarLabel",
name = "Progress bar label",
description = "Configures the info box progress bar to show Time to goal or percentage complete"
@@ -179,7 +191,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 12,
position = 13,
keyName = "progressBarTooltipLabel",
name = "Tooltip label",
description = "Configures the info box progress bar tooltip to show Time to goal or percentage complete"
@@ -190,7 +202,7 @@ public interface XpTrackerConfig extends Config
}
@ConfigItem(
position = 13,
position = 14,
keyName = "prioritizeRecentXpSkills",
name = "Move recently trained skills to top",
description = "Configures whether skills should be organized by most recently gained xp"

View File

@@ -120,6 +120,9 @@ public class XpTrackerPlugin extends Plugin
@Inject
private XpClient xpClient;
@Inject
private XpState xpState;
private NavigationButton navButton;
@Setter(AccessLevel.PACKAGE)
@VisibleForTesting
@@ -131,7 +134,6 @@ public class XpTrackerPlugin extends Plugin
private long lastXp = 0;
private boolean initializeTracker;
private final XpState xpState = new XpState();
private final XpPauseState xpPauseState = new XpPauseState();
@Provides
@@ -323,6 +325,7 @@ public class XpTrackerPlugin extends Plugin
/**
* Reset an individual skill with the client's current known state of the skill
* Will also clear the skill from the UI.
*
* @param skill Skill to reset
*/
void resetSkillState(Skill skill)
@@ -335,6 +338,7 @@ public class XpTrackerPlugin extends Plugin
/**
* Reset all skills except for the one provided
*
* @param skill Skill to ignore during reset
*/
void resetOtherSkillState(Skill skill)
@@ -349,6 +353,29 @@ public class XpTrackerPlugin extends Plugin
}
}
/**
* Reset the xp gained since last reset of the skill
* Does not clear the skill from the UI.
*
* @param skill Skill to reset per hour rate
*/
void resetSkillPerHourState(Skill skill)
{
xpState.resetSkillPerHour(skill);
}
/**
* Reset the xp gained since last reset of all skills including OVERALL
* Does not clear the UI.
*/
void resetAllSkillsPerHourState()
{
for (Skill skill : Skill.values())
{
resetSkillPerHourState(skill);
}
}
@Subscribe
public void onStatChanged(StatChanged statChanged)
{
@@ -377,7 +404,7 @@ public class XpTrackerPlugin extends Plugin
final Actor interacting = client.getLocalPlayer().getInteracting();
if (interacting instanceof NPC && COMBAT.contains(skill))
{
final int xpModifier = worldSetToType(client.getWorldType()).modifier(client);;
final int xpModifier = worldSetToType(client.getWorldType()).modifier(client);
final NPC npc = (NPC) interacting;
xpState.updateNpcExperience(skill, npc, npcManager.getHealth(npc.getId()), xpModifier);
}

View File

@@ -3323,11 +3323,14 @@
7104,
7105,
7106,
7107
7107,
25708
],
"stool": [
3893,
5732
5732,
25710,
25711
],
"wilderness sword": [
3981,
@@ -9770,5 +9773,25 @@
"ornate lockbox": [
25650,
25651
],
"clan cloak": [
25712,
25714,
25715,
25716,
25717,
25718,
25719,
25720
],
"clan vexillum": [
25721,
25723,
25724,
25725,
25726,
25727,
25728,
25729
]
}

View File

@@ -25,7 +25,7 @@
#version 330
uniform sampler2DArray textures;
uniform vec2 textureOffsets[64];
uniform vec2 textureOffsets[128];
uniform float brightness;
uniform float smoothBanding;
uniform vec4 fogColor;

View File

@@ -1 +1 @@
D32D30CB1B79698A15B3314C3782659FF25382008857E7CEB07CA17C1CD5E62A
90076B6F48BDA11B9905808D70A53D53F894350AD46B7ED3AF75C7C60BB304D1

View File

@@ -794,7 +794,7 @@ LABEL703:
sconst "setSearchBankInputTextFound" ; load event name
runelite_callback ; invoke callback
pop_int ; pop number of matches
iconst 10616876
iconst 10616873
if_settext
LABEL710:
jump LABEL725
@@ -814,7 +814,7 @@ LABEL722:
sconst "Show items whose names contain the following text:"
sconst "setSearchBankInputText" ; load event name
runelite_callback ; invoke callback
iconst 10616876
iconst 10616873
if_settext
LABEL725:
jump LABEL729

View File

@@ -1 +1 @@
E5BD8C9AD501548FDE7AA21B76E6186E5E2B30B7824959D09E517989EFE30687
4AEE5325C78CB639C5CB3DC6838082DBD926696CEBDE6DEE0D84D7CD929B8197

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
C8549F688E1AEF9A485BFA552D7FEA8E0C9FDFAC006A879883320FFD82F5786B
574EDB2E12BB45156BFCF57D301C12AD82DF34648A95478E666FA97F09065C22

View File

@@ -2,7 +2,7 @@
.int_stack_count 1
.string_stack_count 0
.int_var_count 18
.string_var_count 4
.string_var_count 6
iconst 0
istore 1
iconst 2
@@ -187,24 +187,33 @@ LABEL156:
istore 15
iconst 0
istore 16
sconst "<col=00ffff>"
sstore 4
sconst "<col=ffff00>"
sstore 5
sload 4
sload 5
invoke 4485
sstore 5
sstore 4
get_varc_int 55
get_varc_int 202
if_icmpge LABEL176
jump LABEL299
LABEL176:
if_icmpge LABEL185
jump LABEL311
LABEL185:
get_varc_int 55
clientclock
iconst 3000
sub
if_icmpgt LABEL182
jump LABEL299
LABEL182:
if_icmpgt LABEL191
jump LABEL311
LABEL191:
iconst 14
chat_gethistorylength
iconst 0
if_icmpgt LABEL187
jump LABEL299
LABEL187:
if_icmpgt LABEL196
jump LABEL311
LABEL196:
iconst 14
iconst 0
chat_gethistory_bytypeandline
@@ -216,9 +225,9 @@ LABEL187:
istore 12
iload 12
iconst -1
if_icmpne LABEL200
jump LABEL299
LABEL200:
if_icmpne LABEL209
jump LABEL311
LABEL209:
sload 0
invoke 2066
istore 15
@@ -226,14 +235,17 @@ LABEL200:
sstore 0
iload 15
iconst 4
if_icmpne LABEL212
if_icmpne LABEL221
reboottimer
iconst 0
if_icmple LABEL212
jump LABEL299
LABEL212:
if_icmple LABEL221
jump LABEL311
LABEL221:
iload 7
sload 5
sload 0
sconst "</col>"
join_string 3
iload 9
iload 10
iconst 10682368
@@ -253,14 +265,14 @@ LABEL212:
sload 3
string_length
iconst 0
if_icmpgt LABEL235
jump LABEL264
LABEL235:
if_icmpgt LABEL247
jump LABEL276
LABEL247:
iload 15
iconst -1
if_icmpne LABEL239
jump LABEL264
LABEL239:
if_icmpne LABEL251
jump LABEL276
LABEL251:
iconst 6
sconst "Open"
iload 10
@@ -285,8 +297,8 @@ LABEL239:
sconst "Iii"
iload 10
if_setonmouseleave
jump LABEL272
LABEL264:
jump LABEL284
LABEL276:
iconst -1
sconst ""
iload 10
@@ -295,7 +307,7 @@ LABEL264:
sconst ""
iload 10
if_setonmouseleave
LABEL272:
LABEL284:
iconst 9
sconst "Clear history"
iload 10
@@ -323,41 +335,41 @@ LABEL272:
iload 9
enum
istore 10
LABEL299:
LABEL311:
iload 0
istore 12
iconst 0
istore 17
get_varp 287
iconst 1
if_icmpeq LABEL307
jump LABEL496
LABEL307:
if_icmpeq LABEL319
jump LABEL534
LABEL319:
get_varc_int 41
iconst 1337
if_icmpne LABEL314
if_icmpne LABEL326
get_varbit 4089
iconst 0
if_icmpeq LABEL314
jump LABEL496
LABEL314:
if_icmpeq LABEL326
jump LABEL534
LABEL326:
iload 12
iconst -1
if_icmpne LABEL318
jump LABEL496
LABEL318:
if_icmpne LABEL330
jump LABEL534
LABEL330:
iload 10
iconst -1
if_icmpne LABEL322
jump LABEL496
LABEL322:
if_icmpne LABEL334
jump LABEL534
LABEL334:
iload 7
iload 4
sub
iconst 57
if_icmplt LABEL328
jump LABEL496
LABEL328:
if_icmplt LABEL340
jump LABEL534
LABEL340:
iload 12
chat_gethistory_byuid
istore 14
@@ -373,7 +385,7 @@ LABEL328:
invoke 91
iconst 1
if_icmpeq CHAT_FILTER ; Jump to our new label instead
jump LABEL492
jump LABEL530
CHAT_FILTER:
sload 0 ; Load the message
iconst 1 ; Gets changed to 0 if message is blocked
@@ -385,29 +397,35 @@ CHAT_FILTER:
pop_int ; Pop the messageType
iconst 1 ; 2nd half of conditional
sstore 0 ; Override the message with our filtered message
if_icmpeq LABEL344 ; Check if we are building this message
jump LABEL492
LABEL344:
if_icmpeq LABEL356 ; Check if we are building this message
jump LABEL530
LABEL356:
iload 17
switch
3: LABEL347
6: LABEL368
7: LABEL347
jump LABEL389
LABEL347:
3: LABEL359
5: LABEL411
6: LABEL385
7: LABEL359
jump LABEL446
LABEL359:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 4
sconst "From "
sload 1
sconst ":"
sconst "privateChatSplitFrom"
runelite_callback
join_string 4 ; Add the timestamp to the message
sconst "</col>"
join_string 6 ; Add the timestamp to the message
sload 4
sload 0
sconst "</col>"
join_string 3
iload 9
iload 10
iconst 10682368
@@ -422,21 +440,26 @@ LABEL347:
invoke 203
add
istore 7
jump LABEL424
LABEL368:
jump LABEL462
LABEL385:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 4
sconst "To "
sload 1
sconst ":"
sconst "privateChatSplitTo"
runelite_callback
join_string 4 ; Add the timestamp to the message
sconst "</col>"
join_string 6 ; Add the timestamp to the message
sload 4
sload 0
sconst "</col>"
join_string 3
iload 9
iload 10
iconst 10682368
@@ -451,16 +474,18 @@ LABEL368:
invoke 203
add
istore 7
jump LABEL424
LABEL389:
jump LABEL462
LABEL411:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 0 ; Load the log in/out message
join_string 2 ; Add the timestamp to the message
sload 4 ; Load the log in/out message
sload 0
sconst "</col>"
join_string 4
iload 9
iload 10
iconst 10682368
@@ -475,16 +500,11 @@ LABEL389:
invoke 199
add
istore 7
iload 17
iconst 5
if_icmpeq LABEL409
jump LABEL424
LABEL409:
get_varbit 1627
iconst 0
if_icmpeq LABEL413
jump LABEL424
LABEL413:
if_icmpeq LABEL434
jump LABEL445
LABEL434:
iload 13
iconst 500
add
@@ -496,31 +516,50 @@ LABEL413:
sconst "1"
iconst 10616832
if_setontimer
LABEL424:
LABEL445:
jump LABEL462
LABEL446:
iload 7
sload 0
iload 9
iload 10
iconst 10682368
iload 8
iload 1
iconst 13
iload 7
iload 2
iload 3
iconst 65535
iconst 1
invoke 199
add
istore 7
LABEL462:
iload 10
if_clearops
iload 17
iconst 3
if_icmpeq LABEL436
if_icmpeq LABEL474
iload 17
iconst 6
if_icmpeq LABEL436
if_icmpeq LABEL474
iload 17
iconst 7
if_icmpeq LABEL436
jump LABEL470
LABEL436:
if_icmpeq LABEL474
jump LABEL508
LABEL474:
iload 14
iconst 1
if_icmpeq LABEL440
jump LABEL445
LABEL440:
if_icmpeq LABEL478
jump LABEL483
LABEL478:
iconst 8
sconst "Message"
iload 10
if_setop
jump LABEL453
LABEL445:
jump LABEL491
LABEL483:
iconst 8
sconst "Add friend"
iload 10
@@ -529,7 +568,7 @@ LABEL445:
sconst "Add ignore"
iload 10
if_setop
LABEL453:
LABEL491:
iconst 10
sconst "Report"
iload 10
@@ -546,13 +585,13 @@ LABEL453:
sconst "is"
iload 10
if_setonop
jump LABEL474
LABEL470:
jump LABEL512
LABEL508:
iconst -1
sconst ""
iload 10
if_setonop
LABEL474:
LABEL512:
iconst -1
sconst ""
iload 10
@@ -571,17 +610,17 @@ LABEL474:
iload 9
enum
istore 10
LABEL492:
LABEL530:
iload 12
chat_getprevuid
istore 12
jump LABEL314
LABEL496:
jump LABEL326
LABEL534:
iload 10
iconst -1
if_icmpne LABEL500
jump LABEL557
LABEL500:
if_icmpne LABEL538
jump LABEL621
LABEL538:
iload 10
if_clearops
iconst -1
@@ -604,34 +643,64 @@ LABEL500:
if_setsize
iconst 10682368
iload 9
iconst 2
iconst 4
multiply
cc_find
iconst 1
if_icmpeq LABEL528
jump LABEL532
LABEL528:
if_icmpeq LABEL566
jump LABEL570
LABEL566:
sconst ""
cc_settext
iconst 1
cc_sethide
LABEL532:
LABEL570:
iconst 10682368
iload 9
iconst 2
iconst 4
multiply
iconst 1
add
cc_find
iconst 1
if_icmpeq LABEL542
jump LABEL546
LABEL542:
if_icmpeq LABEL580
jump LABEL584
LABEL580:
sconst ""
cc_settext
iconst 1
cc_sethide
LABEL546:
LABEL584:
iconst 10682368
iload 9
iconst 4
multiply
iconst 2
add
cc_find
iconst 1
if_icmpeq LABEL594
jump LABEL598
LABEL594:
sconst ""
cc_settext
iconst 1
cc_sethide
LABEL598:
iconst 10682368
iload 9
iconst 4
multiply
iconst 3
add
cc_find
iconst 1
if_icmpeq LABEL608
jump LABEL610
LABEL608:
iconst 1
cc_sethide
LABEL610:
iload 9
iconst 1
add
@@ -642,6 +711,6 @@ LABEL546:
iload 9
enum
istore 10
jump LABEL496
LABEL557:
jump LABEL534
LABEL621:
return

View File

@@ -1 +1 @@
7D172258726F2B866D2EFFB0F2E401D0551A377DCA7F72CCD8839AC88B3EA6A2
F7D45F13B835E5F5B889D4ECF3A4A61829794BAB447B7FFE676B19659238DAA9

View File

@@ -40,12 +40,26 @@ LABEL16:
join_string 5
mes
LABEL23:
jump LABEL27
jump LABEL39
LABEL24:
iload 0
iconst 3
if_icmpeq LABEL31
iload 0
iconst 4
if_icmpeq LABEL31
jump LABEL36
LABEL31:
sload 0
iload 0
iconst 0
5010
jump LABEL39
LABEL36:
sload 0
iload 0
chat_sendpublic
LABEL27:
LABEL39:
clientclock
set_varc_int 61
return

View File

@@ -1 +1 @@
7AA081A68C6157F9B74DDB6B04F00B1691113941EED8996A4DEABF643F45EA25
F62AC1D5CB6A0C94DFCAEB8E4DC62E3513D0A757CADFDE2B1FF4418AF18AE841

View File

@@ -21,16 +21,16 @@ LABEL10:
istore 0
sstore 0
iconst 1
iconst 10616890
iconst 10616887
if_settextshadow
jump LABEL23
LABEL20:
iconst 0
iconst 10616890
iconst 10616887
if_settextshadow
LABEL23:
iload 0
iconst 10616890
iconst 10616887
if_setcolour
get_varc_string 335
string_length
@@ -118,13 +118,13 @@ LABEL95:
iconst 30
iconst 0
iconst 0
iconst 10616871
iconst 10616868
if_setsize
iconst 0
iconst 0
iconst 0
iconst 2
iconst 10616871
iconst 10616868
if_setposition
jump LABEL124
LABEL112:
@@ -132,17 +132,17 @@ LABEL112:
iconst 30
iconst 0
iconst 1
iconst 10616871
iconst 10616868
if_setsize
iconst 0
iconst 0
iconst 0
iconst 2
iconst 10616871
iconst 10616868
if_setposition
LABEL124:
iload 3
iconst 10616890
iconst 10616887
if_getwidth
if_icmpgt LABEL129
jump LABEL135
@@ -150,29 +150,29 @@ LABEL129:
iconst 2
iconst 2
iconst 0
iconst 10616890
iconst 10616887
if_settextalign
jump LABEL140
LABEL135:
iconst 0
iconst 2
iconst 0
iconst 10616890
iconst 10616887
if_settextalign
LABEL140:
iconst 10616890
iconst 10616887
if_clearops
iconst -1
sconst ""
iconst 10616890
iconst 10616887
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616890
iconst 10616887
if_setonmouseleave
iconst -1
sconst ""
iconst 10616890
iconst 10616887
if_setonop
jump LABEL205
LABEL155:
@@ -199,39 +199,39 @@ LABEL172:
iconst 1
iconst 2
iconst 0
iconst 10616890
iconst 10616887
if_settextalign
iconst 10
sconst "Configure"
iconst 10616890
iconst 10616887
if_setop
sconst "<col=ff9040>"
sconst "Display name"
sconst "</col>"
join_string 3
iconst 10616890
iconst 10616887
if_setopbase
iconst 45
iconst -2147483645
iload 1
sconst "Ii"
iconst 10616890
iconst 10616887
if_setonmouserepeat
iconst 45
iconst -2147483645
iload 0
sconst "Ii"
iconst 10616890
iconst 10616887
if_setonmouseleave
iconst 489
iconst -2147483644
iconst 1024
sconst "ii"
iconst 10616890
iconst 10616887
if_setonop
LABEL205:
sload 2
iconst 10616890
iconst 10616887
if_settext
sconst "setChatboxInput"
runelite_callback
@@ -239,6 +239,6 @@ LABEL205:
iconst 16
iconst 1
iconst 0
iconst 10616890
iconst 10616887
if_setsize
return

View File

@@ -1 +1 @@
49F71301DDB45F2010BA8EFCA9D32D08C2CEF0A5F4F441A1CC1F1FE2CCFD7C36
2FE66C1A3B63EEF10142A955C927054613F59A34C4A929C8AC79DBE0F1B06C30

View File

@@ -1,13 +1,13 @@
.id 73
.int_stack_count 2
.string_stack_count 0
.int_var_count 5
.int_var_count 8
.string_var_count 0
iconst 10616888
iconst 10616885
if_gethide
iconst 1
if_icmpeq LABEL9
iconst 10616889
iconst 10616886
if_gethide
iconst 1
if_icmpeq LABEL9
@@ -32,193 +32,465 @@ LABEL20:
istore 2
iconst 0
istore 3
iconst 0
istore 4
invoke 1972
iconst 1
if_icmpeq LABEL31
iconst 0 ; Modified to enable clanchat input
sconst "friendsChatInput"
runelite_callback
iconst 1
if_icmpeq LABEL31 ; Compare to 1
jump LABEL37
LABEL31:
get_varc_int 41
iconst 4
if_icmpeq LABEL35
jump LABEL37
LABEL35:
iconst 1
istore 4
LABEL37:
staffmodlevel
iconst 0
if_icmpgt LABEL41
jump LABEL43
LABEL41:
if_icmpgt LABEL29
jump LABEL60
LABEL29:
iconst 1
istore 3
LABEL43:
iload 3
iconst 1
if_icmpeq LABEL47
jump LABEL58
LABEL47:
sconst "`"
iload 1
string_indexof_char
iconst -1
if_icmpne LABEL53
jump LABEL58
LABEL53:
if_icmpne LABEL37
jump LABEL42
LABEL37:
iload 2
iconst 0
if_icmpeq LABEL57
jump LABEL58
LABEL57:
if_icmpeq LABEL41
jump LABEL42
LABEL41:
return
LABEL58:
iload 0
iconst 84
if_icmpeq LABEL62
jump LABEL194
LABEL62:
invoke 1984
iload 2
iconst 0
if_icmpgt LABEL67
jump LABEL193
LABEL67:
get_varc_string 335
sconst "/"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL77
iload 4
iconst 1
if_icmpeq LABEL77
jump LABEL112
LABEL77:
clan_getchatcount
iconst 0
if_icmpgt LABEL81
jump LABEL108
LABEL81:
iload 2
iconst 1
if_icmple LABEL85
jump LABEL90
LABEL85:
iload 4
iconst 0
if_icmpeq LABEL89
jump LABEL90
LABEL89:
return
LABEL90:
get_varbit 4394
iconst 1
if_icmpeq LABEL94
jump LABEL96
LABEL94:
clan_leavechat
jump LABEL107
LABEL96:
iload 4
iconst 1
if_icmpeq LABEL100
jump LABEL104
LABEL100:
sconst "/"
get_varc_string 335
append
set_varc_string 335
LABEL104:
get_varc_string 335
iconst 2
invoke 96
LABEL107:
jump LABEL111
LABEL108:
get_varc_string 335
iconst 0
invoke 96
LABEL111:
jump LABEL189
LABEL112:
LABEL42:
sconst ":"
iload 1
string_indexof_char
iconst -1
if_icmpne LABEL48
jump LABEL60
LABEL48:
get_varc_string 335
sconst "::"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL119
jump LABEL186
LABEL119:
if_icmpeq LABEL55
jump LABEL60
LABEL55:
iload 2
iconst 2
if_icmpgt LABEL123
jump LABEL182
LABEL123:
if_icmpeq LABEL59
jump LABEL60
LABEL59:
return
LABEL60:
iconst 0
istore 4
iconst -1
istore 5
iconst 0
istore 6
iconst -1
istore 7
iload 0
iconst 84
if_icmpeq LABEL72
jump LABEL421
LABEL72:
invoke 1984
iload 2
iconst 0
if_icmpgt LABEL77
jump LABEL420
LABEL77:
iload 3
iconst 1
if_icmpeq LABEL81
jump LABEL148
LABEL81:
sconst "give"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL87
jump LABEL91
LABEL87:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL91:
sconst "set"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL97
jump LABEL101
LABEL97:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL101:
sconst "get"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL107
jump LABEL111
LABEL107:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL111:
sconst "tele"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL117
jump LABEL121
LABEL117:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL121:
sconst "~"
iload 2
invoke 4481
iconst 1
if_icmpeq LABEL127
jump LABEL131
LABEL127:
get_varc_string 335
string_length
istore 2
jump LABEL148
LABEL131:
get_varc_string 335
sconst "::"
iconst 0
string_indexof_string
istore 7
iload 7
iconst 0
if_icmpgt LABEL140
jump LABEL148
LABEL140:
get_varc_string 335
iload 7
iload 2
substring
set_varc_string 335
get_varc_string 335
string_length
istore 2
LABEL148:
get_varc_string 335
sconst "::"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL155
jump LABEL158
LABEL155:
iconst 1
istore 4
jump LABEL171
LABEL158:
get_varc_int 41
iconst 5
if_icmpeq LABEL162
jump LABEL165
LABEL162:
iconst 41
istore 5
jump LABEL171
LABEL165:
get_varc_int 41
iconst 4
if_icmpeq LABEL169
jump LABEL171
LABEL169:
iconst 9
istore 5
LABEL171:
get_varc_string 335
sconst "///"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL185
get_varc_string 335
lowercase
sconst "/g "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL185
jump LABEL190
LABEL185:
iconst 3
iconst 44
istore 5
istore 6
jump LABEL226
LABEL190:
get_varc_string 335
sconst "//"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL197
jump LABEL202
LABEL197:
iconst 2
iconst 41
istore 5
istore 6
jump LABEL226
LABEL202:
get_varc_string 335
lowercase
sconst "/c "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL210
jump LABEL215
LABEL210:
iconst 3
iconst 41
istore 5
istore 6
jump LABEL226
LABEL215:
get_varc_string 335
sconst "/"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL222
jump LABEL226
LABEL222:
iconst 1
iconst 9
istore 5
istore 6
LABEL226:
iload 5
iconst 44
if_icmpeq LABEL230
jump LABEL260
LABEL230:
3800
iconst 1
if_icmpeq LABEL234
jump LABEL257
LABEL234:
3850
iconst 1
if_icmpeq LABEL238
jump LABEL257
LABEL238:
iload 2
iload 6
if_icmple LABEL242
jump LABEL243
LABEL242:
return
LABEL243:
3803
iconst 1
if_icmpeq LABEL247
jump LABEL254
LABEL247:
get_varc_string 335
iload 6
iload 2
substring
iconst 4
invoke 96
jump LABEL256
LABEL254:
sconst "Guests are not invited to speak in this clan's channel."
mes
LABEL256:
jump LABEL259
LABEL257:
sconst "You are not chatting as a guest in a clan channel at the moment."
mes
LABEL259:
jump LABEL416
LABEL260:
iload 5
iconst 41
if_icmpeq LABEL264
jump LABEL307
LABEL264:
iconst 0
3851
iconst 1
if_icmpeq LABEL269
jump LABEL304
LABEL269:
get_varbit 931
iconst 0
if_icmpeq LABEL273
jump LABEL301
LABEL273:
iload 2
iload 6
if_icmple LABEL277
jump LABEL278
LABEL277:
return
LABEL278:
chat_playername
removetags
3860
istore 7
iload 7
iconst -1
if_icmpne LABEL286
jump LABEL298
LABEL286:
iload 7
3857
3854
if_icmpge LABEL291
jump LABEL298
LABEL291:
get_varc_string 335
iload 6
iload 2
substring
iconst 3
invoke 96
jump LABEL300
LABEL298:
sconst "You do not have the required rank to talk in the clan's channel."
mes
LABEL300:
jump LABEL303
LABEL301:
sconst "You have muted your clan's channel. Unmute it if you wish to talk in it."
mes
LABEL303:
jump LABEL306
LABEL304:
sconst "You are not chatting in the channel of your own clan at the moment."
mes
LABEL306:
jump LABEL416
LABEL307:
iload 5
iconst 9
if_icmpeq LABEL311
jump LABEL342
LABEL311:
clan_getchatcount
iconst 0
if_icmpgt LABEL315
jump LABEL338
LABEL315:
iload 2
iload 6
if_icmple LABEL319
jump LABEL320
LABEL319:
return
LABEL320:
get_varbit 4394
iconst 1
if_icmpeq LABEL324
jump LABEL326
LABEL324:
clan_leavechat
jump LABEL337
LABEL326:
iload 6
iconst 1
if_icmplt LABEL330
jump LABEL334
LABEL330:
sconst "/"
get_varc_string 335
append
set_varc_string 335
LABEL334:
get_varc_string 335
iconst 2
invoke 96
LABEL337:
jump LABEL341
LABEL338:
get_varc_string 335
iconst 0
invoke 96
LABEL341:
jump LABEL416
LABEL342:
iload 4
iconst 1
if_icmpeq LABEL346
jump LABEL413
LABEL346:
iload 2
iconst 2
if_icmpgt LABEL350
jump LABEL409
LABEL350:
get_varc_string 335
sconst "::toggleroof"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL130
jump LABEL144
LABEL130:
if_icmpeq LABEL357
jump LABEL371
LABEL357:
getremoveroofs
iconst 1
if_icmpeq LABEL134
jump LABEL139
LABEL134:
if_icmpeq LABEL361
jump LABEL366
LABEL361:
iconst 0
setremoveroofs
sconst "Roofs will only be removed selectively."
mes
jump LABEL143
LABEL139:
jump LABEL370
LABEL366:
iconst 1
setremoveroofs
sconst "Roofs are now all hidden."
mes
LABEL143:
jump LABEL181
LABEL144:
LABEL370:
jump LABEL408
LABEL371:
get_varc_string 335
sconst "::wiki "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL156
if_icmpeq LABEL383
get_varc_string 335
sconst "::wiki"
compare
iconst 0
if_icmpeq LABEL156
if_icmpeq LABEL383
sconst "runeliteCommand" ; load callback name
runelite_callback ; invoke callback
jump LABEL159
LABEL156:
jump LABEL386
LABEL383:
get_varc_string 335
invoke 3299
jump LABEL181
LABEL159:
jump LABEL408
LABEL386:
get_varc_string 335
sconst "::bank"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL166
jump LABEL170
LABEL166:
if_icmpeq LABEL393
jump LABEL397
LABEL393:
sconst "Hey, everyone, I just tried to do something very silly!"
iconst 0
invoke 96
jump LABEL181
LABEL170:
jump LABEL408
LABEL397:
get_varc_string 335
invoke 224
set_varc_string 335
@@ -230,91 +502,91 @@ LABEL170:
iload 2
substring
docheat
LABEL181:
jump LABEL185
LABEL182:
LABEL408:
jump LABEL412
LABEL409:
get_varc_string 335
iconst 0
invoke 96
LABEL185:
jump LABEL189
LABEL186:
LABEL412:
jump LABEL416
LABEL413:
get_varc_string 335
iconst 0
invoke 96
LABEL189:
LABEL416:
get_varc_string 335
invoke 77
sconst ""
set_varc_string 335
LABEL193:
jump LABEL269
LABEL194:
LABEL420:
jump LABEL496
LABEL421:
iload 0
iconst 104
if_icmpeq LABEL198
jump LABEL204
LABEL198:
if_icmpeq LABEL425
jump LABEL431
LABEL425:
iload 3
iconst 1
if_icmpeq LABEL202
jump LABEL203
LABEL202:
if_icmpeq LABEL429
jump LABEL430
LABEL429:
invoke 75
LABEL203:
jump LABEL269
LABEL204:
LABEL430:
jump LABEL496
LABEL431:
iload 0
iconst 105
if_icmpeq LABEL208
jump LABEL214
LABEL208:
if_icmpeq LABEL435
jump LABEL441
LABEL435:
iload 3
iconst 1
if_icmpeq LABEL212
jump LABEL213
LABEL212:
if_icmpeq LABEL439
jump LABEL440
LABEL439:
invoke 76
LABEL213:
jump LABEL269
LABEL214:
LABEL440:
jump LABEL496
LABEL441:
iload 0
iconst 80
if_icmpeq LABEL218
jump LABEL263
LABEL218:
if_icmpeq LABEL445
jump LABEL490
LABEL445:
iconst 40697935
iconst 1
cc_find
iconst 1
if_icmpeq LABEL224
jump LABEL225
LABEL224:
if_icmpeq LABEL451
jump LABEL452
LABEL451:
return
LABEL225:
LABEL452:
get_varc_string 356
string_length
iconst 0
if_icmpgt LABEL230
jump LABEL250
LABEL230:
if_icmpgt LABEL457
jump LABEL477
LABEL457:
get_varc_string 356
friend_test
iconst 1
if_icmpeq LABEL235
jump LABEL238
LABEL235:
if_icmpeq LABEL462
jump LABEL465
LABEL462:
get_varc_string 356
invoke 107
return
LABEL238:
LABEL465:
get_varc_int 60
clientclock
if_icmpgt LABEL242
jump LABEL243
LABEL242:
if_icmpgt LABEL469
jump LABEL470
LABEL469:
return
LABEL243:
LABEL470:
clientclock
iconst 50
add
@@ -322,14 +594,14 @@ LABEL243:
sconst "That player was not found on your Friends list."
mes
return
LABEL250:
LABEL477:
get_varc_int 60
clientclock
if_icmpgt LABEL254
jump LABEL255
LABEL254:
if_icmpgt LABEL481
jump LABEL482
LABEL481:
return
LABEL255:
LABEL482:
clientclock
iconst 50
add
@@ -337,8 +609,8 @@ LABEL255:
sconst "You haven't received any messages to which you can reply."
mes
return
jump LABEL269
LABEL263:
jump LABEL496
LABEL490:
get_varc_string 335
iconst 0
iload 0
@@ -350,9 +622,9 @@ LABEL263:
runelite_callback ;
if_icmpeq SKIPSETVARC ; skip setting varc with input
set_varc_string 335
jump LABEL269 ; jump over SKIPSETVARC
jump LABEL496 ; jump over SKIPSETVARC
SKIPSETVARC:
pop_string ; pop message
LABEL269:
LABEL496:
invoke 223
return

View File

@@ -1 +1 @@
9B3B448D76D57F6D63C9CDA06E58695F6DEBE91F9EDF2D2C4876E064D1067FD6
5A68D15CBC52892CD84A0961CC0D5A84B653B4320F0AA3B11E80EE0D2126B584

View File

@@ -12,23 +12,23 @@
jump CONFIRM_KICK ; Jump to our new label instead
LABEL4:
sconst "You can't kick players from your team during Wilderness Wars."
mes
return
mes
return
LABEL7:
sconst "-Attempting to kick player from friends chat..."
sconst "-Attempting to kick player from chat-channel..."
iconst 2
invoke 96
sload 0
clan_kickuser
clan_kickuser
jump LABEL73
LABEL73:
return
return
CONFIRM_KICK:
sload 0 ; Username we are trying to kick
iconst 0 ; Modified if we are confirming the kick inside the plugin
sconst "confirmFriendsChatKick"
runelite_callback
pop_string ; Pop username
runelite_callback
pop_string ; Pop username
iconst 0 ; Compare against zero
if_icmpgt LABEL73 ; Early return for chatbox panel confirmation
jump LABEL7

View File

@@ -1 +1 @@
D503F0A0BDEC3DDA9719AB601F5EF294FBBE2747BA4B13529E61806FC65DDF77
1DEBBDF2928F79FE6BDEC5FB3BBF52A18A111D16CF7E079F51B349C6F6DB654A

View File

@@ -15,7 +15,7 @@ LABEL5:
sconst "Show items whose names contain the following text:"
sconst "setSearchBankInputText" ; load event name
runelite_callback ; invoke callback
iconst 10616876
iconst 10616873
if_settext
sconst ""
invoke 222
@@ -26,11 +26,11 @@ LABEL5:
iconst -2147483639
sload 0
sconst "izs"
iconst 10616877
iconst 10616874
if_setonkey
iconst 138
sconst ""
iconst 10616877
iconst 10616874
if_setondialogabort
invoke 1972
iconst 1

View File

@@ -1 +1 @@
12B91B740FE760F73A23EF34E1D4F53EA00F829EF7FC33E648F6FF5EA17417A0
559DA005256EF939AA48F2B0B2B8C5D05168D50D378253DF81B0B68C20331A95

View File

@@ -25,7 +25,7 @@ LABEL10:
iload 1
iconst 0
if_icmpgt LABEL21
jump LABEL187
jump LABEL255
LABEL21:
get_varc_int 5
switch
@@ -36,18 +36,22 @@ LABEL21:
5: LABEL26
6: LABEL47
7: LABEL110
8: LABEL114
9: LABEL120
10: LABEL123
11: LABEL179
12: LABEL139
13: LABEL157
15: LABEL120
16: LABEL184
jump LABEL186
8: LABEL116
9: LABEL124
10: LABEL191
11: LABEL247
12: LABEL207
13: LABEL225
15: LABEL124
16: LABEL252
18: LABEL247
19: LABEL110
20: LABEL124
21: LABEL124
jump LABEL254
LABEL24:
return
jump LABEL186
jump LABEL254
LABEL26:
ignore_count
iconst 0
@@ -75,7 +79,7 @@ LABEL44:
get_varc_string 359
ignore_del
LABEL46:
jump LABEL186
jump LABEL254
LABEL47:
friend_count
iconst 0
@@ -159,77 +163,149 @@ LABEL107:
clientclock
set_varc_int 61
LABEL109:
jump LABEL186
jump LABEL254
LABEL110:
get_varc_string 359
invoke 212
resume_countdialog
jump LABEL186
LABEL114:
iconst 0
set_varc_int 5
jump LABEL254
LABEL116:
get_varc_string 359
removetags
set_varc_string 361
get_varc_string 359
resume_namedialog
iconst 0
set_varc_int 5
jump LABEL254
LABEL124:
get_varc_int 5
iconst 20
if_icmpeq LABEL128
jump LABEL132
LABEL128:
get_varc_string 359
removetags
invoke 4394
jump LABEL186
LABEL120:
LABEL132:
get_varc_int 5
iconst 21
if_icmpeq LABEL136
jump LABEL186
LABEL136:
get_varc_string 359
sconst "jagex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jaqex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jagx"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jgex"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "jgx"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "admin"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "staff"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "-"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst "_"
sconst " "
invoke 4191
set_varc_string 359
get_varc_string 359
sconst " "
sconst " "
invoke 4191
set_varc_string 359
LABEL186:
get_varc_string 359
resume_stringdialog
jump LABEL186
LABEL123:
iconst 0
set_varc_int 5
jump LABEL254
LABEL191:
get_varbit 8119
iconst 0
if_icmpeq LABEL127
jump LABEL133
LABEL127:
if_icmpeq LABEL195
jump LABEL201
LABEL195:
iconst 1
iconst 1
invoke 299
sconst "You must set a name before you can chat."
mes
return
LABEL133:
LABEL201:
get_varc_string 359
removetags
set_varc_string 362
get_varc_string 359
clan_joinchat
jump LABEL186
LABEL139:
jump LABEL254
LABEL207:
iload 1
iconst 10
if_icmpgt LABEL143
jump LABEL149
LABEL143:
if_icmpgt LABEL211
jump LABEL217
LABEL211:
get_varc_string 359
iconst 0
iconst 9
substring
sstore 0
jump LABEL151
LABEL149:
jump LABEL219
LABEL217:
get_varc_string 359
sstore 0
LABEL151:
LABEL219:
sload 0
lowercase
chat_setmessagefilter
invoke 553
invoke 84
jump LABEL186
LABEL157:
jump LABEL254
LABEL225:
get_varbit 8119
iconst 0
if_icmpeq LABEL161
jump LABEL167
LABEL161:
if_icmpeq LABEL229
jump LABEL235
LABEL229:
iconst 1
iconst 1
invoke 299
sconst "You must set a name before you can chat."
mes
return
LABEL167:
LABEL235:
get_varc_string 359
iconst 0
set_varc_int 62
@@ -239,35 +315,37 @@ LABEL167:
iconst -2147483645
iconst 1
sconst "I1"
iconst 10616845
iconst 10616843
if_setontimer
jump LABEL186
LABEL179:
jump LABEL254
LABEL247:
iconst 0
iconst 1
invoke 299
return
jump LABEL186
LABEL184:
jump LABEL254
LABEL252:
get_varc_string 359
invoke 2061
LABEL186:
jump LABEL193
LABEL187:
LABEL254:
jump LABEL261
LABEL255:
get_varc_int 5
switch
16: LABEL192
7: LABEL190
8: LABEL190
9: LABEL190
15: LABEL190
jump LABEL193
LABEL190:
16: LABEL260
20: LABEL258
21: LABEL258
7: LABEL258
8: LABEL258
9: LABEL258
15: LABEL258
jump LABEL261
LABEL258:
return
jump LABEL193
LABEL192:
jump LABEL261
LABEL260:
return
LABEL193:
LABEL261:
iconst 1
iconst 1
invoke 299

View File

@@ -1 +1 @@
A9577B60999F586BCC424D2312B2D4A5D033DB0A3228719B9BA1DFD9742B92E7
FDFF71BAC7D5E10C1E88F445D60100552D0C5B14A66F8648FFEC39573ECFBE8E

View File

@@ -6,10 +6,10 @@
sconst "resetChatboxInput"
runelite_callback
iconst 1
iconst 10616872
iconst 10616869
if_sethide
iconst 0
iconst 10616888
iconst 10616885
if_sethide
invoke 923
iconst 0
@@ -42,206 +42,228 @@ LABEL27:
LABEL31:
invoke 2581
LABEL32:
get_varc_int 5
switch
19: LABEL35
20: LABEL41
21: LABEL41
7: LABEL35
8: LABEL38
9: LABEL41
15: LABEL41
jump LABEL43
LABEL35:
sconst "0"
resume_countdialog
jump LABEL43
LABEL38:
sconst ""
resume_namedialog
jump LABEL43
LABEL41:
sconst ""
resume_stringdialog
LABEL43:
iconst 0
set_varc_int 5
iload 0
iconst 1
if_icmpeq LABEL38
jump LABEL40
LABEL38:
if_icmpeq LABEL49
jump LABEL51
LABEL49:
sconst ""
set_varc_string 359
LABEL40:
LABEL51:
iconst 0
iconst -8
iconst 1
iconst 1
iconst 10616876
iconst 10616873
if_setposition
iconst 0
iconst 40
iconst 1
iconst 0
iconst 10616876
iconst 10616873
if_setsize
iconst 0
iconst 22
iconst 1
iconst 1
iconst 10616877
iconst 10616874
if_setposition
iconst 0
iconst 20
iconst 1
iconst 0
iconst 10616877
iconst 10616874
if_setsize
iconst 0
iconst 10616876
iconst 10616873
if_sethide
iconst 0
iconst 10616877
iconst 10616874
if_sethide
iconst 1
iconst 10616881
iconst 10616878
if_sethide
iconst 1
iconst 10616887
iconst 10616884
if_sethide
iconst 0
iconst 0
iconst 10616885
iconst 10616882
if_setscrollpos
iconst 10616885
iconst 10616882
cc_deleteall
iconst 10616886
iconst 10616883
cc_deleteall
iconst 0
iconst -8
iconst 1
iconst 1
iconst 10616876
iconst 10616873
if_setposition
iconst 0
iconst 40
iconst 1
iconst 0
iconst 10616876
iconst 10616873
if_setsize
iconst 1
iconst 1
iconst 0
iconst 10616876
iconst 10616873
if_settextalign
iconst 496
iconst 10616876
iconst 10616873
if_settextfont
iconst 496
iconst 10616877
iconst 10616874
if_settextfont
iconst 128
iconst 10616877
iconst 10616874
if_setcolour
iconst -1
sconst ""
iconst 10616877
iconst 10616874
if_setonmouseover
iconst -1
sconst ""
iconst 10616877
iconst 10616874
if_setonmouseleave
sconst ""
iconst 10616877
iconst 10616874
if_settext
iconst 0
iconst 22
iconst 1
iconst 1
iconst 10616877
iconst 10616874
if_setposition
iconst -1
sconst ""
iconst 10616872
iconst 10616869
if_setonclick
iconst -1
sconst ""
iconst 10616877
iconst 10616874
if_setonclick
iconst -1
sconst ""
iconst 10616877
iconst 10616874
if_setonkey
iconst 1
iconst 10616874
iconst 10616871
if_sethide
iconst -1
sconst ""
iconst 10616872
iconst 10616869
if_setonclick
iconst -1
sconst ""
iconst 10616872
iconst 10616869
if_setontimer
iconst 10616872
iconst 10616869
cc_deleteall
iconst 10616878
iconst 10616875
cc_deleteall
iconst 10616879
iconst 10616876
cc_deleteall
iconst 10616880
iconst 10616877
cc_deleteall
iconst 1
iconst 10616878
iconst 10616875
if_sethide
iconst 1
iconst 10616879
iconst 10616876
if_sethide
iconst 1
iconst 10616880
iconst 10616877
if_sethide
iconst -1
sconst ""
iconst 10616878
iconst 10616875
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616879
iconst 10616876
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616880
iconst 10616877
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616878
iconst 10616875
if_setonmouseleave
iconst -1
sconst ""
iconst 10616879
iconst 10616876
if_setonmouseleave
iconst -1
sconst ""
iconst 10616880
iconst 10616877
if_setonmouseleave
iconst -1
sconst ""
iconst 10616878
iconst 10616875
if_setontimer
iconst -1
sconst ""
iconst 10616879
iconst 10616876
if_setontimer
iconst -1
sconst ""
iconst 10616880
iconst 10616877
if_setontimer
iconst -1
sconst ""
iconst 10616878
iconst 10616875
if_setonclick
iconst -1
sconst ""
iconst 10616879
iconst 10616876
if_setonclick
iconst -1
sconst ""
iconst 10616880
iconst 10616877
if_setonclick
get_varc_int 41
iconst 1337
if_icmpeq LABEL219
jump LABEL223
LABEL219:
if_icmpeq LABEL230
jump LABEL234
LABEL230:
invoke 2526
pop_int
clientclock
set_varc_int 384
LABEL223:
LABEL234:
invoke 1972
iconst 1
if_icmpeq LABEL227
jump LABEL228
LABEL227:
if_icmpeq LABEL238
jump LABEL239
LABEL238:
invoke 2581
LABEL228:
LABEL239:
return

View File

@@ -1 +1 @@
8567736DBA2A2558DBD5883204C10FF794768C18DB4D85FE44C0959EB7F40885
1CEB4F2F85A8FECA9D9CB80DCAF0CB6A1FB3670607C6CDE80363BC40E95CA1E3

View File

@@ -45,7 +45,7 @@ LABEL26:
invoke 183
LABEL31:
iload 0
iconst 10616869
iconst 10616866
if_sethide
get_varbit 6374
iconst 1
@@ -61,13 +61,13 @@ LABEL42:
iconst 0
iconst 2
iconst 0
iconst 10616891
iconst 10616888
if_setposition
iconst -1
iconst 0
iconst 0
iconst 0
iconst 10617392
iconst 10617389
if_setposition
jump LABEL67
LABEL55:
@@ -75,18 +75,18 @@ LABEL55:
iconst 0
iconst 0
iconst 0
iconst 10616891
iconst 10616888
if_setposition
iconst 0
iconst 0
iconst 2
iconst 0
iconst 10617392
iconst 10617389
if_setposition
LABEL67:
iconst 10616870
iconst 10616867
cc_deleteall
iconst 10616889
iconst 10616886
cc_deleteall
iconst 0
istore 1
@@ -105,13 +105,13 @@ LABEL81:
iconst 2155
get_varc_int 223
sconst "i"
iconst 10616870
iconst 10616867
if_setontimer
jump LABEL93
LABEL89:
iconst -1
sconst ""
iconst 10616870
iconst 10616867
if_setontimer
LABEL93:
invoke 921
@@ -120,14 +120,14 @@ LABEL93:
jump LABEL163
LABEL97:
iconst 1
iconst 10616870
iconst 10616867
if_setnoclickthrough
iload 1
iconst 0
if_icmpeq LABEL104
jump LABEL142
LABEL104:
iconst 10616870
iconst 10616867
iconst 5
iconst 0
cc_create
@@ -147,7 +147,7 @@ LABEL104:
cc_settiling
iconst 0
cc_settrans
iconst 10616889
iconst 10616886
iconst 3
iconst 0
cc_create
@@ -166,7 +166,7 @@ LABEL104:
iconst 1
cc_setfill
LABEL142:
iconst 10617392
iconst 10617389
iconst 792
iconst 789
iconst 790
@@ -203,15 +203,15 @@ LABEL163:
jump LABEL177
LABEL173:
iconst 1
iconst 10616870
iconst 10616867
if_setnoclickthrough
jump LABEL183
LABEL177:
iconst 0
iconst 10616870
iconst 10616867
if_setnoclickthrough
iconst 1
iconst 10616870
iconst 10616867
2006
LABEL183:
iconst 0
@@ -231,7 +231,7 @@ LABEL193:
if_icmplt LABEL197
jump LABEL272
LABEL197:
iconst 10616870
iconst 10616867
iconst 3
iload 4
cc_create
@@ -251,13 +251,13 @@ LABEL197:
cc_setfill
iconst 254
cc_settrans
iconst 10616889
iconst 10616886
iconst 3
iload 4
iconst 2
multiply
cc_create
iconst 10616889
iconst 10616886
iconst 3
iload 4
iconst 2
@@ -311,7 +311,7 @@ LABEL272:
runelite_callback
jump LABEL339
LABEL273:
iconst 10616870
iconst 10616867
iconst 3
iload 4
cc_create
@@ -331,13 +331,13 @@ LABEL273:
cc_setfill
iconst 225
cc_settrans
iconst 10616889
iconst 10616886
iconst 3
iload 4
iconst 2
multiply
cc_create
iconst 10616889
iconst 10616886
iconst 3
iload 4
iconst 2
@@ -378,7 +378,7 @@ LABEL273:
iconst 130
cc_settrans 1
LABEL339:
iconst 10617392
iconst 10617389
iconst 1190
iconst 1187
iconst 1188