Refactored movement pulse

Fixed bug with Vinesweeper gnomes not checking flags
Fixed hunter tracking
This commit is contained in:
Ceikry
2023-06-29 01:46:00 +00:00
committed by Ryan
parent da33c89a70
commit 06e8279f2a
13 changed files with 192 additions and 121 deletions
@@ -7,12 +7,15 @@ import org.rs09.consts.NPCs
import core.game.dialogue.DialogueFile
import core.game.interaction.InteractionListener
import core.game.interaction.IntType
import core.game.world.update.flag.context.Animation
import core.tools.END_DIALOGUE
import core.api.*
class MistagEasterEgg : InteractionListener {
val DIAMOND = Items.DIAMOND_1601
val MISTAG = NPCs.MISTAG_2084
val ZANIK_RING = 14649
val DRUNK_RENDER = 982
override fun defineListeners() {
onUseWith(IntType.NPC,DIAMOND,MISTAG){ player, _, with ->
@@ -30,6 +33,18 @@ class MistagEasterEgg : InteractionListener {
player.appearance.transformNPC(-1)
return@onUnequip true
}
onEquip(Items.BEER_1917){player, _ ->
setAttribute(player, "render-anim-override", DRUNK_RENDER)
return@onEquip true
}
onUnequip(Items.BEER_1917){player, _ ->
removeAttribute(player, "render-anim-override")
player.appearance.setDefaultAnimations()
player.appearance.sync()
return@onUnequip true
}
}
}
@@ -55,4 +70,4 @@ class MistagEasterEggDialogue(val hasRing: Boolean): DialogueFile(){
override fun npc(vararg messages: String?): Component? {
return super.npc(core.game.dialogue.FacialExpression.OLD_HAPPY,*messages)
}
}
}
@@ -217,7 +217,7 @@ abstract class HunterTracking : OptionHandler(){
trail.get(currentIndex)
}
} else {
return false
TrailDefinition(0,TrailType.LINKING,false,Location(0,0,0),Location(0,0,0),Location(0,0,0))
}
when(option){
@@ -12,6 +12,7 @@ import core.api.*
import core.tools.SystemLogger
import core.game.system.command.Privilege
import core.game.world.GameWorld
import core.game.world.map.path.Pathfinder
import core.game.world.repository.Repository
import core.tools.Log
import java.lang.Integer.min
@@ -108,24 +109,14 @@ class RevenantController : TickListener, Commands {
NONE {
override fun execute(revenantNPC: RevenantNPC) {}
},
INTENTIONAL_IDLE {
private val MAX_IDLE_TIME: Int = 50
override fun execute(revenantNPC: RevenantNPC) {
if (taskTimeRemaining[revenantNPC] == 0) currentTask[revenantNPC] = NONE
}
override fun assign(revenantNPC: RevenantNPC) {
taskTimeRemaining[revenantNPC] = RandomFunction.random(MAX_IDLE_TIME)
}
},
RANDOM_ROAM {
private val MAX_ROAM_TICKS: Int = 250
override fun execute(revenantNPC: RevenantNPC) {
if (!canMove(revenantNPC)) return
revenantNPC.pulseManager.run(object : MovementPulse(revenantNPC, getNextLocation(revenantNPC)) {
val nextLoc = getNextLocation(revenantNPC)
revenantNPC.pulseManager.run(object : MovementPulse(revenantNPC, nextLoc, Pathfinder.SMART) {
override fun pulse(): Boolean {
if (taskTimeRemaining[revenantNPC]!! <= 0) currentTask[revenantNPC] = NONE
return true
@@ -139,6 +130,7 @@ class RevenantController : TickListener, Commands {
fun canMove(revenantNPC: RevenantNPC) : Boolean {
return !revenantNPC.walkingQueue.isMoving
&& !revenantNPC.pulseManager.hasPulseRunning()
&& !revenantNPC.properties.combatPulse.isAttacking
&& !revenantNPC.properties.combatPulse.isInCombat
}
@@ -212,7 +204,7 @@ class RevenantController : TickListener, Commands {
RandomFunction.random(-pathVariance, pathVariance),
0
)
revenantNPC.pulseManager.run(object : MovementPulse(revenantNPC, nextLoc) {
revenantNPC.pulseManager.run(object : MovementPulse(revenantNPC, nextLoc, Pathfinder.SMART) {
override fun pulse(): Boolean {
return true
}
@@ -235,4 +227,4 @@ class RevenantController : TickListener, Commands {
abstract fun execute(revenantNPC: RevenantNPC)
open fun assign(revenantNPC: RevenantNPC) {}
}
}
}