Added exclusions for old farming varps + daily job limit

This commit is contained in:
Ceikry 2021-03-13 20:19:20 -06:00
parent 68195eaeb7
commit b83dd22f2e
5 changed files with 26 additions and 1 deletions

View file

@ -728,7 +728,7 @@ public abstract class Entity extends Node {
* @param key The attribute name. * @param key The attribute name.
*/ */
public void incrementAttribute(String key, int amount) { public void incrementAttribute(String key, int amount) {
attributes.setAttribute(key, attributes.getAttribute(key.replace("/save:",""), 0) + amount); attributes.setAttribute(key, attributes.getAttribute(key, 0) + amount);
} }
/** /**

View file

@ -4,6 +4,7 @@ import core.cache.def.impl.VarbitDefinition
import core.game.node.entity.player.Player import core.game.node.entity.player.Player
import org.json.simple.JSONArray import org.json.simple.JSONArray
import org.json.simple.JSONObject import org.json.simple.JSONObject
import rs09.game.node.entity.skill.farming.FarmingPatch
/** /**
* Manages the collection of a player's varps. * Manages the collection of a player's varps.
@ -74,9 +75,13 @@ class VarpManager(val player: Player) {
} }
fun parse(data: JSONArray){ fun parse(data: JSONArray){
val patch_varps = FarmingPatch.values().map { it.varpIndex }.toIntArray()
val bin_varps = FarmingPatch.values().map { it.varpIndex }.toIntArray()
for(varpobj in data){ for(varpobj in data){
val vobj = varpobj as JSONObject val vobj = varpobj as JSONObject
val index = vobj["index"].toString().toInt() val index = vobj["index"].toString().toInt()
if(patch_varps.contains(index)) continue
if(bin_varps.contains(index)) continue
val varp = get(index) val varp = get(index)
val bits = vobj["bitArray"] as JSONArray val bits = vobj["bitArray"] as JSONArray
for(vbit in bits){ for(vbit in bits){

View file

@ -7,6 +7,7 @@ import core.game.node.entity.player.Player
import core.game.node.item.GroundItemManager import core.game.node.item.GroundItemManager
import core.game.node.item.Item import core.game.node.item.Item
import rs09.game.system.SystemLogger import rs09.game.system.SystemLogger
import java.util.concurrent.TimeUnit
object JobManager { object JobManager {
@JvmStatic @JvmStatic
@ -51,6 +52,11 @@ object JobManager {
val amt = player.getAttribute("jobs:original_amount",0) val amt = player.getAttribute("jobs:original_amount",0)
val type = player.getAttribute("jobs:type",0) val type = player.getAttribute("jobs:type",0)
val jobId = player.getAttribute("jobs:id",0) val jobId = player.getAttribute("jobs:id",0)
val dailyDone = player.getAttribute("jobs:dailyAmt",0)
if(dailyDone == 3){
player.dialogueInterpreter.sendDialogue("You can only complete 3 jobs per day.")
return
}
if(type == 0){ if(type == 0){
val it = Item(GatheringJobs.values()[jobId].itemId) val it = Item(GatheringJobs.values()[jobId].itemId)
var amount = player.inventory.getAmount(it) var amount = player.inventory.getAmount(it)
@ -82,5 +88,9 @@ object JobManager {
player.removeAttribute("jobs:amount") player.removeAttribute("jobs:amount")
player.removeAttribute("jobs:original_amount") player.removeAttribute("jobs:original_amount")
player.removeAttribute("jobs:type") player.removeAttribute("jobs:type")
player.incrementAttribute("/save:jobs:dailyAmt",1)
if(player.getAttribute("jobs:dailyAmt",0) == 3){
player.setAttribute("/save:jobs:reset_time",System.currentTimeMillis() + TimeUnit.HOURS.toMillis(24))
}
} }
} }

View file

@ -57,6 +57,10 @@ class WorkForInteractionListener : InteractionListener() {
var amount = 0 var amount = 0
var jobId = 0 var jobId = 0
if(player.getAttribute("jobs:reset_time",0L) < System.currentTimeMillis()){
player.setAttribute("/save:jobs:dailyAmt",0)
}
if(player.getAttribute("jobs:id",-1) != -1){ if(player.getAttribute("jobs:id",-1) != -1){
JobManager.rewardPlayer(player,node.asNpc()) JobManager.rewardPlayer(player,node.asNpc())
return@on true return@on true

View file

@ -15,6 +15,7 @@ import org.json.simple.JSONArray
import org.json.simple.JSONObject import org.json.simple.JSONObject
import org.json.simple.parser.JSONParser import org.json.simple.parser.JSONParser
import rs09.ServerConstants import rs09.ServerConstants
import rs09.game.node.entity.skill.farming.FarmingPatch
import rs09.game.system.SystemLogger import rs09.game.system.SystemLogger
import rs09.game.world.GameWorld import rs09.game.world.GameWorld
import java.io.FileReader import java.io.FileReader
@ -31,6 +32,9 @@ class PlayerSaveParser(val player: Player) {
var saveFile: JSONObject? = null var saveFile: JSONObject? = null
var read = true var read = true
val patch_varps = FarmingPatch.values().map { it.varpIndex }.toIntArray()
val bin_varps = FarmingPatch.values().map { it.varpIndex }.toIntArray()
init { init {
reader reader
?: SystemLogger.logWarn("Couldn't find save file for ${player.name}, or save is corrupted.").also { read = false } ?: SystemLogger.logWarn("Couldn't find save file for ${player.name}, or save is corrupted.").also { read = false }
@ -246,6 +250,8 @@ class PlayerSaveParser(val player: Player) {
val c = config as JSONObject val c = config as JSONObject
val index = (c.get("index") as String).toInt() val index = (c.get("index") as String).toInt()
if(index == 1048) continue if(index == 1048) continue
if(patch_varps.contains(index)) continue
if(bin_varps.contains(index)) continue
val value = (c.get("value") as String).toInt() val value = (c.get("value") as String).toInt()
player.configManager.savedConfigurations[index] = value player.configManager.savedConfigurations[index] = value
} }