Files
2009scape/Server/src/main/kotlin/rs09/game/content/jobs/JobManager.kt
T
2021-07-05 19:00:30 -05:00

94 lines
3.5 KiB
Kotlin

package rs09.game.content.jobs
import GatheringJobs
import SlayingJob
import core.game.node.entity.npc.NPC
import core.game.node.entity.player.Player
import core.game.node.item.GroundItemManager
import core.game.node.item.Item
import rs09.game.system.SystemLogger
import java.util.concurrent.TimeUnit
object JobManager {
@JvmStatic
fun updateJobRemaining(player: Player, amount: Int = 0) {
val cur = player.getAttribute("jobs:amount",0)
val new = cur - amount
val jobType = player.getAttribute("jobs:type",0)
val jobId = player.getAttribute("jobs:id",0)
var gJob: GatheringJobs? = null
var sJob: SlayingJob? = null
if(jobType == 0){
gJob = GatheringJobs.values()[jobId]
} else {
sJob = SlayingJob.values()[jobId]
}
if(new % 5 == 0 && sJob != null && new > 0){
player.sendMessage("You have $new ${NPC(sJob.ids[0]).name.toLowerCase()} left to go.")
}
if(new == 0 && sJob != null){
player.sendMessage("You have completed your job.")
}
player.setAttribute("jobs:amount",new)
}
@JvmStatic
fun handleDeath(npc: Int, player: Player) {
val jobId = player.getAttribute("jobs:id",0)
val type = player.getAttribute("jobs:type",0)
if(type == 1) {
val job = SlayingJob.values()[jobId]
if (job.ids.contains(npc)) {
updateJobRemaining(player, 1)
}
}
}
@JvmStatic
fun rewardPlayer(player: Player, npc: NPC){
val amt = player.getAttribute("jobs:original_amount",0)
val type = player.getAttribute("jobs:type",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){
val it = Item(GatheringJobs.values()[jobId].itemId)
var amount = player.inventory.getAmount(it)
val needed = player.getAttribute("jobs:amount",0)
if(amount == 0){
player.dialogueInterpreter.open(CancelJobDialogueFile(),npc)
SystemLogger.logAlert("Opening CancelJob")
return
}
if(amount < needed){
player.dialogueInterpreter.sendItemMessage(GatheringJobs.values()[jobId].itemId,"You still need to gather ${needed - amount} more.")
player.inventory.remove(Item(it.id,amount))
player.setAttribute("jobs:amount",needed - amount)
return
}
if(amount > needed) amount = needed
player.inventory.remove(Item(it.id,amount))
} else {
val needed = player.getAttribute("jobs:amount",0)
if(needed > 0){
player.dialogueInterpreter.sendDialogue("You still need to kill $needed more ${NPC(SlayingJob.values()[jobId].ids[0]).name.toLowerCase()}.")
return
}
}
if(!player.inventory.add(Item(995,250 * amt))){
GroundItemManager.create(Item(995,250 * amt),player.centerLocation,player)
}
player.removeAttribute("jobs:id")
player.removeAttribute("jobs:amount")
player.removeAttribute("jobs:original_amount")
player.removeAttribute("jobs:type")
player.incrementAttribute("/save:jobs:dailyAmt",1)
System.out.println("Complete amount: ${player.getAttribute("jobs:dailyAmt",0)}")
}
}