This commit is contained in:
Gary Tierney
2019-08-04 02:00:48 +01:00
parent 12b4bef1f8
commit 8c50d3e091
20 changed files with 284 additions and 122 deletions
+16 -24
View File
@@ -1,38 +1,31 @@
import org.apollo.game.action.DistancedAction
import org.apollo.game.message.impl.NpcActionMessage
import org.apollo.game.message.impl.ObjectActionMessage
import org.apollo.game.model.Position
import org.apollo.game.model.entity.Npc
import org.apollo.game.model.entity.Player
import org.apollo.game.model.inter.bank.BankUtils
import org.apollo.game.plugin.api.Definitions.npcs
import org.apollo.game.plugin.kotlin.message.action.npc.NpcAction
import org.apollo.game.plugin.kotlin.message.action.obj.InteractiveObject
import org.apollo.game.plugin.kotlin.message.action.obj.ObjectAction
import org.apollo.net.message.Message
val BANK_BOOTH_ID = 2213
enum class QuickBankObject(override val id: Int) : InteractiveObject {
BankBooth(2213)
}
/**
* Hook into the [ObjectActionMessage] and listen for when a bank booth's second action ("Open Bank") is selected.
*/
on { ObjectActionMessage::class }
.where { option == 2 && id == BANK_BOOTH_ID }
.then { BankAction.start(this, it, position) }
on(ObjectAction, "Open Bank", objects = QuickBankObject.values()) {
BankAction.start(player, target.position)
}
val bankerNpcs = npcs("(Gnome )?Banker")
/**
* Hook into the [NpcActionMessage] and listen for when a banker's second action ("Open Bank") is selected.
*/
on { NpcActionMessage::class }
.where { option == 2 }
.then {
val npc = it.world.npcRepository[index]
if (npc.id in BANKER_NPCS) {
BankAction.start(this, it, npc.position)
}
}
/**
* The ids of all banker [Npcs][Npc].
*/
val BANKER_NPCS = setOf(166, 494, 495, 496, 497, 498, 499, 1036, 1360, 1702, 2163, 2164, 2354, 2355, 2568, 2569, 2570)
on(NpcAction, "Open Bank", bankerNpcs) {
BankAction.start(player, target.position)
}
/**
* A [DistancedAction] that opens a [Player]'s bank when they get close enough to a booth or banker.
@@ -51,9 +44,8 @@ class BankAction(player: Player, position: Position) : DistancedAction<Player>(0
/**
* Starts a [BankAction] for the specified [Player], terminating the [Message] that triggered.
*/
fun start(message: Message, player: Player, position: Position) {
fun start(player: Player, position: Position) {
player.startAction(BankAction(player, position))
message.terminate()
}
}