Merge remote-tracking branch 'upstream/master' into 2009-merge
This commit is contained in:
@@ -217,9 +217,16 @@ public class CoxPlugin extends Plugin
|
||||
{
|
||||
for (Player player : client.getPlayers())
|
||||
{
|
||||
if (player.getName().equals(tpMatcher.group(1)))
|
||||
final String rawPlayerName = player.getName();
|
||||
|
||||
if (rawPlayerName != null)
|
||||
{
|
||||
victims.add(new Victim(player, Victim.Type.TELEPORT));
|
||||
final String fixedPlayerName = Text.sanitize(rawPlayerName);
|
||||
|
||||
if (fixedPlayerName.equals(tpMatcher.group(1)))
|
||||
{
|
||||
victims.add(new Victim(player, Victim.Type.TELEPORT));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,16 +76,18 @@ public class ItemChargePlugin extends Plugin
|
||||
{
|
||||
private static final Pattern DODGY_CHECK_PATTERN = Pattern.compile(
|
||||
"Your dodgy necklace has (\\d+) charges? left\\.");
|
||||
private static final Pattern SLAUGHTER_CHECK_PATTERN = Pattern.compile(
|
||||
private static final String CHAT_BRACELET_SLAUGHTER = "Your bracelet of slaughter prevents your slayer";
|
||||
private static final Pattern CHAT_BRACELET_SLAUGHTER_REGEX = Pattern.compile(
|
||||
"Your bracelet of slaughter prevents your slayer count decreasing. It has (\\d{1,2}) charge[s]? left.");
|
||||
private static final String CHAT_BRACELET_EXPEDITIOUS = "Your expeditious bracelet helps you progress your";
|
||||
private static final Pattern CHAT_BRACELET_EXPEDITIOUS_REGEX = Pattern.compile(
|
||||
"Your expeditious bracelet helps you progress your slayer (?:task )?faster. It has (\\d{1,2}) charge[s]? left.");
|
||||
private static final Pattern CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX = Pattern.compile(
|
||||
"Your bracelet of slaughter has (\\d{1,2}) charge[s]? left.");
|
||||
private static final Pattern EXPEDITIOUS_CHECK_PATTERN = Pattern.compile(
|
||||
private static final Pattern CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX = Pattern.compile(
|
||||
"Your expeditious bracelet has (\\d{1,2}) charge[s]? left.");
|
||||
private static final Pattern DODGY_PROTECT_PATTERN = Pattern.compile(
|
||||
"Your dodgy necklace protects you\\..*It has (\\d+) charges? left\\.");
|
||||
private static final Pattern SLAUGHTER_ACTIVATE_PATTERN = Pattern.compile(
|
||||
"Your bracelet of slaughter prevents your slayer count decreasing. It has (\\d{1,2}) charge[s]? left.");
|
||||
private static final Pattern EXPEDITIOUS_ACTIVATE_PATTERN = Pattern.compile(
|
||||
"Your expeditious bracelet helps you progress your slayer (?:task )?faster. It has (\\d{1,2}) charge[s]? left.");
|
||||
private static final Pattern DODGY_BREAK_PATTERN = Pattern.compile(
|
||||
"Your dodgy necklace protects you\\..*It then crumbles to dust\\.");
|
||||
private static final String RING_OF_RECOIL_BREAK_MESSAGE = "<col=7f007f>Your Ring of Recoil has shattered.</col>";
|
||||
@@ -331,11 +333,7 @@ public class ItemChargePlugin extends Plugin
|
||||
{
|
||||
String message = event.getMessage();
|
||||
Matcher dodgyCheckMatcher = DODGY_CHECK_PATTERN.matcher(message);
|
||||
Matcher slaughterCheckMatcher = SLAUGHTER_CHECK_PATTERN.matcher(message);
|
||||
Matcher expeditiousCheckMatcher = EXPEDITIOUS_CHECK_PATTERN.matcher(message);
|
||||
Matcher dodgyProtectMatcher = DODGY_PROTECT_PATTERN.matcher(message);
|
||||
Matcher slaughterActivateMatcher = SLAUGHTER_ACTIVATE_PATTERN.matcher(message);
|
||||
Matcher expeditiousActivateMatcher = EXPEDITIOUS_ACTIVATE_PATTERN.matcher(message);
|
||||
Matcher dodgyBreakMatcher = DODGY_BREAK_PATTERN.matcher(message);
|
||||
Matcher bindingNecklaceCheckMatcher = BINDING_CHECK_PATTERN.matcher(event.getMessage());
|
||||
Matcher bindingNecklaceUsedMatcher = BINDING_USED_PATTERN.matcher(event.getMessage());
|
||||
@@ -347,6 +345,10 @@ public class ItemChargePlugin extends Plugin
|
||||
Matcher chronicleLastChargeMatcher = CHRONICLE_LAST_CHARGE_PATTERN.matcher(message);
|
||||
Matcher chronicleOutOfChargesMatcher = CHRONICLE_OUT_OF_CHARGES_PATTERN.matcher(message);
|
||||
Matcher ringOfForgingCheckMatcher = RING_OF_FORGING_CHECK_PATTERN.matcher(message);
|
||||
Matcher slaughterMatcher = CHAT_BRACELET_SLAUGHTER_REGEX.matcher(Text.removeTags(message));
|
||||
Matcher expeditiousMatcher = CHAT_BRACELET_EXPEDITIOUS_REGEX.matcher(Text.removeTags(message));
|
||||
Matcher slaughterChargeMatcher = CHAT_BRACELET_SLAUGHTER_CHARGE_REGEX.matcher(Text.removeTags(message));
|
||||
Matcher expeditiousChargeMatcher = CHAT_BRACELET_EXPEDITIOUS_CHARGE_REGEX.matcher(Text.removeTags(message));
|
||||
|
||||
if (event.getType() == ChatMessageType.GAMEMESSAGE || event.getType() == ChatMessageType.SPAM)
|
||||
{
|
||||
@@ -354,30 +356,30 @@ public class ItemChargePlugin extends Plugin
|
||||
{
|
||||
notifier.notify("Your Ring of Recoil has shattered");
|
||||
}
|
||||
else if (Text.removeTags(message).startsWith(CHAT_BRACELET_SLAUGHTER))
|
||||
{
|
||||
updateBraceletOfSlaughterCharges(slaughterMatcher.find() ? Integer.parseInt(slaughterMatcher.group(1)) : MAX_SLAUGHTER_CHARGES);
|
||||
}
|
||||
else if (Text.removeTags(message).startsWith(CHAT_BRACELET_EXPEDITIOUS))
|
||||
{
|
||||
updateExpeditiousCharges(expeditiousMatcher.find() ? Integer.parseInt(expeditiousMatcher.group(1)) : MAX_EXPEDITIOUS_CHARGES);
|
||||
}
|
||||
else if (slaughterChargeMatcher.find())
|
||||
{
|
||||
updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterChargeMatcher.group(1)));
|
||||
}
|
||||
else if (expeditiousChargeMatcher.find())
|
||||
{
|
||||
updateExpeditiousCharges(Integer.parseInt(expeditiousChargeMatcher.group(1)));
|
||||
}
|
||||
else if (dodgyCheckMatcher.find())
|
||||
{
|
||||
updateDodgyNecklaceCharges(Integer.parseInt(dodgyCheckMatcher.group(1)));
|
||||
}
|
||||
else if (slaughterCheckMatcher.find())
|
||||
{
|
||||
updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterCheckMatcher.group(1)));
|
||||
}
|
||||
else if (expeditiousCheckMatcher.find())
|
||||
{
|
||||
updateExpeditiousCharges(Integer.parseInt(expeditiousCheckMatcher.group(1)));
|
||||
}
|
||||
else if (dodgyProtectMatcher.find())
|
||||
{
|
||||
updateDodgyNecklaceCharges(Integer.parseInt(dodgyProtectMatcher.group(1)));
|
||||
}
|
||||
else if (slaughterActivateMatcher.find())
|
||||
{
|
||||
updateBraceletOfSlaughterCharges(Integer.parseInt(slaughterActivateMatcher.group(1)));
|
||||
}
|
||||
else if (expeditiousActivateMatcher.find())
|
||||
{
|
||||
updateExpeditiousCharges(Integer.parseInt(expeditiousActivateMatcher.group(1)));
|
||||
}
|
||||
else if (dodgyBreakMatcher.find())
|
||||
{
|
||||
if (this.dodgyNotification)
|
||||
@@ -955,4 +957,4 @@ public class ItemChargePlugin extends Plugin
|
||||
this.chronicle = config.chronicle();
|
||||
this.showSackCharges = config.showSackCharges();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import java.awt.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -124,10 +123,12 @@ public class PlayerIndicatorsOverlay extends Overlay
|
||||
{
|
||||
if (clanManager.getRank(actor.getName()) != null)
|
||||
{
|
||||
OverlayUtil.renderActorTextAndImage(graphics, actor, builtString, color,
|
||||
ImageUtil.resizeImage(Objects.requireNonNull(clanManager
|
||||
.getClanImage(clanManager.getRank(actor.getName()))), y, y), 0, ACTOR_HORIZONTAL_TEXT_MARGIN);
|
||||
return;
|
||||
final BufferedImage clanRankImage = clanManager.getClanImage(clanManager.getRank(actor.getName()));
|
||||
if (clanRankImage != null)
|
||||
{
|
||||
OverlayUtil.renderActorTextAndImage(graphics, actor, builtString, color,
|
||||
ImageUtil.resizeImage(clanRankImage, y, y), 0, ACTOR_HORIZONTAL_TEXT_MARGIN);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -393,8 +393,7 @@ public class SlayerPlugin extends Plugin
|
||||
currentTask.setPaused(true);
|
||||
break;
|
||||
case LOGGED_IN:
|
||||
if (loginTick && this.amount != -1
|
||||
&& !this.taskName.isEmpty())
|
||||
if (loginTick && this.amount != -1 && !this.taskName.isEmpty() && currentTask.getTaskName() == null)
|
||||
{
|
||||
setTask(this.taskName, this.amount, this.initialAmount, true, this.taskLocation, this.lastCertainAmount, false);
|
||||
}
|
||||
@@ -753,6 +752,7 @@ public class SlayerPlugin extends Plugin
|
||||
}
|
||||
|
||||
final Task task = Task.getTask(taskName);
|
||||
int delta = slayerExp - cachedXp;
|
||||
|
||||
// null tasks are technically valid, it only means they arent explicitly defined in the Task enum
|
||||
// allow them through so that if there is a task capture failure the counter will still work
|
||||
@@ -762,7 +762,7 @@ public class SlayerPlugin extends Plugin
|
||||
// to the expected exp gain for the task.
|
||||
if (taskKillExp == 0 || taskKillExp == slayerExp - cachedXp)
|
||||
{
|
||||
killedOne();
|
||||
killedOne(delta);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -780,9 +780,7 @@ public class SlayerPlugin extends Plugin
|
||||
int killCount = estimateKillCount(potentialNPCs, gains);
|
||||
for (int i = 0; i < killCount; i++)
|
||||
{
|
||||
killedOne();
|
||||
int delta = slayerExp - cachedXp;
|
||||
currentTask.setElapsedXp(currentTask.getElapsedXp() + delta);
|
||||
killedOne(delta);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,25 +820,28 @@ public class SlayerPlugin extends Plugin
|
||||
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals("slayer") || !event.getKey().equals("infobox"))
|
||||
if (!event.getGroup().equals("slayer"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
updateConfig();
|
||||
|
||||
if (this.showInfobox)
|
||||
if (event.getKey().equals("infobox"))
|
||||
{
|
||||
clientThread.invoke(this::addCounter);
|
||||
}
|
||||
else
|
||||
{
|
||||
removeCounter();
|
||||
if (this.showInfobox)
|
||||
{
|
||||
clientThread.invoke(this::addCounter);
|
||||
}
|
||||
else
|
||||
{
|
||||
removeCounter();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
private void killedOne()
|
||||
private void killedOne(int delta)
|
||||
{
|
||||
if (currentTask.getAmount() == 0)
|
||||
{
|
||||
@@ -849,6 +850,7 @@ public class SlayerPlugin extends Plugin
|
||||
|
||||
currentTask.setAmount(currentTask.getAmount() - 1);
|
||||
currentTask.setElapsedKills(currentTask.getElapsedKills() + 1);
|
||||
currentTask.setElapsedXp(currentTask.getElapsedXp() + delta);
|
||||
if (doubleTroubleExtraKill())
|
||||
{
|
||||
currentTask.setAmount(currentTask.getAmount() - 1);
|
||||
@@ -1208,31 +1210,13 @@ public class SlayerPlugin extends Plugin
|
||||
client.refreshChat();
|
||||
}
|
||||
|
||||
void pointsLookup(ChatMessage chatMessage, String message)
|
||||
private void pointsLookup(ChatMessage chatMessage, String message)
|
||||
{
|
||||
if (!this.pointsCommand)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ChatMessageType type = chatMessage.getType();
|
||||
|
||||
final String player;
|
||||
if (type.equals(ChatMessageType.PRIVATECHATOUT))
|
||||
{
|
||||
player = client.getLocalPlayer().getName();
|
||||
}
|
||||
else
|
||||
{
|
||||
player = Text.removeTags(chatMessage.getName())
|
||||
.replace('\u00A0', ' ');
|
||||
}
|
||||
|
||||
if (Integer.toString(getPoints()) == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String response = new ChatMessageBuilder()
|
||||
.append(ChatColorType.NORMAL)
|
||||
.append("Slayer Points: ")
|
||||
@@ -1313,7 +1297,7 @@ public class SlayerPlugin extends Plugin
|
||||
return str.substring(0, 1).toUpperCase() + str.substring(1);
|
||||
}
|
||||
|
||||
void setPoints(int points)
|
||||
private void setPoints(int points)
|
||||
{
|
||||
this.points = points;
|
||||
this.cachedPoints = points;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class WildernessLocationsMapOverlay extends Overlay
|
||||
{
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.HIGH);
|
||||
setLayer(OverlayLayer.ALWAYS_ON_TOP);
|
||||
setLayer(OverlayLayer.ABOVE_MAP);
|
||||
this.client = client;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@@ -5801,16 +5801,7 @@
|
||||
"combatLevel": 66,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 15,
|
||||
"attackLevel": 90,
|
||||
"strengthLevel": 90,
|
||||
"defenceLevel": 90,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 70,
|
||||
"magic": 70,
|
||||
"stabDef": 40,
|
||||
"slashDef": 90,
|
||||
"crushDef": 90,
|
||||
"magicDef": 34
|
||||
"magic": 70
|
||||
},
|
||||
"800": {
|
||||
"name": "Locust rider",
|
||||
@@ -6958,18 +6949,6 @@
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
},
|
||||
"1038": {
|
||||
"name": "Monkey",
|
||||
"hitpoints": 6,
|
||||
"combatLevel": 3,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 2,
|
||||
"strengthLevel": 3,
|
||||
"defenceLevel": 2,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
},
|
||||
"1039": {
|
||||
"name": "Albino bat",
|
||||
"hitpoints": 33,
|
||||
@@ -8168,7 +8147,9 @@
|
||||
"strengthLevel": 35,
|
||||
"defenceLevel": 35,
|
||||
"rangeLevel": 30,
|
||||
"magicLevel": 10
|
||||
"magicLevel": 10,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"1369": {
|
||||
"name": "Air elemental",
|
||||
@@ -11839,24 +11820,6 @@
|
||||
"crushDef": 175,
|
||||
"rangeDef": 250
|
||||
},
|
||||
"2263": {
|
||||
"name": "Bardur",
|
||||
"hitpoints": 99,
|
||||
"combatLevel": 94,
|
||||
"attackSpeed": 6,
|
||||
"attackLevel": 99,
|
||||
"strengthLevel": 40,
|
||||
"defenceLevel": 99,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1,
|
||||
"stabDef": 150,
|
||||
"slashDef": 150,
|
||||
"crushDef": 150,
|
||||
"rangeDef": 150,
|
||||
"magicDef": 150,
|
||||
"bonusAttack": 100,
|
||||
"bonusStrength": 100
|
||||
},
|
||||
"2264": {
|
||||
"name": "Dagannoth fledgeling",
|
||||
"hitpoints": 100,
|
||||
@@ -13681,7 +13644,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"2791": {
|
||||
"name": "Cow",
|
||||
@@ -13693,7 +13658,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"2792": {
|
||||
"name": "Cow calf",
|
||||
@@ -13717,7 +13684,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"2794": {
|
||||
"name": "Cow calf",
|
||||
@@ -13741,7 +13710,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"2801": {
|
||||
"name": "Cow calf",
|
||||
@@ -16031,7 +16002,7 @@
|
||||
"hitpoints": 20,
|
||||
"combatLevel": 18,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 6,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 12,
|
||||
"strengthLevel": 16,
|
||||
"defenceLevel": 19,
|
||||
@@ -18716,26 +18687,6 @@
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
},
|
||||
"3897": {
|
||||
"name": "Koschei the deathless",
|
||||
"hitpoints": 79,
|
||||
"attackSpeed": 4
|
||||
},
|
||||
"3898": {
|
||||
"name": "Koschei the deathless",
|
||||
"hitpoints": 79,
|
||||
"attackSpeed": 4
|
||||
},
|
||||
"3899": {
|
||||
"name": "Koschei the deathless",
|
||||
"hitpoints": 79,
|
||||
"attackSpeed": 4
|
||||
},
|
||||
"3900": {
|
||||
"name": "Koschei the deathless",
|
||||
"hitpoints": 79,
|
||||
"attackSpeed": 4
|
||||
},
|
||||
"3901": {
|
||||
"name": "Fox",
|
||||
"hitpoints": 30,
|
||||
@@ -18877,18 +18828,6 @@
|
||||
"magicLevel": 1,
|
||||
"bonusStrength": 20
|
||||
},
|
||||
"3942": {
|
||||
"name": "Freygerd",
|
||||
"hitpoints": 50,
|
||||
"combatLevel": 48,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 40,
|
||||
"strengthLevel": 40,
|
||||
"defenceLevel": 40,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1,
|
||||
"bonusStrength": 20
|
||||
},
|
||||
"3943": {
|
||||
"name": "Lensa",
|
||||
"hitpoints": 50,
|
||||
@@ -22127,7 +22066,7 @@
|
||||
"hitpoints": 15,
|
||||
"combatLevel": 13,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 6,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 10,
|
||||
"strengthLevel": 10,
|
||||
"defenceLevel": 12,
|
||||
@@ -25428,7 +25367,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"5848": {
|
||||
"name": "Tanglefoot",
|
||||
@@ -27385,10 +27326,15 @@
|
||||
},
|
||||
"6340": {
|
||||
"name": "Cow (hard)",
|
||||
"hitpoints": 8,
|
||||
"hitpoints": 160,
|
||||
"combatLevel": 170,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 4
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 200,
|
||||
"strengthLevel": 200,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
},
|
||||
"6342": {
|
||||
"name": "Barrelchest",
|
||||
@@ -28249,7 +28195,9 @@
|
||||
"strengthLevel": 1,
|
||||
"defenceLevel": 1,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1
|
||||
"magicLevel": 1,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"6402": {
|
||||
"name": "Mosquito swarm",
|
||||
@@ -29533,7 +29481,7 @@
|
||||
"hitpoints": 130,
|
||||
"combatLevel": 80,
|
||||
"slayerLevel": 1,
|
||||
"attackSpeed": 6,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 55,
|
||||
"strengthLevel": 60,
|
||||
"defenceLevel": 50,
|
||||
@@ -35559,6 +35507,7 @@
|
||||
"name": "Galvek",
|
||||
"hitpoints": 1200,
|
||||
"combatLevel": 608,
|
||||
"attackSpeed": 6,
|
||||
"attackLevel": 632,
|
||||
"strengthLevel": 268,
|
||||
"defenceLevel": 188,
|
||||
@@ -35575,12 +35524,14 @@
|
||||
"bonusRangeStrength": 6,
|
||||
"bonusMagicDamage": 42,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
"venomImmune": true,
|
||||
"dragon": true
|
||||
},
|
||||
"8095": {
|
||||
"name": "Galvek",
|
||||
"hitpoints": 1200,
|
||||
"combatLevel": 608,
|
||||
"attackSpeed": 6,
|
||||
"attackLevel": 632,
|
||||
"strengthLevel": 268,
|
||||
"defenceLevel": 188,
|
||||
@@ -35597,7 +35548,8 @@
|
||||
"bonusRangeStrength": 6,
|
||||
"bonusMagicDamage": 42,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
"venomImmune": true,
|
||||
"dragon": true
|
||||
},
|
||||
"8096": {
|
||||
"name": "Galvek",
|
||||
@@ -35753,6 +35705,7 @@
|
||||
"name": "Galvek",
|
||||
"hitpoints": 1200,
|
||||
"combatLevel": 608,
|
||||
"attackSpeed": 6,
|
||||
"attackLevel": 632,
|
||||
"strengthLevel": 268,
|
||||
"defenceLevel": 188,
|
||||
@@ -35769,7 +35722,8 @@
|
||||
"bonusRangeStrength": 6,
|
||||
"bonusMagicDamage": 42,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
"venomImmune": true,
|
||||
"dragon": true
|
||||
},
|
||||
"8178": {
|
||||
"name": "Galvek",
|
||||
@@ -38227,5 +38181,196 @@
|
||||
"bonusAttack": 14,
|
||||
"bonusStrength": 28,
|
||||
"bonusRangeStrength": 28
|
||||
},
|
||||
"9258": {
|
||||
"name": "Basilisk Sentinel",
|
||||
"hitpoints": 460,
|
||||
"combatLevel": 351,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 274,
|
||||
"strengthLevel": 274,
|
||||
"defenceLevel": 274,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 274,
|
||||
"stabDef": 40,
|
||||
"slashDef": 40,
|
||||
"magicDef": 40
|
||||
},
|
||||
"9282": {
|
||||
"name": "Basilisk Youngling",
|
||||
"hitpoints": 60,
|
||||
"combatLevel": 57,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 25,
|
||||
"strengthLevel": 40,
|
||||
"defenceLevel": 70,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1,
|
||||
"stabDef": 20,
|
||||
"slashDef": 20,
|
||||
"magicDef": 20
|
||||
},
|
||||
"9287": {
|
||||
"name": "Monstrous Basilisk",
|
||||
"hitpoints": 170,
|
||||
"combatLevel": 135,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 88,
|
||||
"strengthLevel": 98,
|
||||
"defenceLevel": 130,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1,
|
||||
"stabDef": 35,
|
||||
"slashDef": 35,
|
||||
"magicDef": 35,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"9288": {
|
||||
"name": "Monstrous Basilisk",
|
||||
"hitpoints": 170,
|
||||
"combatLevel": 135,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 88,
|
||||
"strengthLevel": 98,
|
||||
"defenceLevel": 130,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 1,
|
||||
"stabDef": 35,
|
||||
"slashDef": 35,
|
||||
"magicDef": 35,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"9289": {
|
||||
"name": "The Jormungand",
|
||||
"hitpoints": 600,
|
||||
"combatLevel": 363,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 5,
|
||||
"attackLevel": 180,
|
||||
"strengthLevel": 180,
|
||||
"defenceLevel": 180,
|
||||
"rangeLevel": 180,
|
||||
"magicLevel": 180,
|
||||
"stabDef": 50,
|
||||
"slashDef": 50,
|
||||
"crushDef": 10,
|
||||
"rangeDef": 50,
|
||||
"magicDef": 50,
|
||||
"bonusStrength": 12,
|
||||
"bonusRangeStrength": 12,
|
||||
"bonusMagicDamage": 12
|
||||
},
|
||||
"9290": {
|
||||
"name": "The Jormungand",
|
||||
"hitpoints": 600,
|
||||
"combatLevel": 363,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 5,
|
||||
"attackLevel": 180,
|
||||
"strengthLevel": 180,
|
||||
"defenceLevel": 180,
|
||||
"rangeLevel": 180,
|
||||
"magicLevel": 180,
|
||||
"stabDef": 50,
|
||||
"slashDef": 50,
|
||||
"crushDef": 10,
|
||||
"rangeDef": 50,
|
||||
"magicDef": 50,
|
||||
"bonusStrength": 12,
|
||||
"bonusRangeStrength": 12,
|
||||
"bonusMagicDamage": 12
|
||||
},
|
||||
"9291": {
|
||||
"name": "The Jormungand",
|
||||
"hitpoints": 600,
|
||||
"combatLevel": 363,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 5,
|
||||
"attackLevel": 180,
|
||||
"strengthLevel": 180,
|
||||
"defenceLevel": 180,
|
||||
"rangeLevel": 180,
|
||||
"magicLevel": 180,
|
||||
"stabDef": 50,
|
||||
"slashDef": 50,
|
||||
"crushDef": 10,
|
||||
"rangeDef": 50,
|
||||
"magicDef": 50,
|
||||
"bonusStrength": 12,
|
||||
"bonusRangeStrength": 12,
|
||||
"bonusMagicDamage": 12
|
||||
},
|
||||
"9292": {
|
||||
"name": "The Jormungand",
|
||||
"hitpoints": 600,
|
||||
"combatLevel": 363,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 5,
|
||||
"attackLevel": 180,
|
||||
"strengthLevel": 180,
|
||||
"defenceLevel": 180,
|
||||
"rangeLevel": 180,
|
||||
"magicLevel": 180,
|
||||
"stabDef": 50,
|
||||
"slashDef": 50,
|
||||
"crushDef": 10,
|
||||
"rangeDef": 50,
|
||||
"magicDef": 50,
|
||||
"bonusStrength": 12,
|
||||
"bonusRangeStrength": 12,
|
||||
"bonusMagicDamage": 12
|
||||
},
|
||||
"9293": {
|
||||
"name": "Basilisk Knight",
|
||||
"hitpoints": 200,
|
||||
"combatLevel": 182,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 150,
|
||||
"strengthLevel": 150,
|
||||
"defenceLevel": 150,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 150,
|
||||
"stabDef": 25,
|
||||
"slashDef": 25,
|
||||
"magicDef": 25
|
||||
},
|
||||
"9295": {
|
||||
"name": "Typhor",
|
||||
"hitpoints": 280,
|
||||
"combatLevel": 194,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 150,
|
||||
"strengthLevel": 150,
|
||||
"defenceLevel": 150,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 150,
|
||||
"stabDef": 25,
|
||||
"slashDef": 25,
|
||||
"magicDef": 25,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
},
|
||||
"9296": {
|
||||
"name": "Typhor",
|
||||
"hitpoints": 280,
|
||||
"combatLevel": 194,
|
||||
"slayerLevel": 40,
|
||||
"attackSpeed": 4,
|
||||
"attackLevel": 150,
|
||||
"strengthLevel": 150,
|
||||
"defenceLevel": 150,
|
||||
"rangeLevel": 1,
|
||||
"magicLevel": 150,
|
||||
"stabDef": 25,
|
||||
"slashDef": 25,
|
||||
"magicDef": 25,
|
||||
"poisonImmune": true,
|
||||
"venomImmune": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user