Merge remote-tracking branch 'runelite/master'

This commit is contained in:
Owain van Brakel
2022-04-27 13:54:52 +02:00
20 changed files with 1729 additions and 202 deletions

View File

@@ -250,15 +250,6 @@ public enum ItemMapping
BLACK_MASK_I_25276, BLACK_MASK_1_I_25275, BLACK_MASK_2_I_25274, BLACK_MASK_3_I_25273, BLACK_MASK_4_I_25272, BLACK_MASK_5_I_25271, BLACK_MASK_6_I_25270, BLACK_MASK_7_I_25269, BLACK_MASK_8_I_25268, BLACK_MASK_9_I_25267, BLACK_MASK_10_I_25266,
TZTOK_SLAYER_HELMET, TZTOK_SLAYER_HELMET_I, TZTOK_SLAYER_HELMET_I_25902, VAMPYRIC_SLAYER_HELMET, VAMPYRIC_SLAYER_HELMET_I, VAMPYRIC_SLAYER_HELMET_I_25908, TZKAL_SLAYER_HELMET, TZKAL_SLAYER_HELMET_I, TZKAL_SLAYER_HELMET_I_25914),
// Pharaoh's Sceptres
ITEM_PHARAOHS_SCEPTRE_1(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_1),
ITEM_PHARAOHS_SCEPTRE_2(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_2),
ITEM_PHARAOHS_SCEPTRE_4(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_4),
ITEM_PHARAOHS_SCEPTRE_5(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_5),
ITEM_PHARAOHS_SCEPTRE_6(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_6),
ITEM_PHARAOHS_SCEPTRE_7(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_7),
ITEM_PHARAOHS_SCEPTRE_8(PHARAOHS_SCEPTRE, PHARAOHS_SCEPTRE_8),
// Revertible items
ITEM_HYDRA_LEATHER(HYDRA_LEATHER, FEROCIOUS_GLOVES),
ITEM_HYDRA_TAIL(HYDRA_TAIL, BONECRUSHER_NECKLACE),

View File

@@ -82,7 +82,7 @@ public class BankPlugin extends Plugin
private static final String SEED_VAULT_TITLE = "Seed Vault";
private static final String NUMBER_REGEX = "[0-9]+(\\.[0-9]+)?[kmb]?";
private static final Pattern VALUE_SEARCH_PATTERN = Pattern.compile("^(?<mode>ge|ha|alch)?" +
private static final Pattern VALUE_SEARCH_PATTERN = Pattern.compile("^(?<mode>qty|ge|ha|alch)?" +
" *(((?<op>[<>=]|>=|<=) *(?<num>" + NUMBER_REGEX + "))|" +
"((?<num1>" + NUMBER_REGEX + ") *- *(?<num2>" + NUMBER_REGEX + ")))$", Pattern.CASE_INSENSITIVE);
@@ -413,13 +413,26 @@ public class BankPlugin extends Plugin
final int qty = itemQuantities.count(itemId);
final long gePrice = (long) itemManager.getItemPrice(itemId) * qty;
final long haPrice = (long) itemComposition.getHaPrice() * qty;
final boolean isPlaceholder = itemComposition.getPlaceholderTemplateId() != -1;
long value = Math.max(gePrice, haPrice);
final String mode = matcher.group("mode");
if (mode != null)
{
value = mode.toLowerCase().equals("ge") ? gePrice : haPrice;
switch (mode.toLowerCase())
{
case "qty":
value = isPlaceholder ? 0 : qty;
break;
case "ge":
value = gePrice;
break;
case "ha":
case "alch":
value = haPrice;
break;
}
}
final String op = matcher.group("op");

View File

@@ -107,7 +107,7 @@ import org.apache.commons.text.WordUtils;
public class ChatCommandsPlugin extends Plugin
{
private static final Pattern KILLCOUNT_PATTERN = Pattern.compile("Your (?:completion count for |subdued |completed )?(.+?) (?:(?:kill|harvest|lap|completion) )?(?:count )?is: <col=ff0000>(\\d+)</col>");
private static final String TEAM_SIZES = "(?<teamsize>\\d+(?:\\+|-\\d+)? players|Solo)";
private static final String TEAM_SIZES = "(?<teamsize>\\d+(?:\\+|-\\d+)? players?|Solo)";
private static final Pattern RAIDS_PB_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + TEAM_SIZES + "</col> Duration:</col> <col=ff0000>(?<pb>[0-9:]+(?:\\.[0-9]+)?)</col> \\(new personal best\\)</col>");
private static final Pattern RAIDS_DURATION_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + TEAM_SIZES + "</col> Duration:</col> <col=ff0000>[0-9:.]+</col> Personal best: </col><col=ff0000>(?<pb>[0-9:]+(?:\\.[0-9]+)?)</col>");
private static final Pattern KILL_DURATION_PATTERN = Pattern.compile("(?i)(?:(?:Fight |Lap |Challenge |Corrupted challenge )?duration:|Subdued in|(?<!total )completion time:) <col=[0-9a-f]{6}>[0-9:.]+</col>\\. Personal best: (?:<col=ff0000>)?(?<pb>[0-9:]+(?:\\.[0-9]+)?)");
@@ -115,7 +115,7 @@ public class ChatCommandsPlugin extends Plugin
private static final Pattern DUEL_ARENA_WINS_PATTERN = Pattern.compile("You (were defeated|won)! You have(?: now)? won ([\\d,]+|one) duels?");
private static final Pattern DUEL_ARENA_LOSSES_PATTERN = Pattern.compile("You have(?: now)? lost ([\\d,]+|one) duels?");
private static final Pattern ADVENTURE_LOG_TITLE_PATTERN = Pattern.compile("The Exploits of (.+)");
private static final Pattern ADVENTURE_LOG_PB_PATTERN = Pattern.compile("Fastest (?:kill|run)(?: - \\(Team size: " + TEAM_SIZES + "\\))?: (?<time>[0-9:]+(?:\\.[0-9]+)?)");
private static final Pattern ADVENTURE_LOG_PB_PATTERN = Pattern.compile("Fastest (?:kill|run|Room time)(?: - \\(Team size: \\(?" + TEAM_SIZES + "\\)\\)?)?: (?<time>[0-9:]+(?:\\.[0-9]+)?)");
private static final Pattern HS_PB_PATTERN = Pattern.compile("Floor (?<floor>\\d) time: <col=ff0000>(?<floortime>[0-9:]+(?:\\.[0-9]+)?)</col>(?: \\(new personal best\\)|. Personal best: (?<floorpb>[0-9:]+(?:\\.[0-9]+)?))" +
"(?:<br>Overall time: <col=ff0000>(?<otime>[0-9:]+(?:\\.[0-9]+)?)</col>(?: \\(new personal best\\)|. Personal best: (?<opb>[0-9:]+(?:\\.[0-9]+)?)))?");
private static final Pattern HS_KC_FLOOR_PATTERN = Pattern.compile("You have completed Floor (\\d) of the Hallowed Sepulchre! Total completions: <col=ff0000>([0-9,]+)</col>\\.");
@@ -673,7 +673,6 @@ public class ChatCommandsPlugin extends Plugin
for (int i = 0; i < text.length; ++i)
{
String boss = longBossName(text[i]);
double pb = Double.MAX_VALUE;
for (i = i + 1; i < text.length; ++i)
{
@@ -683,19 +682,35 @@ public class ChatCommandsPlugin extends Plugin
break;
}
// Some bosses have multiple pbs for each team size, just use the lowest
Matcher matcher = ADVENTURE_LOG_PB_PATTERN.matcher(line);
if (matcher.find())
{
double s = timeStringToSeconds(matcher.group("time"));
pb = Math.min(pb, s);
}
}
final double s = timeStringToSeconds(matcher.group("time"));
String teamSize = matcher.group("teamsize");
if (teamSize != null)
{
// 3 player -> 3 players
// 1 player -> Solo
// Solo -> Solo
// 2 players -> 2 players
if (teamSize.equals("1 player"))
{
teamSize = "Solo";
}
else if (teamSize.endsWith("player"))
{
teamSize = teamSize + "s";
}
if (pb < Double.MAX_VALUE)
{
log.debug("Found adventure log PB for {}: {}", boss, pb);
setPb(boss, pb);
log.debug("Found team-size adventure log PB for {} {}: {}", boss, teamSize, s);
setPb(boss + " " + teamSize, s);
}
else
{
log.debug("Found adventure log PB for {}: {}", boss, s);
setPb(boss, s);
}
}
}
}
}

View File

@@ -204,7 +204,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu
new EmoteClue("Wave in the Falador gem store. Equip a Mithril pickaxe, Black platebody and an Iron Kiteshield.", "Falador", NEAR_HERQUINS_SHOP_IN_FALADOR, new WorldPoint(2945, 3335, 0), WAVE, item(MITHRIL_PICKAXE), item(BLACK_PLATEBODY), item(IRON_KITESHIELD)),
new EmoteClue("Wave on Mudskipper Point. Equip a black cape, leather chaps and a steel mace.", "Mudskipper Point", MUDSKIPPER_POINT, new WorldPoint(2989, 3110, 0), WAVE, item(BLACK_CAPE), item(LEATHER_CHAPS), item(STEEL_MACE)),
new EmoteClue("Wave on the northern wall of Castle Drakan. Beware of double agents! Wear a dragon sq shield, splitbark body and any boater.", "Castle Drakan", NORTHERN_WALL_OF_CASTLE_DRAKAN, new WorldPoint(3562, 3379, 0), DOUBLE_AGENT_141, WAVE, any("Dragon sq shield", item(DRAGON_SQ_SHIELD), item(DRAGON_SQ_SHIELD_G)), item(SPLITBARK_BODY), any("Any boater", item(RED_BOATER), item(ORANGE_BOATER), item(GREEN_BOATER), item(BLUE_BOATER), item(BLACK_BOATER), item(PINK_BOATER), item(PURPLE_BOATER), item(WHITE_BOATER))),
new EmoteClue("Yawn in the 7th room of Pyramid Plunder. Beware of double agents! Equip a pharaoh sceptre and a full set of menaphite robes.", "Pyramid Plunder", _7TH_CHAMBER_OF_JALSAVRAH, new WorldPoint(1944, 4427, 0), DOUBLE_AGENT_141, YAWN, any("Pharaoh's sceptre", item(PHARAOHS_SCEPTRE), item(PHARAOHS_SCEPTRE_1), item(PHARAOHS_SCEPTRE_2), item(PHARAOHS_SCEPTRE_3), item(PHARAOHS_SCEPTRE_4), item(PHARAOHS_SCEPTRE_5), item(PHARAOHS_SCEPTRE_6), item(PHARAOHS_SCEPTRE_7), item(PHARAOHS_SCEPTRE_8)), any("Full set of menaphite robes", all(item(MENAPHITE_PURPLE_HAT), item(MENAPHITE_PURPLE_TOP), range(MENAPHITE_PURPLE_ROBE, MENAPHITE_PURPLE_KILT)), all(item(MENAPHITE_RED_HAT), item(MENAPHITE_RED_TOP), range(MENAPHITE_RED_ROBE, MENAPHITE_RED_KILT)))),
new EmoteClue("Yawn in the 7th room of Pyramid Plunder. Beware of double agents! Equip a pharaoh sceptre and a full set of menaphite robes.", "Pyramid Plunder", _7TH_CHAMBER_OF_JALSAVRAH, new WorldPoint(1944, 4427, 0), DOUBLE_AGENT_141, YAWN, any("Pharaoh's sceptre", item(PHARAOHS_SCEPTRE), item(PHARAOHS_SCEPTRE), item(PHARAOHS_SCEPTRE_9045), item(PHARAOHS_SCEPTRE_9046), item(PHARAOHS_SCEPTRE_9047), item(PHARAOHS_SCEPTRE_9048), item(PHARAOHS_SCEPTRE_9049), item(PHARAOHS_SCEPTRE_9050), item(PHARAOHS_SCEPTRE_9051), item(PHARAOHS_SCEPTRE_13074), item(PHARAOHS_SCEPTRE_13075), item(PHARAOHS_SCEPTRE_13077), item(PHARAOHS_SCEPTRE_13078), item(PHARAOHS_SCEPTRE_16176), item(PHARAOHS_SCEPTRE_21445), item(PHARAOHS_SCEPTRE_21446), item(PHARAOHS_SCEPTRE_26948), item(PHARAOHS_SCEPTRE_26950)), any("Full set of menaphite robes", all(item(MENAPHITE_PURPLE_HAT), item(MENAPHITE_PURPLE_TOP), range(MENAPHITE_PURPLE_ROBE, MENAPHITE_PURPLE_KILT)), all(item(MENAPHITE_RED_HAT), item(MENAPHITE_RED_TOP), range(MENAPHITE_RED_ROBE, MENAPHITE_RED_KILT)))),
new EmoteClue("Yawn in the Varrock library. Equip a green gnome robe top, HAM robe bottom and an iron warhammer.", "Varrock Castle", VARROCK_PALACE_LIBRARY, new WorldPoint(3209, 3492, 0), YAWN, item(GREEN_ROBE_TOP), item(HAM_ROBE), item(IRON_WARHAMMER)),
new EmoteClue("Yawn in Draynor Marketplace. Equip studded leather chaps, an iron kiteshield and a steel longsword.", "Draynor", DRAYNOR_VILLAGE_MARKET, new WorldPoint(3083, 3253, 0), YAWN, item(STUDDED_CHAPS), item(IRON_KITESHIELD), item(STEEL_LONGSWORD)),
new EmoteClue("Yawn in the Castle Wars lobby. Shrug before you talk to me. Equip a ruby amulet, a mithril scimitar and a Wilderness cape.", "Castle Wars", CASTLE_WARS_BANK, new WorldPoint(2440, 3092, 0), YAWN, SHRUG, item(RUBY_AMULET), item(MITHRIL_SCIMITAR), range("Any team cape", TEAM1_CAPE, TEAM50_CAPE)),

View File

@@ -266,14 +266,6 @@ enum ItemWithCharge
PASSAGE3(TELEPORT, NECKLACE_OF_PASSAGE3, 3),
PASSAGE4(TELEPORT, NECKLACE_OF_PASSAGE4, 4),
PASSAGE5(TELEPORT, NECKLACE_OF_PASSAGE5, 5),
PHARAO1(TELEPORT, PHARAOHS_SCEPTRE_1, 1),
PHARAO2(TELEPORT, PHARAOHS_SCEPTRE_2, 2),
PHARAO3(TELEPORT, PHARAOHS_SCEPTRE_3, 3),
PHARAO4(TELEPORT, PHARAOHS_SCEPTRE_4, 4),
PHARAO5(TELEPORT, PHARAOHS_SCEPTRE_5, 5),
PHARAO6(TELEPORT, PHARAOHS_SCEPTRE_6, 6),
PHARAO7(TELEPORT, PHARAOHS_SCEPTRE_7, 7),
PHARAO8(TELEPORT, PHARAOHS_SCEPTRE_8, 8),
PRAYER1(POTION, PRAYER_POTION1, 1),
PRAYER2(POTION, PRAYER_POTION2, 2),
PRAYER3(POTION, PRAYER_POTION3, 3),

View File

@@ -37,15 +37,9 @@ import lombok.Getter;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import static net.runelite.api.ItemID.PHARAOHS_SCEPTRE;
import static net.runelite.api.NullObjectID.*;
import static net.runelite.api.ObjectID.GRAND_GOLD_CHEST;
import static net.runelite.api.ObjectID.SARCOPHAGUS_21255;
import static net.runelite.api.ObjectID.SPEARTRAP_21280;
import static net.runelite.api.ObjectID.TOMB_DOOR_20948;
import static net.runelite.api.ObjectID.URN_21261;
import static net.runelite.api.ObjectID.URN_21262;
import static net.runelite.api.ObjectID.URN_21263;
import net.runelite.api.ItemID;
import net.runelite.api.NullObjectID;
import net.runelite.api.ObjectID;
import net.runelite.api.Tile;
import net.runelite.api.TileObject;
import net.runelite.api.Varbits;
@@ -78,21 +72,21 @@ public class PyramidPlunderPlugin extends Plugin
private static final Duration PYRAMID_PLUNDER_DURATION = Duration.of(501, RSTimeUnit.GAME_TICKS);
private static final int PYRAMID_PLUNDER_REGION = 7749;
static final Set<Integer> TOMB_DOOR_WALL_IDS = ImmutableSet.of(NULL_26618, NULL_26619, NULL_26620, NULL_26621);
static final int TOMB_DOOR_CLOSED_ID = TOMB_DOOR_20948;
static final Set<Integer> TOMB_DOOR_WALL_IDS = ImmutableSet.of(NullObjectID.NULL_26618, NullObjectID.NULL_26619, NullObjectID.NULL_26620, NullObjectID.NULL_26621);
static final int TOMB_DOOR_CLOSED_ID = ObjectID.TOMB_DOOR_20948;
static final int SPEARTRAP_ID = SPEARTRAP_21280;
static final int SPEARTRAP_ID = ObjectID.SPEARTRAP;
static final Set<Integer> URN_IDS = ImmutableSet.of(NULL_26580, NULL_26600, NULL_26601, NULL_26602,
NULL_26603, NULL_26604, NULL_26605, NULL_26606, NULL_26607, NULL_26608, NULL_26609, NULL_26610, NULL_26611,
NULL_26612, NULL_26613);
static final Set<Integer> URN_CLOSED_IDS = ImmutableSet.of(URN_21261, URN_21262, URN_21263);
static final Set<Integer> URN_IDS = ImmutableSet.of(NullObjectID.NULL_26580, NullObjectID.NULL_26600, NullObjectID.NULL_26601, NullObjectID.NULL_26602,
NullObjectID.NULL_26603, NullObjectID.NULL_26604, NullObjectID.NULL_26605, NullObjectID.NULL_26606, NullObjectID.NULL_26607, NullObjectID.NULL_26608,
NullObjectID.NULL_26609, NullObjectID.NULL_26610, NullObjectID.NULL_26611, NullObjectID.NULL_26612, NullObjectID.NULL_26613);
static final Set<Integer> URN_CLOSED_IDS = ImmutableSet.of(ObjectID.URN_21261, ObjectID.URN_21262, ObjectID.URN_21263);
static final int GRAND_GOLD_CHEST_ID = NULL_26616;
static final int GRAND_GOLD_CHEST_CLOSED_ID = GRAND_GOLD_CHEST;
static final int GRAND_GOLD_CHEST_ID = NullObjectID.NULL_26616;
static final int GRAND_GOLD_CHEST_CLOSED_ID = ObjectID.GRAND_GOLD_CHEST;
static final int SARCOPHAGUS_ID = NULL_26626;
static final int SARCOPHAGUS_CLOSED_ID = SARCOPHAGUS_21255;
static final int SARCOPHAGUS_ID = NullObjectID.NULL_26626;
static final int SARCOPHAGUS_CLOSED_ID = ObjectID.SARCOPHAGUS_21255;
@Inject
private Client client;
@@ -173,7 +167,7 @@ public class PyramidPlunderPlugin extends Plugin
{
int ppTimer = client.getVarbitValue(Varbits.PYRAMID_PLUNDER_TIMER);
Duration remaining = PYRAMID_PLUNDER_DURATION.minus(ppTimer, RSTimeUnit.GAME_TICKS);
timer = new PyramidPlunderTimer(remaining, itemManager.getImage(PHARAOHS_SCEPTRE), this,
timer = new PyramidPlunderTimer(remaining, itemManager.getImage(ItemID.PHARAOHS_SCEPTRE), this,
config, client);
infoBoxManager.addInfoBox(timer);
}

View File

@@ -738,7 +738,8 @@
],
"stone tablet": [
699,
22991
22991,
26954
],
"mixed chemicals": [
705,
@@ -1394,7 +1395,9 @@
25790,
25791,
25792,
26566
26566,
26943,
26944
],
"radimus notes": [
714,
@@ -1426,7 +1429,8 @@
755,
9633,
9649,
22475
22475,
26942
],
"book": [
757,
@@ -2490,7 +2494,8 @@
11027,
11028,
11029,
11030
11030,
26926
],
"banana": [
1963,
@@ -2508,7 +2513,12 @@
24994,
24996,
26417,
26419
26419,
26971,
26973,
26975,
26977,
26979
],
"empty cup": [
1980,
@@ -3326,10 +3336,6 @@
3716,
3743
],
"full bucket": [
3722,
4693
],
"sealed vase": [
3738,
3739,
@@ -5010,6 +5016,10 @@
10485,
10512
],
"chest": [
6759,
26955
],
"rat pole": [
6773,
6774,
@@ -6381,14 +6391,24 @@
],
"pharaohs sceptre": [
9044,
9045,
9046,
9047,
9048,
9049,
9050,
9051,
13074,
13075,
13076,
13077,
13078
13078,
16176,
21445,
21446,
26945,
26948,
26950
],
"emerald lantern": [
9064,
@@ -10387,6 +10407,10 @@
26256,
26258
],
"magical cleaning potion": [
26278,
26924
],
"secret santa present": [
26298,
26300,
@@ -10625,5 +10649,17 @@
26896,
26897,
26898
],
"vat": [
26932,
26933
],
"scarab emblem": [
26953,
26956
],
"circlet of water": [
26967,
26969
]
}

View File

@@ -1 +1 @@
3FA5FFC8DB18A42971CED41A9BC7CEA407A0EC98061D56B2822F66CD910E4BAF
7295A7B0C6DEBDBAB737A307974DAEF4AFD7DBD011B30AC45D2972FE75C54868

View File

@@ -1,21 +1,21 @@
.id 3238
.int_stack_count 4
.int_stack_count 5
.string_stack_count 0
.int_var_count 5 ; +1 for filter result
.int_var_count 6 ; +1 for filter result
.string_var_count 0
iconst -1 ; set to 1 to hide, 0 to show
iconst -1 ; set to 1 to hide, 0 to show
iload 0 ; quest struct
sconst "questFilter"
runelite_callback
runelite_callback
pop_int ; quest struct
istore 4 ; save result
istore 5 ; save result
; compare with -1
iload 4 ; load result
iconst -1
iload 5 ; load result
iconst -1
if_icmpeq continue
; return value
iload 4
return
iload 5
return
continue:
iload 0
@@ -48,12 +48,12 @@ LABEL22:
iconst 1
return
LABEL24:
iload 1
iconst 0
iload 4
iconst 1
if_icmpeq LABEL28
jump LABEL34
LABEL28:
get_varbit 13775
get_varbit 13890
iconst 1
if_icmpeq LABEL32
jump LABEL34
@@ -62,11 +62,11 @@ LABEL32:
return
LABEL34:
iload 1
iconst 1
iconst 0
if_icmpeq LABEL38
jump LABEL44
LABEL38:
get_varbit 13776
get_varbit 13775
iconst 1
if_icmpeq LABEL42
jump LABEL44
@@ -75,11 +75,11 @@ LABEL42:
return
LABEL44:
iload 1
iconst 2
iconst 1
if_icmpeq LABEL48
jump LABEL54
LABEL48:
get_varbit 13777
get_varbit 13776
iconst 1
if_icmpeq LABEL52
jump LABEL54
@@ -88,41 +88,54 @@ LABEL52:
return
LABEL54:
iload 1
iconst 1
if_icmpeq LABEL58
jump LABEL68
LABEL58:
get_varbit 13778
iconst 2
if_icmpeq LABEL58
jump LABEL64
LABEL58:
get_varbit 13777
iconst 1
if_icmpeq LABEL62
jump LABEL68
jump LABEL64
LABEL62:
iload 2
iconst 0
if_icmpeq LABEL66
jump LABEL68
LABEL66:
iconst 1
return
LABEL68:
LABEL64:
iload 1
iconst 1
if_icmpeq LABEL72
jump LABEL82
LABEL72:
get_varbit 13779
if_icmpeq LABEL68
jump LABEL78
LABEL68:
get_varbit 13778
iconst 2
if_icmpeq LABEL76
jump LABEL82
LABEL76:
iload 3
if_icmpeq LABEL72
jump LABEL78
LABEL72:
iload 2
iconst 0
if_icmpeq LABEL80
jump LABEL82
LABEL80:
if_icmpeq LABEL76
jump LABEL78
LABEL76:
iconst 1
return
LABEL78:
iload 1
iconst 1
if_icmpeq LABEL82
jump LABEL92
LABEL82:
get_varbit 13779
iconst 2
if_icmpeq LABEL86
jump LABEL92
LABEL86:
iload 3
iconst 0
if_icmpeq LABEL90
jump LABEL92
LABEL90:
iconst 1
return
LABEL92:
iconst 0
return
iconst -1