mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2026-08-23 03:15:10 -06:00
Cleaned up code and added messages for taking items.
This commit is contained in:
parent
17a31969ac
commit
e740af0750
1 changed files with 41 additions and 49 deletions
|
|
@ -25,8 +25,8 @@ class ItemMachine: InteractionListener {
|
|||
private val TAKE_WORMS = Items.WORMS_10515
|
||||
private val TAKE_CRACKERS = Items.CRACKERS_10513
|
||||
private val TAKE_TOFU = Items.TOFU_10514
|
||||
val baseItems_DEF = intArrayOf(TAKE_WORMS, TAKE_CRACKERS, TAKE_TOFU)
|
||||
val STOCK_UP_DEF = IntArray(11 * baseItems_DEF.size) { i -> baseItems_DEF[i % baseItems_DEF.size] }
|
||||
private val baseItems_DEF = intArrayOf(TAKE_WORMS, TAKE_CRACKERS, TAKE_TOFU)
|
||||
private val STOCK_UP_DEF = IntArray(10 * baseItems_DEF.size) { i -> baseItems_DEF[i % baseItems_DEF.size] }
|
||||
//Healer//
|
||||
private val ALL_HEALER_VAILS = intArrayOf(Items.HEALING_VIAL_10546,Items.HEALING_VIAL1_10545,Items.HEALING_VIAL2_10544,Items.HEALING_VIAL3_10543,Items.HEALING_VIAL4_10542)
|
||||
private val TAKE_VAIL = Items.HEALING_VIAL4_10542
|
||||
|
|
@ -35,115 +35,107 @@ class ItemMachine: InteractionListener {
|
|||
private val TAKE_POIS_MEAT = Items.POISONED_MEAT_10541
|
||||
|
||||
private val baseItems_HEAL = intArrayOf(TAKE_POIS_WORMS, TAKE_POIS_TOFU, TAKE_POIS_MEAT)
|
||||
private val STOCK_UP_HEAL = IntArray(11 * baseItems_HEAL.size) { i -> baseItems_HEAL[i % baseItems_HEAL.size] }
|
||||
private val STOCK_UP_HEAL = IntArray(10 * baseItems_HEAL.size) { i -> baseItems_HEAL[i % baseItems_HEAL.size] }
|
||||
|
||||
override fun defineListeners() {
|
||||
//Attacker//
|
||||
on(Scenery.ATTACKER_ITEM_MACHINE_20241, IntType.SCENERY, "Take-runes") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10556) {
|
||||
handleAddItemMachine(player, node, TAKE_RUNES, 300)
|
||||
sendMessage(player,"You take a selection of runes from the dispenser.")
|
||||
}
|
||||
handleAddItemMachine(player, node,10556, TAKE_RUNES, 300,DispenserType.RUNES)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.ATTACKER_ITEM_MACHINE_20241, IntType.SCENERY, "Take-arrows") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10556) {
|
||||
handleAddItemMachine(player, node, TAKE_ARROWS, 300)
|
||||
sendMessage(player,"You take a selection of arrows from the dispenser.")
|
||||
}
|
||||
handleAddItemMachine(player, node,10556, TAKE_ARROWS, 300,DispenserType.ARROWS)
|
||||
return@on true
|
||||
}
|
||||
//Defender//
|
||||
on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Stock-up") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) {
|
||||
handleAddItemMachine(player, node, STOCK_UP_DEF, 1)
|
||||
}
|
||||
handleAddItemMachine(player, node,10558, STOCK_UP_DEF, 1,DispenserType.FOOD)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-crackers") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_CRACKERS), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10558, intArrayOf(TAKE_CRACKERS), 5,DispenserType.FOOD)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-tofu") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_TOFU), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10558, intArrayOf(TAKE_TOFU), 5,DispenserType.FOOD)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.DEFENDER_ITEM_MACHINE_20242, IntType.SCENERY, "Take-worms") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10558) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_WORMS), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10558, intArrayOf(TAKE_WORMS), 5,DispenserType.FOOD)
|
||||
return@on true
|
||||
}
|
||||
//Healer//
|
||||
on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Stock-up") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) {
|
||||
//todo only allowed to have one vial
|
||||
handleAddItemMachine(player, node, STOCK_UP_HEAL, 1)
|
||||
if (hasAnyVial(player)) {
|
||||
sendMessage(player, "You can only carry one healing vial at a time.")
|
||||
return@on true
|
||||
}
|
||||
handleAddItemMachine(player, node,10559, STOCK_UP_HEAL, 1,DispenserType.POISONED)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-vail") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) {
|
||||
//todo only allowed to have one vial
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_VAIL), 1)
|
||||
if (hasAnyVial(player)) {
|
||||
sendMessage(player, "You can only carry one healing vial at a time.")
|
||||
return@on true
|
||||
}
|
||||
handleAddItemMachine(player, node,10559, intArrayOf(TAKE_VAIL), 1,DispenserType.VAIL)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-worms") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_WORMS), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_WORMS), 5,DispenserType.POISONED)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-tofu") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_TOFU), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_TOFU), 5,DispenserType.POISONED)
|
||||
return@on true
|
||||
}
|
||||
on(Scenery.HEALER_ITEM_MACHINE_20243, IntType.SCENERY, "Take-meat") { player, node ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10559) {
|
||||
handleAddItemMachine(player, node, intArrayOf(TAKE_POIS_MEAT), 5)
|
||||
}
|
||||
handleAddItemMachine(player, node,10559, intArrayOf(TAKE_POIS_MEAT), 5,DispenserType.POISONED)
|
||||
return@on true
|
||||
}
|
||||
//Collector//
|
||||
on(Scenery.COLLECTOR_CONVERTER_21250, IntType.SCENERY, "Convert") { player, _ ->
|
||||
if (getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == 10557) {
|
||||
if (!hasCape(player, 10557)) return@on true
|
||||
|
||||
//Items.RED_EGG_10532
|
||||
//Items.BLUE_EGG_10533
|
||||
//Items.GREEN_EGG_10531
|
||||
//uhhhhhh
|
||||
//more research is needed.
|
||||
}
|
||||
|
||||
return@on true
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun handleAddItemMachine(player: Player,node: Node, items: IntArray, amount: Int)
|
||||
private fun handleAddItemMachine(player: Player,node: Node,capeId: Int, items: IntArray, amount: Int,message: DispenserType = DispenserType.GENERIC)
|
||||
{
|
||||
player.animate(Animation(5419)) // find right animation
|
||||
if (!hasCape(player, capeId)) return
|
||||
player.animate(Animation(5419))
|
||||
player.lock(5)
|
||||
|
||||
GameWorld.Pulser.submit(object : Pulse(3, player) {
|
||||
override fun pulse(): Boolean {
|
||||
//sendMessage(player,"You fill up your inventory with food from the dispenser") //defender
|
||||
//sendMessage(player,"You fill up your inventory with poisoned food from the dispenser")// healer
|
||||
//todo send right message depending on role
|
||||
addArrayOfItems(player,items,amount)
|
||||
sendMessage(player, message.message)
|
||||
player.unlock()
|
||||
return true
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun addArrayOfItems(player: Player, ids: IntArray, amount: Int) {
|
||||
ids.forEach { id -> addItem(player,id,amount) }
|
||||
}
|
||||
|
||||
private fun hasAnyVial(player: Player): Boolean {
|
||||
return ALL_HEALER_VAILS.any { player.inventory.contains(it,1) }
|
||||
}
|
||||
private fun hasCape(player: Player, capeId: Int): Boolean {
|
||||
return getItemFromEquipment(player, EquipmentSlot.CAPE)?.id == capeId
|
||||
}
|
||||
private enum class DispenserType(val message: String) {
|
||||
ARROWS("You take a selection of arrows from the dispenser."),
|
||||
RUNES("You take a selection of runes from the dispenser."),
|
||||
FOOD("You fill up your inventory with food from the dispenser."),
|
||||
POISONED("You fill up your inventory with poisoned food from the dispenser."),
|
||||
VAIL("You take a vial from the dispenser."),
|
||||
GENERIC("You take items from the dispenser.")
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue