Fixed failed sheep shearing movement
This commit is contained in:
committed by
Ryan
parent
dbb8b5a133
commit
af4a316fa1
@@ -7,6 +7,7 @@ import core.game.interaction.InteractionListener
|
||||
import core.game.node.entity.combat.DeathTask
|
||||
import core.game.node.entity.npc.NPC
|
||||
import core.game.node.entity.npc.NPCBehavior
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.system.task.Pulse
|
||||
import core.game.world.GameWorld
|
||||
import core.game.world.update.flag.context.Animation
|
||||
@@ -14,6 +15,8 @@ import core.tools.RandomFunction
|
||||
import org.rs09.consts.Items
|
||||
import org.rs09.consts.NPCs
|
||||
import org.rs09.consts.Sounds
|
||||
import core.game.world.map.Location
|
||||
import core.game.world.map.Direction
|
||||
|
||||
private val sheepIds = intArrayOf(
|
||||
NPCs.SHEEP_42,
|
||||
@@ -76,9 +79,9 @@ class SheepBehavior : NPCBehavior(*sheepIds), InteractionListener {
|
||||
}
|
||||
animate(player, Animation(893))
|
||||
playAudio(player, Sounds.PENGUINSHEEP_ESCAPE_686)
|
||||
sendMessage(player, "The... whatever it is... manages to get away from you!")
|
||||
animate(sheep, Animation(3570))
|
||||
sheep.moveStep()
|
||||
|
||||
sheepBackAway(player, sheep, "The... whatever it is... manages to get away from you!")
|
||||
return@on true
|
||||
}
|
||||
if (!inInventory(player, Items.SHEARS_1735)) {
|
||||
@@ -110,10 +113,26 @@ class SheepBehavior : NPCBehavior(*sheepIds), InteractionListener {
|
||||
}
|
||||
})
|
||||
} else {
|
||||
sendMessage(player, "The sheep manages to get away from you!")
|
||||
sheep.moveStep()
|
||||
sheepBackAway(player, sheep, "The sheep manages to get away from you!")
|
||||
}
|
||||
return@on true
|
||||
}
|
||||
}
|
||||
|
||||
fun sheepBackAway(player: Player, sheep: NPC, messagePlayer: String)
|
||||
{
|
||||
val playerLocation = player.getLocation()
|
||||
val sheepLocation = sheep.getLocation()
|
||||
val sheepDirection = Direction.getDirection(sheepLocation, playerLocation) // Get direction sheep is facing, from the player's location
|
||||
val sheepOppositeDirection = sheepDirection.getOpposite() // Switch to opposite direction
|
||||
|
||||
val xWalkLocation = sheepLocation.getX() + (sheepOppositeDirection.getStepX() * 3) // Gets x location, if set, 3 steps away from player
|
||||
val yWalkLocation = sheepLocation.getY() + (sheepOppositeDirection.getStepY() * 3) // Gets y location, if set, 3 steps away from player
|
||||
val sheepWalkToLocation = Location(xWalkLocation, yWalkLocation, sheepLocation.getZ()); // New location for pathfinding
|
||||
|
||||
sendMessage(player, messagePlayer)
|
||||
|
||||
unlock(sheep) //Force unlock of entity movement, to allow moving away
|
||||
forceWalk(sheep, sheepWalkToLocation, "dumb")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user