Made the various signposts like cow and church sign authentic and persistent
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package core.game.interaction.city.lumbridge;
|
||||
|
||||
import api.ContentAPI;
|
||||
import core.cache.def.impl.SceneryDefinition;
|
||||
import core.game.content.dialogue.DialoguePlugin;
|
||||
import core.game.interaction.OptionHandler;
|
||||
@@ -7,6 +8,7 @@ import core.game.node.Node;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
import rs09.GlobalStats;
|
||||
|
||||
/**
|
||||
* Cow field sign manager
|
||||
@@ -40,7 +42,12 @@ public class CowFieldSign extends OptionHandler {
|
||||
public DialoguePlugin newInstance(Player player){return new SignDialogue(player);}
|
||||
@Override
|
||||
public boolean open(Object... args){
|
||||
interpreter.sendPlainMessage(false,"Wandering adventurers have killed " + CowPenZone.CowDeaths + " cows in this field.", "Local farmers call it an epidemic.");
|
||||
int dailyCowDeaths = GlobalStats.getDailyCowDeaths();
|
||||
if(dailyCowDeaths > 0) {
|
||||
ContentAPI.sendDialogue(player, "Local cowherders have reported that " + dailyCowDeaths + " cows have been slain in this field today by passing adventurers. Farmers throughout the land fear this may be an epidemic.");
|
||||
} else {
|
||||
ContentAPI.sendDialogue(player, "The Lumbridge cow population has been thriving today, without a single cow death to worry about!" );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import core.game.world.map.zone.ZoneBorders;
|
||||
import core.game.world.map.zone.ZoneBuilder;
|
||||
import core.plugin.Initializable;
|
||||
import core.plugin.Plugin;
|
||||
import rs09.GlobalStats;
|
||||
|
||||
/**
|
||||
* Zone for the lumbridge cow pen
|
||||
@@ -40,7 +41,7 @@ public class CowPenZone extends MapZone implements Plugin<Object> {
|
||||
@Override
|
||||
public boolean death(Entity e, Entity killer) {
|
||||
if (killer instanceof Player && e instanceof NPC) {
|
||||
CowDeaths++;
|
||||
GlobalStats.incrementDailyCowDeaths();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -72,6 +72,7 @@ import core.tools.StringUtils;
|
||||
import kotlin.Unit;
|
||||
import kotlin.jvm.functions.Function1;
|
||||
import org.rs09.consts.Items;
|
||||
import rs09.GlobalStats;
|
||||
import rs09.ServerConstants;
|
||||
import rs09.game.VarpManager;
|
||||
import rs09.game.content.ame.RandomEventManager;
|
||||
@@ -582,6 +583,7 @@ public class Player extends Entity {
|
||||
|
||||
@Override
|
||||
public void finalizeDeath(Entity killer) {
|
||||
GlobalStats.incrementDeathCount();
|
||||
settings.setSpecialEnergy(100);
|
||||
settings.updateRunEnergy(settings.getRunEnergy() - 100);
|
||||
Player k = killer instanceof Player ? (Player) killer : this;
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package rs09
|
||||
|
||||
import org.json.simple.JSONObject
|
||||
import rs09.ServerStore.getInt
|
||||
|
||||
object GlobalStats {
|
||||
|
||||
@JvmStatic
|
||||
fun incrementDeathCount(){
|
||||
getDailyDeathArchive()["players"] = getDailyDeathArchive().getInt("players") + 1
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun incrementDailyCowDeaths(){
|
||||
getDailyDeathArchive()["lumbridge-cows"] = getDailyDeathArchive().getInt("lumbridge-cows") + 1
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun incrementGuardPickpockets(){
|
||||
getGuardPickpocketArchive()["count"] = getGuardPickpocketArchive().getInt("count") + 1
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getDailyGuardPickpockets(): Int {
|
||||
return getGuardPickpocketArchive().getInt("count")
|
||||
}
|
||||
|
||||
fun getDailyDeaths(): Int {
|
||||
return getDailyDeathArchive().getInt("players")
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getDailyCowDeaths(): Int {
|
||||
return getDailyDeathArchive().getInt("lumbridge-cows")
|
||||
}
|
||||
|
||||
private fun getDailyDeathArchive(): JSONObject {
|
||||
return ServerStore.getArchive("daily-deaths-global")
|
||||
}
|
||||
|
||||
private fun getGuardPickpocketArchive(): JSONObject {
|
||||
return ServerStore.getArchive("daily-guard-pickpockets")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,15 +6,16 @@ import core.game.node.Node
|
||||
import core.game.node.entity.Entity
|
||||
import core.game.world.map.zone.MapZone
|
||||
import core.game.world.map.zone.ZoneBorders
|
||||
import rs09.GlobalStats
|
||||
import rs09.game.interaction.InteractionListener
|
||||
import rs09.game.system.SystemLogger
|
||||
|
||||
class VarrockGuardSignpost : InteractionListener() {
|
||||
override fun defineListeners() {
|
||||
val zone = object : MapZone("Varrock Guards", true){
|
||||
var pickpocketCounter = 0
|
||||
override fun interact(e: Entity?, target: Node?, option: Option?): Boolean {
|
||||
if(option != null && option.name.toLowerCase().contains("pickpocket") && target != null && target.name.toLowerCase().contains("guard")){
|
||||
pickpocketCounter++
|
||||
GlobalStats.incrementGuardPickpockets()
|
||||
}
|
||||
return false
|
||||
}
|
||||
@@ -25,8 +26,14 @@ class VarrockGuardSignpost : InteractionListener() {
|
||||
ContentAPI.registerMapZone(zone, ZoneBorders(3180,3420,3165,3435))
|
||||
ContentAPI.registerMapZone(zone, ZoneBorders(3280,3422,3266,3435))
|
||||
|
||||
on(31298, SCENERY, "read"){player, node ->
|
||||
ContentAPI.sendDialogue(player, "Guards in the Varrock Palace are on full alert due to increasing levels of pickpocketing. So far today, ${zone.pickpocketCounter} guards have had their money pickpocketed in the palace or at the city gates.")
|
||||
on(31298, SCENERY, "read"){player, _ ->
|
||||
val pickpocketCount = GlobalStats.getDailyGuardPickpockets()
|
||||
SystemLogger.logInfo("Is equal? ${pickpocketCount == 0}")
|
||||
when(pickpocketCount){
|
||||
0 -> ContentAPI.sendDialogue(player, "The Varrock Palace guards are pleased to announce that crime is at an all-time low, without a single guard in the palace or at the city gates being pickpocketed today.")
|
||||
1 -> ContentAPI.sendDialogue(player, "One of the Varrock Palace guards was pickpocketed today. He was close to tears at having lost his last few gold pieces." )
|
||||
else -> ContentAPI.sendDialogue(player, "Guards in the Varrock Palace are on full alert due to increasing levels of pickpocketing. So far today, $pickpocketCount guards have had their money pickpocketed in the palace or at the city gates.")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package rs09.game.interaction.region
|
||||
|
||||
import api.ContentAPI
|
||||
import rs09.GlobalStats
|
||||
import rs09.game.interaction.InteractionListener
|
||||
|
||||
class LumbridgeListeners : InteractionListener() {
|
||||
|
||||
val CHURCH_SIGN = 31299
|
||||
|
||||
override fun defineListeners() {
|
||||
on(CHURCH_SIGN, SCENERY, "read"){player, _ ->
|
||||
val deaths = GlobalStats.getDailyDeaths()
|
||||
if(deaths > 0){
|
||||
ContentAPI.sendDialogue(player, "So far today $deaths unlucky adventurers have died on RuneScape and been sent to their respawn location. Be careful out there.")
|
||||
} else {
|
||||
ContentAPI.sendDialogue(player, "So far today not a single adventurer on RuneScape has met their end grisly or otherwise. Either the streets are getting safer or adventurers are getting warier.")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -39,6 +39,7 @@ class MajorUpdateWorker {
|
||||
val start = System.currentTimeMillis()
|
||||
val rmlist = ArrayList<Pulse>()
|
||||
val list = ArrayList(GameWorld.Pulser.TASKS)
|
||||
Server.heartbeat()
|
||||
|
||||
//run our pulses
|
||||
for(pulse in list) {
|
||||
@@ -52,17 +53,20 @@ class MajorUpdateWorker {
|
||||
|
||||
rmlist.clear()
|
||||
//perform our update sequence where we write masks, etc
|
||||
try {
|
||||
sequence.start()
|
||||
sequence.run()
|
||||
sequence.end()
|
||||
PacketWriteQueue.flush()
|
||||
} catch (e: Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
//increment global ticks variable
|
||||
GameWorld.pulse()
|
||||
//disconnect all players waiting to be disconnected
|
||||
Repository.disconnectionQueue.update()
|
||||
//tick all manager plugins
|
||||
Managers.tick()
|
||||
Server.heartbeat()
|
||||
|
||||
//Handle daily restart if enabled
|
||||
if(sdf.format(Date()).toInt() == 0){
|
||||
|
||||
Reference in New Issue
Block a user