project: Merge upstream (#2049)
project: Merge upstream Co-authored-by: null <dkvldev@gmail.com> Co-authored-by: Adam <Adam@sigterm.info> Co-authored-by: Abex <mii7303@gmail.com> Co-authored-by: Tomas Slusny <slusnucky@gmail.com> Co-authored-by: winterdaze <35933468+winterdaze@users.noreply.github.com> Co-authored-by: null <55587410+emiljensen2@users.noreply.github.com> Co-authored-by: Seth <sethtroll3@gmail.com> Co-authored-by: Runelite auto updater <runelite@runelite.net>
This commit is contained in:
@@ -27,9 +27,9 @@ const val kotlinVersion = "1.3.50"
|
|||||||
|
|
||||||
object ProjectVersions {
|
object ProjectVersions {
|
||||||
const val launcherVersion = "2.0.4"
|
const val launcherVersion = "2.0.4"
|
||||||
const val rlVersion = "1.5.41-SNAPSHOT"
|
const val rlVersion = "1.5.41"
|
||||||
|
|
||||||
const val openosrsVersion = "2.1.13.0-SNAPSHOT"
|
const val openosrsVersion = "2.1.13.0"
|
||||||
|
|
||||||
const val rsversion = 185
|
const val rsversion = 185
|
||||||
const val cacheversion = 165
|
const val cacheversion = 165
|
||||||
|
|||||||
@@ -35,8 +35,7 @@ public enum HiscoreEndpoint
|
|||||||
HARDCORE_IRONMAN("Hardcore Ironman", "https://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/index_lite.ws"),
|
HARDCORE_IRONMAN("Hardcore Ironman", "https://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/index_lite.ws"),
|
||||||
ULTIMATE_IRONMAN("Ultimate Ironman", "https://services.runescape.com/m=hiscore_oldschool_ultimate/index_lite.ws"),
|
ULTIMATE_IRONMAN("Ultimate Ironman", "https://services.runescape.com/m=hiscore_oldschool_ultimate/index_lite.ws"),
|
||||||
DEADMAN("Deadman", "https://services.runescape.com/m=hiscore_oldschool_deadman/index_lite.ws"),
|
DEADMAN("Deadman", "https://services.runescape.com/m=hiscore_oldschool_deadman/index_lite.ws"),
|
||||||
SEASONAL_DEADMAN("Seasonal Deadman", "https://services.runescape.com/m=hiscore_oldschool_seasonal/index_lite.ws"),
|
LEAGUE("Twisted League", "https://services.runescape.com/m=hiscore_oldschool_seasonal/index_lite.ws");
|
||||||
DEADMAN_TOURNAMENT("Deadman Tournament", "https://services.runescape.com/m=hiscore_oldschool_tournament/index_lite.ws");
|
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final HttpUrl hiscoreURL;
|
private final HttpUrl hiscoreURL;
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class HiscoreResult
|
|||||||
private Skill runecraft;
|
private Skill runecraft;
|
||||||
private Skill hunter;
|
private Skill hunter;
|
||||||
private Skill construction;
|
private Skill construction;
|
||||||
|
private Skill leaguePoints;
|
||||||
private Skill bountyHunterHunter;
|
private Skill bountyHunterHunter;
|
||||||
private Skill bountyHunterRogue;
|
private Skill bountyHunterRogue;
|
||||||
private Skill clueScrollAll;
|
private Skill clueScrollAll;
|
||||||
@@ -115,6 +116,8 @@ public class HiscoreResult
|
|||||||
return getHunter();
|
return getHunter();
|
||||||
case CONSTRUCTION:
|
case CONSTRUCTION:
|
||||||
return getConstruction();
|
return getConstruction();
|
||||||
|
case LEAGUE_POINTS:
|
||||||
|
return getLeaguePoints();
|
||||||
case OVERALL:
|
case OVERALL:
|
||||||
return getOverall();
|
return getOverall();
|
||||||
case BOUNTY_HUNTER_HUNTER:
|
case BOUNTY_HUNTER_HUNTER:
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ package net.runelite.http.api.hiscore;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import net.runelite.http.api.hiscore.HiscoreResult;
|
|
||||||
import net.runelite.http.api.hiscore.Skill;
|
|
||||||
|
|
||||||
public class HiscoreResultBuilder
|
public class HiscoreResultBuilder
|
||||||
{
|
{
|
||||||
@@ -77,9 +75,9 @@ public class HiscoreResultBuilder
|
|||||||
hiscoreResult.setRunecraft(skills.get(21));
|
hiscoreResult.setRunecraft(skills.get(21));
|
||||||
hiscoreResult.setHunter(skills.get(22));
|
hiscoreResult.setHunter(skills.get(22));
|
||||||
hiscoreResult.setConstruction(skills.get(23));
|
hiscoreResult.setConstruction(skills.get(23));
|
||||||
hiscoreResult.setBountyHunterHunter(skills.get(24));
|
hiscoreResult.setLeaguePoints(skills.get(24));
|
||||||
hiscoreResult.setBountyHunterRogue(skills.get(25));
|
hiscoreResult.setBountyHunterHunter(skills.get(25));
|
||||||
hiscoreResult.setLastManStanding(skills.get(26));
|
hiscoreResult.setBountyHunterRogue(skills.get(26));
|
||||||
hiscoreResult.setClueScrollAll(skills.get(27));
|
hiscoreResult.setClueScrollAll(skills.get(27));
|
||||||
hiscoreResult.setClueScrollBeginner(skills.get(28));
|
hiscoreResult.setClueScrollBeginner(skills.get(28));
|
||||||
hiscoreResult.setClueScrollEasy(skills.get(29));
|
hiscoreResult.setClueScrollEasy(skills.get(29));
|
||||||
@@ -87,6 +85,7 @@ public class HiscoreResultBuilder
|
|||||||
hiscoreResult.setClueScrollHard(skills.get(31));
|
hiscoreResult.setClueScrollHard(skills.get(31));
|
||||||
hiscoreResult.setClueScrollElite(skills.get(32));
|
hiscoreResult.setClueScrollElite(skills.get(32));
|
||||||
hiscoreResult.setClueScrollMaster(skills.get(33));
|
hiscoreResult.setClueScrollMaster(skills.get(33));
|
||||||
|
hiscoreResult.setLastManStanding(skills.get(34));
|
||||||
return hiscoreResult;
|
return hiscoreResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,16 +50,17 @@ public enum HiscoreSkill
|
|||||||
RUNECRAFT("Runecraft"),
|
RUNECRAFT("Runecraft"),
|
||||||
HUNTER("Hunter"),
|
HUNTER("Hunter"),
|
||||||
CONSTRUCTION("Construction"),
|
CONSTRUCTION("Construction"),
|
||||||
|
LEAGUE_POINTS("League Points"),
|
||||||
BOUNTY_HUNTER_HUNTER("Bounty Hunter - Hunter"),
|
BOUNTY_HUNTER_HUNTER("Bounty Hunter - Hunter"),
|
||||||
BOUNTY_HUNTER_ROGUE("Bounty Hunter - Rogue"),
|
BOUNTY_HUNTER_ROGUE("Bounty Hunter - Rogue"),
|
||||||
LAST_MAN_STANDING("Last Man Standing"),
|
|
||||||
CLUE_SCROLL_ALL("Clue Scrolls (all)"),
|
CLUE_SCROLL_ALL("Clue Scrolls (all)"),
|
||||||
CLUE_SCROLL_BEGINNER("Clue Scrolls (beginner)"),
|
CLUE_SCROLL_BEGINNER("Clue Scrolls (beginner)"),
|
||||||
CLUE_SCROLL_EASY("Clue Scrolls (easy)"),
|
CLUE_SCROLL_EASY("Clue Scrolls (easy)"),
|
||||||
CLUE_SCROLL_MEDIUM("Clue Scrolls (medium)"),
|
CLUE_SCROLL_MEDIUM("Clue Scrolls (medium)"),
|
||||||
CLUE_SCROLL_HARD("Clue Scrolls (hard)"),
|
CLUE_SCROLL_HARD("Clue Scrolls (hard)"),
|
||||||
CLUE_SCROLL_ELITE("Clue Scrolls (elite)"),
|
CLUE_SCROLL_ELITE("Clue Scrolls (elite)"),
|
||||||
CLUE_SCROLL_MASTER("Clue Scrolls (master)");
|
CLUE_SCROLL_MASTER("Clue Scrolls (master)"),
|
||||||
|
LAST_MAN_STANDING("Last Man Standing");
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,5 @@ public enum WorldType
|
|||||||
LAST_MAN_STANDING,
|
LAST_MAN_STANDING,
|
||||||
TOURNAMENT,
|
TOURNAMENT,
|
||||||
DEADMAN,
|
DEADMAN,
|
||||||
SEASONAL_DEADMAN,
|
LEAGUE;
|
||||||
DEADMAN_TOURNAMENT
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,9 +35,8 @@ enum ServiceWorldType
|
|||||||
HIGH_RISK(WorldType.HIGH_RISK, 1 << 10),
|
HIGH_RISK(WorldType.HIGH_RISK, 1 << 10),
|
||||||
LAST_MAN_STANDING(WorldType.LAST_MAN_STANDING, 1 << 14),
|
LAST_MAN_STANDING(WorldType.LAST_MAN_STANDING, 1 << 14),
|
||||||
TOURNAMENT(WorldType.TOURNAMENT, 1 << 25),
|
TOURNAMENT(WorldType.TOURNAMENT, 1 << 25),
|
||||||
DEADMAN_TOURNAMENT(WorldType.DEADMAN_TOURNAMENT, 1 << 26),
|
|
||||||
DEADMAN(WorldType.DEADMAN, 1 << 29),
|
DEADMAN(WorldType.DEADMAN, 1 << 29),
|
||||||
SEASONAL_DEADMAN(WorldType.SEASONAL_DEADMAN, 1 << 30);
|
LEAGUE(WorldType.LEAGUE, 1 << 30);
|
||||||
|
|
||||||
private final WorldType apiType;
|
private final WorldType apiType;
|
||||||
private final int mask;
|
private final int mask;
|
||||||
|
|||||||
@@ -60,16 +60,17 @@ public class HiscoreServiceTest
|
|||||||
+ "638177,1,0\n"
|
+ "638177,1,0\n"
|
||||||
+ "516239,9,1000\n"
|
+ "516239,9,1000\n"
|
||||||
+ "492790,1,0\n"
|
+ "492790,1,0\n"
|
||||||
|
+ "2,2460\n" // leagues
|
||||||
+ "-1,-1\n"
|
+ "-1,-1\n"
|
||||||
+ "73,1738\n"
|
+ "73,1738\n"
|
||||||
+ "-1,-1\n"
|
|
||||||
+ "531,1432\n"
|
+ "531,1432\n"
|
||||||
+ "324,212\n"
|
+ "324,212\n"
|
||||||
+ "8008,131\n"
|
+ "8008,131\n"
|
||||||
+ "1337,911\n"
|
+ "1337,911\n"
|
||||||
+ "42,14113\n"
|
+ "42,14113\n"
|
||||||
+ "1,777\n"
|
+ "1,777\n"
|
||||||
+ "254,92\n";
|
+ "254,92\n"
|
||||||
|
+ "-1,-1\n"; // lms
|
||||||
|
|
||||||
private final MockWebServer server = new MockWebServer();
|
private final MockWebServer server = new MockWebServer();
|
||||||
|
|
||||||
@@ -105,6 +106,7 @@ public class HiscoreServiceTest
|
|||||||
Assert.assertEquals(777, result.getClueScrollElite().getLevel());
|
Assert.assertEquals(777, result.getClueScrollElite().getLevel());
|
||||||
Assert.assertEquals(254, result.getClueScrollMaster().getRank());
|
Assert.assertEquals(254, result.getClueScrollMaster().getRank());
|
||||||
Assert.assertEquals(-1, result.getLastManStanding().getLevel());
|
Assert.assertEquals(-1, result.getLastManStanding().getLevel());
|
||||||
|
Assert.assertEquals(2460, result.getLeaguePoints().getLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -698,7 +698,16 @@ public enum Varbits
|
|||||||
|
|
||||||
WITHDRAW_X_AMOUNT(3960),
|
WITHDRAW_X_AMOUNT(3960),
|
||||||
|
|
||||||
IN_PVP_AREA(8121);
|
IN_PVP_AREA(8121),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Twisted league
|
||||||
|
*/
|
||||||
|
TWISTED_LEAGUE_RELIC_1(10049),
|
||||||
|
TWISTED_LEAGUE_RELIC_2(10050),
|
||||||
|
TWISTED_LEAGUE_RELIC_3(10051),
|
||||||
|
TWISTED_LEAGUE_RELIC_4(10052),
|
||||||
|
TWISTED_LEAGUE_RELIC_5(10053);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The raw varbit ID.
|
* The raw varbit ID.
|
||||||
|
|||||||
@@ -1,3 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, Tomas Slusny <slusnucky@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.api;
|
package net.runelite.api;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -36,18 +60,14 @@ public enum WorldType
|
|||||||
* Tournament world type.
|
* Tournament world type.
|
||||||
*/
|
*/
|
||||||
TOURNAMENT(1 << 25),
|
TOURNAMENT(1 << 25),
|
||||||
/**
|
|
||||||
* Deadman Tournament world type.
|
|
||||||
*/
|
|
||||||
DEADMAN_TOURNAMENT(1 << 26),
|
|
||||||
/**
|
/**
|
||||||
* Deadman world type.
|
* Deadman world type.
|
||||||
*/
|
*/
|
||||||
DEADMAN(1 << 29),
|
DEADMAN(1 << 29),
|
||||||
/**
|
/**
|
||||||
* Seasonal deadman world type.
|
* League world type
|
||||||
*/
|
*/
|
||||||
SEASONAL_DEADMAN(1 << 30);
|
LEAGUE(1 << 30);
|
||||||
|
|
||||||
private final int mask;
|
private final int mask;
|
||||||
|
|
||||||
@@ -58,15 +78,11 @@ public enum WorldType
|
|||||||
|
|
||||||
private static final EnumSet<WorldType> PVP_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> PVP_WORLD_TYPES = EnumSet.of(
|
||||||
DEADMAN,
|
DEADMAN,
|
||||||
DEADMAN_TOURNAMENT,
|
PVP
|
||||||
PVP,
|
|
||||||
SEASONAL_DEADMAN
|
|
||||||
);
|
);
|
||||||
|
|
||||||
private static final EnumSet<WorldType> DEADMAN_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> DEADMAN_WORLD_TYPES = EnumSet.of(
|
||||||
DEADMAN,
|
DEADMAN
|
||||||
DEADMAN_TOURNAMENT,
|
|
||||||
SEASONAL_DEADMAN
|
|
||||||
);
|
);
|
||||||
|
|
||||||
private static final EnumSet<WorldType> HIGHRISK_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> HIGHRISK_WORLD_TYPES = EnumSet.of(
|
||||||
@@ -75,25 +91,19 @@ public enum WorldType
|
|||||||
|
|
||||||
private static final EnumSet<WorldType> ALL_HIGHRISK_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> ALL_HIGHRISK_WORLD_TYPES = EnumSet.of(
|
||||||
HIGH_RISK,
|
HIGH_RISK,
|
||||||
DEADMAN,
|
DEADMAN
|
||||||
DEADMAN_TOURNAMENT,
|
|
||||||
SEASONAL_DEADMAN
|
|
||||||
);
|
);
|
||||||
|
|
||||||
private static final EnumSet<WorldType> ALL_PVP_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> ALL_PVP_WORLD_TYPES = EnumSet.of(
|
||||||
HIGH_RISK,
|
HIGH_RISK,
|
||||||
DEADMAN,
|
DEADMAN,
|
||||||
DEADMAN_TOURNAMENT,
|
PVP
|
||||||
PVP,
|
|
||||||
SEASONAL_DEADMAN
|
|
||||||
);
|
);
|
||||||
|
|
||||||
private static final EnumSet<WorldType> ALL_PK_WORLD_TYPES = EnumSet.of(
|
private static final EnumSet<WorldType> ALL_PK_WORLD_TYPES = EnumSet.of(
|
||||||
HIGH_RISK,
|
HIGH_RISK,
|
||||||
DEADMAN,
|
DEADMAN,
|
||||||
DEADMAN_TOURNAMENT,
|
|
||||||
PVP,
|
PVP,
|
||||||
SEASONAL_DEADMAN,
|
|
||||||
BOUNTY
|
BOUNTY
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -137,10 +147,10 @@ public enum WorldType
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP/DEADMAN/HIGHRISK world.
|
* Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP world.
|
||||||
*
|
*
|
||||||
* @param worldTypes A {@link Collection} of {@link WorldType}s describing the given world.
|
* @param worldTypes A {@link Collection} of {@link WorldType}s describing the given world.
|
||||||
* @return True if the given worldtypes of the world are a PVP/DEADMAN/HIGHRISK world, false otherwise.
|
* @return True if the given worldtypes of the world are a PVP world, false otherwise.
|
||||||
* @see Client#getWorldType()
|
* @see Client#getWorldType()
|
||||||
*/
|
*/
|
||||||
public static boolean isPvpWorld(final Collection<WorldType> worldTypes)
|
public static boolean isPvpWorld(final Collection<WorldType> worldTypes)
|
||||||
|
|||||||
@@ -192,9 +192,9 @@ public class Notifier
|
|||||||
case SOLID_UNTIL_CANCELLED:
|
case SOLID_UNTIL_CANCELLED:
|
||||||
case FLASH_UNTIL_CANCELLED:
|
case FLASH_UNTIL_CANCELLED:
|
||||||
// Any interaction with the client since the notification started will cancel it after the minimum duration
|
// Any interaction with the client since the notification started will cancel it after the minimum duration
|
||||||
if (client.getMouseIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|
if ((client.getMouseIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|
||||||
|| client.getKeyboardIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|
|| client.getKeyboardIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|
||||||
|| client.getMouseLastPressedMillis() > mouseLastPressedMillis)
|
|| client.getMouseLastPressedMillis() > mouseLastPressedMillis) && clientUI.isFocused())
|
||||||
{
|
{
|
||||||
flashStart = null;
|
flashStart = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
public class RuneLite
|
public class RuneLite
|
||||||
{
|
{
|
||||||
public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".runelite");
|
public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".runelite");
|
||||||
|
public static final File CACHE_DIR = new File(RUNELITE_DIR, "cache");
|
||||||
public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
|
public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
|
||||||
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
|
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
|
||||||
public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots");
|
public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots");
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class RuneLiteModule extends AbstractModule
|
|||||||
bindConstant().annotatedWith(Names.named("developerMode")).to(developerMode);
|
bindConstant().annotatedWith(Names.named("developerMode")).to(developerMode);
|
||||||
bind(ScheduledExecutorService.class).toInstance(new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()));
|
bind(ScheduledExecutorService.class).toInstance(new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()));
|
||||||
bind(OkHttpClient.class).toInstance(RuneLiteAPI.CLIENT.newBuilder()
|
bind(OkHttpClient.class).toInstance(RuneLiteAPI.CLIENT.newBuilder()
|
||||||
.cache(new Cache(new File(RuneLite.RUNELITE_DIR, "cache" + File.separator + "okhttp"), MAX_OKHTTP_CACHE_SIZE))
|
.cache(new Cache(new File(RuneLite.CACHE_DIR, "okhttp"), MAX_OKHTTP_CACHE_SIZE))
|
||||||
.build());
|
.build());
|
||||||
bind(MenuManager.class);
|
bind(MenuManager.class);
|
||||||
bind(ChatMessageManager.class);
|
bind(ChatMessageManager.class);
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class AttackStylesPlugin extends Plugin
|
|||||||
private boolean warnForRanged;
|
private boolean warnForRanged;
|
||||||
private boolean warnForMagic;
|
private boolean warnForMagic;
|
||||||
private boolean hideAutoRetaliate;
|
private boolean hideAutoRetaliate;
|
||||||
private boolean removeWarnedStyles;
|
boolean removeWarnedStyles;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void startUp() throws Exception
|
protected void startUp() throws Exception
|
||||||
@@ -170,7 +170,7 @@ public class AttackStylesPlugin extends Plugin
|
|||||||
return warnedSkillSelected;
|
return warnedSkillSelected;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onWidgetHiddenChanged(WidgetHiddenChanged event)
|
void onWidgetHiddenChanged(WidgetHiddenChanged event)
|
||||||
{
|
{
|
||||||
if (event.getWidget().isSelfHidden() || TO_GROUP(event.getWidget().getId()) != COMBAT_GROUP_ID)
|
if (event.getWidget().isSelfHidden() || TO_GROUP(event.getWidget().getId()) != COMBAT_GROUP_ID)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ package net.runelite.client.plugins.chatcommands;
|
|||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@@ -42,8 +43,10 @@ import net.runelite.api.Experience;
|
|||||||
import net.runelite.api.IconID;
|
import net.runelite.api.IconID;
|
||||||
import net.runelite.api.ItemDefinition;
|
import net.runelite.api.ItemDefinition;
|
||||||
import net.runelite.api.MessageNode;
|
import net.runelite.api.MessageNode;
|
||||||
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.VarPlayer;
|
import net.runelite.api.VarPlayer;
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
|
import net.runelite.api.WorldType;
|
||||||
import net.runelite.api.events.ChatMessage;
|
import net.runelite.api.events.ChatMessage;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
@@ -1157,31 +1160,28 @@ public class ChatCommandsPlugin extends Plugin
|
|||||||
*/
|
*/
|
||||||
private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
|
private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
|
||||||
{
|
{
|
||||||
final String player;
|
Player localPlayer = client.getLocalPlayer();
|
||||||
final HiscoreEndpoint ironmanStatus;
|
final String player = sanitize(chatMessage.getName());
|
||||||
|
|
||||||
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT))
|
// If we are sending the message then just use the local hiscore endpoint for the world
|
||||||
|
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT)
|
||||||
|
|| player.equals(localPlayer.getName()))
|
||||||
{
|
{
|
||||||
player = client.getLocalPlayer().getName();
|
return new HiscoreLookup(localPlayer.getName(), hiscoreEndpoint);
|
||||||
ironmanStatus = hiscoreEndpoint;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
player = sanitize(chatMessage.getName());
|
|
||||||
|
|
||||||
if (player.equals(client.getLocalPlayer().getName()))
|
// Public chat on a leagues world is always league hiscores, regardless of icon
|
||||||
|
if (chatMessage.getType() == ChatMessageType.PUBLICCHAT || chatMessage.getType() == ChatMessageType.MODCHAT)
|
||||||
|
{
|
||||||
|
if (client.getWorldType().contains(WorldType.LEAGUE))
|
||||||
{
|
{
|
||||||
// Get ironman status from for the local player
|
return new HiscoreLookup(player, HiscoreEndpoint.LEAGUE);
|
||||||
ironmanStatus = hiscoreEndpoint;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get ironman status from their icon in chat
|
|
||||||
ironmanStatus = getHiscoreEndpointByName(chatMessage.getName());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return new HiscoreLookup(player, ironmanStatus);
|
// Get ironman status from their icon in chat
|
||||||
|
HiscoreEndpoint endpoint = getHiscoreEndpointByName(chatMessage.getName());
|
||||||
|
return new HiscoreLookup(player, endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1220,6 +1220,12 @@ public class ChatCommandsPlugin extends Plugin
|
|||||||
*/
|
*/
|
||||||
private HiscoreEndpoint getLocalHiscoreEndpointType()
|
private HiscoreEndpoint getLocalHiscoreEndpointType()
|
||||||
{
|
{
|
||||||
|
EnumSet<WorldType> worldType = client.getWorldType();
|
||||||
|
if (worldType.contains(WorldType.LEAGUE))
|
||||||
|
{
|
||||||
|
return HiscoreEndpoint.LEAGUE;
|
||||||
|
}
|
||||||
|
|
||||||
return toEndPoint(client.getAccountType());
|
return toEndPoint(client.getAccountType());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,10 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
|
|||||||
"Jorral",
|
"Jorral",
|
||||||
"Speak to Jorral to receive a strange device.",
|
"Speak to Jorral to receive a strange device.",
|
||||||
new WorldPoint(2436, 3347, 0));
|
new WorldPoint(2436, 3347, 0));
|
||||||
|
private static final HotColdClue MASTER_CLUE_LEAGUE = new HotColdClue("Buried beneath the ground, who knows where it's found. Lucky for you, A man called Watson may have a clue.",
|
||||||
|
"Watson",
|
||||||
|
"Speak to Watson to receive a strange device.",
|
||||||
|
new WorldPoint(1645, 3572, 0));
|
||||||
|
|
||||||
private final String text;
|
private final String text;
|
||||||
private final String npc;
|
private final String npc;
|
||||||
@@ -89,6 +93,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
|
|||||||
MASTER_CLUE.reset();
|
MASTER_CLUE.reset();
|
||||||
return MASTER_CLUE;
|
return MASTER_CLUE;
|
||||||
}
|
}
|
||||||
|
else if (MASTER_CLUE_LEAGUE.text.equalsIgnoreCase(text))
|
||||||
|
{
|
||||||
|
MASTER_CLUE_LEAGUE.reset();
|
||||||
|
return MASTER_CLUE_LEAGUE;
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -272,11 +281,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
|
|||||||
|
|
||||||
final Set<HotColdTemperature> temperatureSet;
|
final Set<HotColdTemperature> temperatureSet;
|
||||||
|
|
||||||
if (this.equals(BEGINNER_CLUE))
|
if (this == BEGINNER_CLUE)
|
||||||
{
|
{
|
||||||
temperatureSet = HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES;
|
temperatureSet = HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES;
|
||||||
}
|
}
|
||||||
else if (this.equals(MASTER_CLUE))
|
else if (this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE)
|
||||||
{
|
{
|
||||||
temperatureSet = HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES;
|
temperatureSet = HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES;
|
||||||
}
|
}
|
||||||
@@ -300,8 +309,9 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((this.equals(BEGINNER_CLUE) && temperature == HotColdTemperature.BEGINNER_VISIBLY_SHAKING)
|
boolean master = this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE;
|
||||||
|| (this.equals(MASTER_CLUE) && temperature == HotColdTemperature.MASTER_VISIBLY_SHAKING))
|
if ((this == BEGINNER_CLUE && temperature == HotColdTemperature.BEGINNER_VISIBLY_SHAKING)
|
||||||
|
|| (master && temperature == HotColdTemperature.MASTER_VISIBLY_SHAKING))
|
||||||
{
|
{
|
||||||
markFinalSpot(localWorld);
|
markFinalSpot(localWorld);
|
||||||
}
|
}
|
||||||
@@ -327,11 +337,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
|
|||||||
{
|
{
|
||||||
final boolean isBeginner;
|
final boolean isBeginner;
|
||||||
|
|
||||||
if (this.equals(BEGINNER_CLUE))
|
if (this == BEGINNER_CLUE)
|
||||||
{
|
{
|
||||||
isBeginner = true;
|
isBeginner = true;
|
||||||
}
|
}
|
||||||
else if (this.equals(MASTER_CLUE))
|
else if (this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE)
|
||||||
{
|
{
|
||||||
isBeginner = false;
|
isBeginner = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public class DeathIndicatorPlugin extends Plugin
|
|||||||
static final int HIJACKED_ITEMID = 0x69696969;
|
static final int HIJACKED_ITEMID = 0x69696969;
|
||||||
|
|
||||||
private static final Set<Integer> RESPAWN_REGIONS = ImmutableSet.of(
|
private static final Set<Integer> RESPAWN_REGIONS = ImmutableSet.of(
|
||||||
|
6457, // Kourend
|
||||||
12850, // Lumbridge
|
12850, // Lumbridge
|
||||||
11828, // Falador
|
11828, // Falador
|
||||||
12342, // Edgeville
|
12342, // Edgeville
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ import static net.runelite.http.api.hiscore.HiscoreSkill.HERBLORE;
|
|||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.HITPOINTS;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.HITPOINTS;
|
||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.HUNTER;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.HUNTER;
|
||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.LAST_MAN_STANDING;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.LAST_MAN_STANDING;
|
||||||
|
import static net.runelite.http.api.hiscore.HiscoreSkill.LEAGUE_POINTS;
|
||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.MAGIC;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.MAGIC;
|
||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.MINING;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.MINING;
|
||||||
import static net.runelite.http.api.hiscore.HiscoreSkill.OVERALL;
|
import static net.runelite.http.api.hiscore.HiscoreSkill.OVERALL;
|
||||||
@@ -275,6 +276,7 @@ public class HiscorePanel extends PluginPanel
|
|||||||
minigamePanel.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
minigamePanel.setBackground(ColorScheme.DARKER_GRAY_COLOR);
|
||||||
|
|
||||||
minigamePanel.add(makeSkillPanel(CLUE_SCROLL_ALL));
|
minigamePanel.add(makeSkillPanel(CLUE_SCROLL_ALL));
|
||||||
|
minigamePanel.add(makeSkillPanel(LEAGUE_POINTS));
|
||||||
minigamePanel.add(makeSkillPanel(LAST_MAN_STANDING));
|
minigamePanel.add(makeSkillPanel(LAST_MAN_STANDING));
|
||||||
minigamePanel.add(makeSkillPanel(BOUNTY_HUNTER_ROGUE));
|
minigamePanel.add(makeSkillPanel(BOUNTY_HUNTER_ROGUE));
|
||||||
minigamePanel.add(makeSkillPanel(BOUNTY_HUNTER_HUNTER));
|
minigamePanel.add(makeSkillPanel(BOUNTY_HUNTER_HUNTER));
|
||||||
@@ -470,15 +472,17 @@ public class HiscorePanel extends PluginPanel
|
|||||||
case 0:
|
case 0:
|
||||||
return null;
|
return null;
|
||||||
case 1:
|
case 1:
|
||||||
return HiscoreSkill.OVERALL;
|
return OVERALL;
|
||||||
case 2:
|
case 2:
|
||||||
return HiscoreSkill.CLUE_SCROLL_ALL;
|
return CLUE_SCROLL_ALL;
|
||||||
case 3:
|
case 3:
|
||||||
return HiscoreSkill.LAST_MAN_STANDING;
|
return LEAGUE_POINTS;
|
||||||
case 4:
|
case 4:
|
||||||
return HiscoreSkill.BOUNTY_HUNTER_ROGUE;
|
return LAST_MAN_STANDING;
|
||||||
case 5:
|
case 5:
|
||||||
return HiscoreSkill.BOUNTY_HUNTER_HUNTER;
|
return BOUNTY_HUNTER_ROGUE;
|
||||||
|
case 6:
|
||||||
|
return BOUNTY_HUNTER_HUNTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -562,6 +566,12 @@ public class HiscorePanel extends PluginPanel
|
|||||||
content += "<p><span style = 'color:white'>Rank:</span> " + rank + "</p>";
|
content += "<p><span style = 'color:white'>Rank:</span> " + rank + "</p>";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case LEAGUE_POINTS:
|
||||||
|
{
|
||||||
|
String rank = (result.getLeaguePoints().getRank() == -1) ? "Unranked" : QuantityFormatter.formatNumber(result.getLeaguePoints().getRank());
|
||||||
|
content += "<p><span style = 'color:white'>Rank:</span> " + rank + "</p>";
|
||||||
|
break;
|
||||||
|
}
|
||||||
case OVERALL:
|
case OVERALL:
|
||||||
{
|
{
|
||||||
Skill requestedSkill = result.getSkill(skill);
|
Skill requestedSkill = result.getSkill(skill);
|
||||||
@@ -651,18 +661,14 @@ public class HiscorePanel extends PluginPanel
|
|||||||
{
|
{
|
||||||
EnumSet<WorldType> wTypes = client.getWorldType();
|
EnumSet<WorldType> wTypes = client.getWorldType();
|
||||||
|
|
||||||
if (wTypes.contains(WorldType.DEADMAN_TOURNAMENT))
|
if (wTypes.contains(WorldType.DEADMAN))
|
||||||
{
|
|
||||||
return HiscoreEndpoint.DEADMAN_TOURNAMENT;
|
|
||||||
}
|
|
||||||
else if (wTypes.contains(WorldType.SEASONAL_DEADMAN))
|
|
||||||
{
|
|
||||||
return HiscoreEndpoint.SEASONAL_DEADMAN;
|
|
||||||
}
|
|
||||||
else if (wTypes.contains(WorldType.DEADMAN))
|
|
||||||
{
|
{
|
||||||
return HiscoreEndpoint.DEADMAN;
|
return HiscoreEndpoint.DEADMAN;
|
||||||
}
|
}
|
||||||
|
else if (wTypes.contains(WorldType.LEAGUE))
|
||||||
|
{
|
||||||
|
return HiscoreEndpoint.LEAGUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return HiscoreEndpoint.NORMAL;
|
return HiscoreEndpoint.NORMAL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -950,7 +950,7 @@ public class IdleNotifierPlugin extends Plugin
|
|||||||
final Player local = client.getLocalPlayer();
|
final Player local = client.getLocalPlayer();
|
||||||
SkullIcon currentTickSkull = local.getSkullIcon();
|
SkullIcon currentTickSkull = local.getSkullIcon();
|
||||||
EnumSet worldTypes = client.getWorldType();
|
EnumSet worldTypes = client.getWorldType();
|
||||||
if (!(worldTypes.contains(WorldType.DEADMAN) || worldTypes.contains(WorldType.SEASONAL_DEADMAN)))
|
if (!(worldTypes.contains(WorldType.DEADMAN)))
|
||||||
{
|
{
|
||||||
if (!isFirstTick)
|
if (!isFirstTick)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -279,7 +279,7 @@ public class MultiIndicatorsPlugin extends Plugin
|
|||||||
private void findLinesInScene()
|
private void findLinesInScene()
|
||||||
{
|
{
|
||||||
inDeadman = client.getWorldType().stream().anyMatch(x ->
|
inDeadman = client.getWorldType().stream().anyMatch(x ->
|
||||||
x == WorldType.DEADMAN || x == WorldType.SEASONAL_DEADMAN);
|
x == WorldType.DEADMAN);
|
||||||
inPvp = client.getWorldType().stream().anyMatch(x ->
|
inPvp = client.getWorldType().stream().anyMatch(x ->
|
||||||
x == WorldType.PVP || x == WorldType.HIGH_RISK);
|
x == WorldType.PVP || x == WorldType.HIGH_RISK);
|
||||||
|
|
||||||
|
|||||||
@@ -184,18 +184,14 @@ public class OpponentInfoPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
|
|
||||||
final EnumSet<WorldType> worldType = client.getWorldType();
|
final EnumSet<WorldType> worldType = client.getWorldType();
|
||||||
if (worldType.contains(WorldType.DEADMAN_TOURNAMENT))
|
if (worldType.contains(WorldType.DEADMAN))
|
||||||
{
|
|
||||||
hiscoreEndpoint = HiscoreEndpoint.DEADMAN_TOURNAMENT;
|
|
||||||
}
|
|
||||||
else if (worldType.contains(WorldType.SEASONAL_DEADMAN))
|
|
||||||
{
|
|
||||||
hiscoreEndpoint = HiscoreEndpoint.SEASONAL_DEADMAN;
|
|
||||||
}
|
|
||||||
else if (worldType.contains(WorldType.DEADMAN))
|
|
||||||
{
|
{
|
||||||
hiscoreEndpoint = HiscoreEndpoint.DEADMAN;
|
hiscoreEndpoint = HiscoreEndpoint.DEADMAN;
|
||||||
}
|
}
|
||||||
|
else if (worldType.contains(WorldType.LEAGUE))
|
||||||
|
{
|
||||||
|
hiscoreEndpoint = HiscoreEndpoint.LEAGUE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hiscoreEndpoint = HiscoreEndpoint.NORMAL;
|
hiscoreEndpoint = HiscoreEndpoint.NORMAL;
|
||||||
|
|||||||
@@ -709,16 +709,16 @@ public class ScreenshotPlugin extends Plugin
|
|||||||
if (client.getLocalPlayer() != null && client.getLocalPlayer().getName() != null)
|
if (client.getLocalPlayer() != null && client.getLocalPlayer().getName() != null)
|
||||||
{
|
{
|
||||||
final EnumSet<WorldType> worldTypes = client.getWorldType();
|
final EnumSet<WorldType> worldTypes = client.getWorldType();
|
||||||
final boolean dmm = worldTypes.contains(WorldType.DEADMAN);
|
|
||||||
final boolean sdmm = worldTypes.contains(WorldType.SEASONAL_DEADMAN);
|
|
||||||
final boolean dmmt = worldTypes.contains(WorldType.DEADMAN_TOURNAMENT);
|
|
||||||
final boolean isDmmWorld = dmm || sdmm || dmmt;
|
|
||||||
|
|
||||||
String playerDir = client.getLocalPlayer().getName();
|
String playerDir = client.getLocalPlayer().getName();
|
||||||
if (isDmmWorld)
|
if (worldTypes.contains(WorldType.DEADMAN))
|
||||||
{
|
{
|
||||||
playerDir += "-Deadman";
|
playerDir += "-Deadman";
|
||||||
}
|
}
|
||||||
|
else if (worldTypes.contains(WorldType.LEAGUE))
|
||||||
|
{
|
||||||
|
playerDir += "-League";
|
||||||
|
}
|
||||||
playerFolder = new File(SCREENSHOT_DIR, playerDir);
|
playerFolder = new File(SCREENSHOT_DIR, playerDir);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ public class StatusOrbsPlugin extends Plugin
|
|||||||
|
|
||||||
private static final int SPEC_REGEN_TICKS = 50;
|
private static final int SPEC_REGEN_TICKS = 50;
|
||||||
private static final int NORMAL_HP_REGEN_TICKS = 100;
|
private static final int NORMAL_HP_REGEN_TICKS = 100;
|
||||||
|
private static final int TWISTED_LEAGUE_ENDLESS_ENDURANCE_RELIC = 2;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Client client;
|
private Client client;
|
||||||
@@ -258,6 +259,12 @@ public class StatusOrbsPlugin extends Plugin
|
|||||||
hpPerMs *= 2;
|
hpPerMs *= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (client.getVar(Varbits.TWISTED_LEAGUE_RELIC_1) == TWISTED_LEAGUE_ENDLESS_ENDURANCE_RELIC)
|
||||||
|
{
|
||||||
|
ticksPerHPRegen /= 4;
|
||||||
|
hpPerMs *= 4;
|
||||||
|
}
|
||||||
|
|
||||||
ticksSinceHPRegen = (ticksSinceHPRegen + 1) % ticksPerHPRegen;
|
ticksSinceHPRegen = (ticksSinceHPRegen + 1) % ticksPerHPRegen;
|
||||||
hitpointsPercentage = ticksSinceHPRegen / (double) ticksPerHPRegen;
|
hitpointsPercentage = ticksSinceHPRegen / (double) ticksPerHPRegen;
|
||||||
|
|
||||||
|
|||||||
@@ -582,9 +582,7 @@ public class TimersPlugin extends Plugin
|
|||||||
}
|
}
|
||||||
else if (HALF_TELEBLOCK_PATTERN.matcher(event.getMessage()).find())
|
else if (HALF_TELEBLOCK_PATTERN.matcher(event.getMessage()).find())
|
||||||
{
|
{
|
||||||
if (client.getWorldType().contains(WorldType.DEADMAN)
|
if (client.getWorldType().contains(WorldType.DEADMAN))
|
||||||
&& !client.getWorldType().contains(WorldType.SEASONAL_DEADMAN)
|
|
||||||
&& !client.getWorldType().contains(WorldType.DEADMAN_TOURNAMENT))
|
|
||||||
{
|
{
|
||||||
createGameTimer(DMM_FULLTB);
|
createGameTimer(DMM_FULLTB);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ class WorldTableRow extends JPanel
|
|||||||
private static final Color TOURNAMENT_WORLD = new Color(79, 145, 255);
|
private static final Color TOURNAMENT_WORLD = new Color(79, 145, 255);
|
||||||
private static final Color MEMBERS_WORLD = new Color(210, 193, 53);
|
private static final Color MEMBERS_WORLD = new Color(210, 193, 53);
|
||||||
private static final Color FREE_WORLD = new Color(200, 200, 200);
|
private static final Color FREE_WORLD = new Color(200, 200, 200);
|
||||||
|
private static final Color LEAGUE_WORLD = new Color(157, 237, 1);
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
@@ -247,11 +248,14 @@ class WorldTableRow extends JPanel
|
|||||||
}
|
}
|
||||||
else if (world.getTypes().contains(WorldType.PVP)
|
else if (world.getTypes().contains(WorldType.PVP)
|
||||||
|| world.getTypes().contains(WorldType.HIGH_RISK)
|
|| world.getTypes().contains(WorldType.HIGH_RISK)
|
||||||
|| world.getTypes().contains(WorldType.DEADMAN)
|
|| world.getTypes().contains(WorldType.DEADMAN))
|
||||||
|| world.getTypes().contains(WorldType.SEASONAL_DEADMAN))
|
|
||||||
{
|
{
|
||||||
activityField.setForeground(DANGEROUS_WORLD);
|
activityField.setForeground(DANGEROUS_WORLD);
|
||||||
}
|
}
|
||||||
|
else if (world.getTypes().contains(WorldType.LEAGUE))
|
||||||
|
{
|
||||||
|
activityField.setForeground(LEAGUE_WORLD);
|
||||||
|
}
|
||||||
else if (world.getTypes().contains(WorldType.TOURNAMENT))
|
else if (world.getTypes().contains(WorldType.TOURNAMENT))
|
||||||
{
|
{
|
||||||
activityField.setForeground(TOURNAMENT_WORLD);
|
activityField.setForeground(TOURNAMENT_WORLD);
|
||||||
|
|||||||
@@ -31,8 +31,7 @@ enum XpWorldType
|
|||||||
NORMAL,
|
NORMAL,
|
||||||
TOURNEY,
|
TOURNEY,
|
||||||
DMM,
|
DMM,
|
||||||
SDMM,
|
LEAGUE;
|
||||||
DMMT;
|
|
||||||
|
|
||||||
static XpWorldType of(WorldType type)
|
static XpWorldType of(WorldType type)
|
||||||
{
|
{
|
||||||
@@ -42,10 +41,8 @@ enum XpWorldType
|
|||||||
return TOURNEY;
|
return TOURNEY;
|
||||||
case DEADMAN:
|
case DEADMAN:
|
||||||
return DMM;
|
return DMM;
|
||||||
case SEASONAL_DEADMAN:
|
case LEAGUE:
|
||||||
return SDMM;
|
return LEAGUE;
|
||||||
case DEADMAN_TOURNAMENT:
|
|
||||||
return DMMT;
|
|
||||||
default:
|
default:
|
||||||
return NORMAL;
|
return NORMAL;
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 227 B |
Binary file not shown.
|
Before Width: | Height: | Size: 311 B |
Binary file not shown.
|
After Width: | Height: | Size: 304 B |
@@ -33,6 +33,7 @@ import net.runelite.api.Client;
|
|||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
import net.runelite.api.VarPlayer;
|
import net.runelite.api.VarPlayer;
|
||||||
import net.runelite.api.Varbits;
|
import net.runelite.api.Varbits;
|
||||||
|
import net.runelite.api.events.WidgetHiddenChanged;
|
||||||
import net.runelite.client.events.ConfigChanged;
|
import net.runelite.client.events.ConfigChanged;
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
import net.runelite.api.widgets.Widget;
|
import net.runelite.api.widgets.Widget;
|
||||||
@@ -44,8 +45,11 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import static org.mockito.Mockito.atLeastOnce;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import org.mockito.junit.MockitoJUnitRunner;
|
import org.mockito.junit.MockitoJUnitRunner;
|
||||||
|
|
||||||
@@ -174,6 +178,61 @@ public class AttackStylesPluginTest
|
|||||||
WidgetInfo.COMBAT_STYLE_THREE));
|
WidgetInfo.COMBAT_STYLE_THREE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that the defensive style is hidden when switching from bludgeon to bow
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testHiddenLongrange()
|
||||||
|
{
|
||||||
|
final ArgumentCaptor<Boolean> captor = ArgumentCaptor.forClass(Boolean.class);
|
||||||
|
final ConfigChanged warnForAttackEvent = new ConfigChanged();
|
||||||
|
warnForAttackEvent.setGroup("attackIndicator");
|
||||||
|
warnForAttackEvent.setKey("warnForDefensive");
|
||||||
|
warnForAttackEvent.setNewValue("true");
|
||||||
|
attackPlugin.onConfigChanged(warnForAttackEvent);
|
||||||
|
|
||||||
|
// verify there is a warned skill
|
||||||
|
Set<Skill> warnedSkills = attackPlugin.getWarnedSkills();
|
||||||
|
assertTrue(warnedSkills.contains(Skill.DEFENCE));
|
||||||
|
|
||||||
|
// Set up mock widget for strength and longrange
|
||||||
|
final Widget widget = mock(Widget.class);
|
||||||
|
when(client.getWidget(WidgetInfo.COMBAT_STYLE_FOUR)).thenReturn(widget);
|
||||||
|
|
||||||
|
// Set up hidden changed event
|
||||||
|
final WidgetHiddenChanged widgetHiddenChanged = new WidgetHiddenChanged();
|
||||||
|
widgetHiddenChanged.setWidget(widget);
|
||||||
|
when(widget.getId()).thenReturn(WidgetInfo.COMBAT_STYLE_FOUR.getPackedId());
|
||||||
|
|
||||||
|
// Enable hiding widgets
|
||||||
|
final ConfigChanged hideWidgetEvent = new ConfigChanged();
|
||||||
|
hideWidgetEvent.setGroup("attackIndicator");
|
||||||
|
hideWidgetEvent.setKey("removeWarnedStyles");
|
||||||
|
hideWidgetEvent.setNewValue("true");
|
||||||
|
attackPlugin.onConfigChanged(hideWidgetEvent);
|
||||||
|
attackPlugin.removeWarnedStyles = true;
|
||||||
|
|
||||||
|
// equip bludgeon on player
|
||||||
|
when(client.getVar(Varbits.EQUIPPED_WEAPON_TYPE)).thenReturn(WeaponType.TYPE_26.ordinal());
|
||||||
|
attackPlugin.onVarbitChanged(new VarbitChanged());
|
||||||
|
attackPlugin.onWidgetHiddenChanged(widgetHiddenChanged);
|
||||||
|
|
||||||
|
// verify that the agressive style style widget is showing
|
||||||
|
verify(widget, atLeastOnce()).setHidden(captor.capture());
|
||||||
|
assertFalse(captor.getValue());
|
||||||
|
|
||||||
|
// equip bow on player
|
||||||
|
// the equipped weaopn varbit will change after the hiddenChanged event has been dispatched
|
||||||
|
attackPlugin.onWidgetHiddenChanged(widgetHiddenChanged);
|
||||||
|
when(client.getVar(Varbits.EQUIPPED_WEAPON_TYPE)).thenReturn(WeaponType.TYPE_3.ordinal());
|
||||||
|
attackPlugin.onVarbitChanged(new VarbitChanged());
|
||||||
|
|
||||||
|
// verify that the longrange attack style widget is now hidden
|
||||||
|
verify(widget, atLeastOnce()).setHidden(captor.capture());
|
||||||
|
System.out.println(captor.getValue());
|
||||||
|
assertTrue(captor.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isAtkHidden()
|
private boolean isAtkHidden()
|
||||||
{
|
{
|
||||||
if (attackPlugin.getHiddenWidgets().size() == 0)
|
if (attackPlugin.getHiddenWidgets().size() == 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user