Make penguin spying infallible
This commit is contained in:
+18
-33
@@ -11,13 +11,27 @@ import core.game.world.update.flag.context.Animation
|
|||||||
import core.plugin.Plugin
|
import core.plugin.Plugin
|
||||||
import core.game.content.quest.PluginInteraction
|
import core.game.content.quest.PluginInteraction
|
||||||
import core.game.content.quest.PluginInteractionManager
|
import core.game.content.quest.PluginInteractionManager
|
||||||
|
import rs09.game.interaction.InteractionListener
|
||||||
|
|
||||||
class PenguinSpyingHandler : PluginInteraction(8107,8108,8104,8105,8109,8110){
|
class PenguinSpyingHandler : InteractionListener(){
|
||||||
|
|
||||||
class SpyPulse(val player: Player) : Pulse() {
|
override fun defineListeners() {
|
||||||
|
on(PENGUINS, NPC, "spy-on"){player, node ->
|
||||||
|
val npc = node.asNpc()
|
||||||
|
if(PenguinManager.hasTagged(player, npc.location)){
|
||||||
|
player.sendMessage("You've already tagged this penguin.")
|
||||||
|
} else {
|
||||||
|
GameWorld.submit(SpyPulse(player, npc))
|
||||||
|
}
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val PENGUINS = intArrayOf(8104,8105,8107,8108,8109,8110)
|
||||||
|
|
||||||
|
class SpyPulse(val player: Player, val npc: NPC) : Pulse() {
|
||||||
var stage = 0
|
var stage = 0
|
||||||
val curPoints = player.getAttribute("phns:points",0)
|
val curPoints = player.getAttribute("phns:points",0)
|
||||||
val weeklyPoints = player.getAttribute("phns:weekly",0)
|
|
||||||
|
|
||||||
val ANIMATION = Animation(10355)
|
val ANIMATION = Animation(10355)
|
||||||
|
|
||||||
@@ -26,6 +40,7 @@ class PenguinSpyingHandler : PluginInteraction(8107,8108,8104,8105,8109,8110){
|
|||||||
0 -> player.lock().also { player.animator.animate(ANIMATION) }
|
0 -> player.lock().also { player.animator.animate(ANIMATION) }
|
||||||
1 -> player.sendMessage("You manage to spy on the penguin.").also {
|
1 -> player.sendMessage("You manage to spy on the penguin.").also {
|
||||||
player.setAttribute("/save:phns:points",curPoints + 1)
|
player.setAttribute("/save:phns:points",curPoints + 1)
|
||||||
|
PenguinManager.registerTag(player, npc.location)
|
||||||
player.unlock()
|
player.unlock()
|
||||||
}
|
}
|
||||||
2 -> return true
|
2 -> return true
|
||||||
@@ -33,34 +48,4 @@ class PenguinSpyingHandler : PluginInteraction(8107,8108,8104,8105,8109,8110){
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handle(player: Player?, npc: NPC?, option: Option?): Boolean {
|
|
||||||
class movePulse : MovementPulse(player,DestinationFlag.ENTITY.getDestination(player,npc)){
|
|
||||||
override fun pulse(): Boolean {
|
|
||||||
player.let { player?.face(npc);GameWorld.submit(SpyPulse(player!!)) }
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(option?.name?.toLowerCase()?.equals("spy-on")!!){
|
|
||||||
player ?: return false
|
|
||||||
if(PenguinManager.hasTagged(player, npc!!.location)){
|
|
||||||
player.sendMessage("You've already tagged this penguin.")
|
|
||||||
} else {
|
|
||||||
GameWorld.submit(movePulse())
|
|
||||||
PenguinManager.registerTag(player, npc!!.location)
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun fireEvent(identifier: String?, vararg args: Any?): Any {
|
|
||||||
return Unit
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun newInstance(arg: Any?): Plugin<Any> {
|
|
||||||
PluginInteractionManager.register(this,PluginInteractionManager.InteractionType.NPC)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user