Deep wilderness threat balancing

Killing the hostile event now removes all built up threat
Hostile event can now follow the player up/down stairs, through cave entrances, etc.
Hostile event now applies disease status for 25 hits when killed
Reduced the threat gained by killing NPCs by 5x
Increased the threat gained by brawlers drops by 3.75x
PvP gear drops now award maximum threat (30 minutes to return to zero)
In summary, the hostile event will trigger less often but will be more dangerous
This commit is contained in:
Ceikry
2023-08-11 00:09:07 +00:00
committed by Ryan
parent 1be9335815
commit 6a3e91f13c
7 changed files with 84 additions and 21 deletions
@@ -40,7 +40,6 @@ class Frozen : PersistTimer (1, "frozen") {
override fun getTimer (vararg args: Any) : RSTimer {
val inst = Frozen()
println(args)
inst.runInterval = args.getOrNull(0) as? Int ?: 10
inst.shouldApplyImmunity = args.getOrNull(1) as? Boolean ?: false
return inst
@@ -97,13 +97,13 @@ public final class WildernessZone extends MapZone {
boolean isValidTarget = e instanceof NPC && (isDeepWildy || e.asNpc().getName().contains("Revenant") || e.getId() == NPCs.CHAOS_ELEMENTAL_3200);
if (isDeepWildy) {
DeepWildyThreat.adjustThreat((Player) killer, 250);
DeepWildyThreat.adjustThreat((Player) killer, 50);
}
if (!isValidTarget) return;
int cEleGloveRate = isDeepWildy ? 50 : 150;
int normalGloveRate = isDeepWildy ? 75 : 150;
int normalGloveRate = isDeepWildy ? 100 : 150;
int pvpGearRate = getNewDropRate(e.asNpc().getDefinition().getCombatLevel());
if (isDeepWildy)
@@ -114,7 +114,8 @@ public final class WildernessZone extends MapZone {
Item reward = new Item(BrawlingGloves.forIndicator(glove).getId());
GroundItemManager.create(reward, e.asNpc().getDropLocation(), killer.asPlayer());
Repository.sendNews(killer.getUsername() + " has received " + reward.getName().toLowerCase() + " from a " + e.asNpc().getName() + "!");
DeepWildyThreat.adjustThreat((Player) killer, 200);
if (isDeepWildy)
DeepWildyThreat.adjustThreat((Player) killer, 750);
}
for (int j : PVP_GEAR) {
@@ -128,7 +129,8 @@ public final class WildernessZone extends MapZone {
}
Repository.sendNews(killer.asPlayer().getUsername() + " has received a " + reward.getName() + " from a " + e.asNpc().getName() + "!");
GroundItemManager.create(reward, ((NPC) e).getDropLocation(), killer.asPlayer());
DeepWildyThreat.adjustThreat((Player) killer, 1000);
if (isDeepWildy)
DeepWildyThreat.adjustThreat((Player) killer, 3000);
}
}
}
@@ -307,6 +309,13 @@ public final class WildernessZone extends MapZone {
return false;
}
public static boolean isInZone (Location l) {
for (ZoneBorders z : INSTANCE.borders) {
if (z.insideBorder(l)) return true;
}
return false;
}
/**
* The wilderness level.
* @return the level.
@@ -33,14 +33,14 @@ class UpdateSequence
playersList = renderablePlayers
npcList = Repository.renderableNpcs
lobbyList!!.map{ PacketRepository.send(ClearMinimapFlag::class.java, PlayerContext(it)) }
var playerTickStart = System.currentTimeMillis()
renderablePlayers.forEach(Player::tick)
Grafana.playerTickTime = (System.currentTimeMillis() - playerTickStart).toInt()
var npcTickStart = System.currentTimeMillis()
npcList!!.forEach(NPC::tick)
Grafana.npcTickTime = (System.currentTimeMillis() - npcTickStart).toInt()
var playerTickStart = System.currentTimeMillis()
renderablePlayers.forEach(Player::tick)
Grafana.playerTickTime = (System.currentTimeMillis() - playerTickStart).toInt()
}
/**