Added tablet functionality for lv6 enchanting (onyx)
Fixed enchant tablets consuming the whole stack each use
This commit is contained in:
@@ -0,0 +1,85 @@
|
|||||||
|
package content.global.handlers.item
|
||||||
|
|
||||||
|
import core.api.*
|
||||||
|
import core.game.interaction.IntType
|
||||||
|
import core.game.interaction.InteractionListener
|
||||||
|
import core.game.interaction.QueueStrength
|
||||||
|
import core.game.node.entity.player.link.audio.Audio
|
||||||
|
import org.rs09.consts.Items
|
||||||
|
|
||||||
|
class EnchantJewelleryTabListener : InteractionListener {
|
||||||
|
|
||||||
|
private val LVL_1_ENCHANT = mapOf(
|
||||||
|
Items.SAPPHIRE_RING_1637 to Items.RING_OF_RECOIL_2550,
|
||||||
|
Items.SAPPHIRE_NECKLACE_1656 to Items.GAMES_NECKLACE8_3853,
|
||||||
|
Items.SAPPHIRE_AMULET_1694 to Items.AMULET_OF_MAGIC_1727,
|
||||||
|
Items.SAPPHIRE_BRACELET_11072 to Items.BRACELET_OF_CLAY_11074
|
||||||
|
)
|
||||||
|
private val LVL_2_ENCHANT = mapOf(
|
||||||
|
Items.EMERALD_RING_1639 to Items.RING_OF_DUELLING8_2552,
|
||||||
|
Items.EMERALD_NECKLACE_1658 to Items.BINDING_NECKLACE_5521,
|
||||||
|
Items.EMERALD_AMULET_1696 to Items.AMULET_OF_DEFENCE_1729,
|
||||||
|
Items.EMERALD_BRACELET_11076 to Items.CASTLEWAR_BRACE3_11079
|
||||||
|
)
|
||||||
|
|
||||||
|
private val LVL_3_ENCHANT = mapOf(
|
||||||
|
Items.RUBY_RING_1641 to Items.RING_OF_FORGING_2568,
|
||||||
|
Items.RUBY_NECKLACE_1660 to Items.DIGSITE_PENDANT_5_11194,
|
||||||
|
Items.RUBY_AMULET_1698 to Items.AMULET_OF_STRENGTH_1725,
|
||||||
|
Items.RUBY_BRACELET_11085 to Items.INOCULATION_BRACE_11088
|
||||||
|
)
|
||||||
|
|
||||||
|
private val LVL_4_ENCHANT = mapOf(
|
||||||
|
Items.DIAMOND_RING_1643 to Items.RING_OF_LIFE_2570,
|
||||||
|
Items.DIAMOND_NECKLACE_1662 to Items.PHOENIX_NECKLACE_11090,
|
||||||
|
Items.DIAMOND_AMULET_1700 to Items.AMULET_OF_POWER_1731,
|
||||||
|
Items.DIAMOND_BRACELET_11092 to Items.FORINTHRY_BRACE5_11095
|
||||||
|
)
|
||||||
|
|
||||||
|
private val LVL_5_ENCHANT = mapOf(
|
||||||
|
Items.DRAGONSTONE_RING_1645 to Items.RING_OF_WEALTH4_14646,
|
||||||
|
Items.DRAGON_NECKLACE_1664 to Items.SKILLS_NECKLACE4_11105,
|
||||||
|
Items.DRAGONSTONE_AMMY_1702 to Items.AMULET_OF_GLORY4_1712,
|
||||||
|
Items.DRAGON_BRACELET_11115 to Items.COMBAT_BRACELET4_11118
|
||||||
|
)
|
||||||
|
|
||||||
|
private val LVL_6_ENCHANT = mapOf(
|
||||||
|
Items.ONYX_RING_6575 to Items.RING_OF_STONE_6583,
|
||||||
|
Items.ONYX_NECKLACE_6577 to Items.BERSERKER_NECKLACE_11128,
|
||||||
|
Items.ONYX_AMULET_6581 to Items.AMULET_OF_FURY_6585,
|
||||||
|
Items.ONYX_BRACELET_11130 to Items.REGEN_BRACELET_11133
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun defineListeners() {
|
||||||
|
on(IntType.ITEM, "break") {player, node ->
|
||||||
|
delayEntity(player, 1)
|
||||||
|
queueScript(player, strength = QueueStrength.SOFT) {
|
||||||
|
|
||||||
|
val items = when (node.id) {
|
||||||
|
8016 -> LVL_1_ENCHANT //Sapphire
|
||||||
|
8017 -> LVL_2_ENCHANT
|
||||||
|
8018 -> LVL_3_ENCHANT
|
||||||
|
8019 -> LVL_4_ENCHANT
|
||||||
|
8020 -> LVL_5_ENCHANT
|
||||||
|
8021 -> LVL_6_ENCHANT
|
||||||
|
else -> return@queueScript stopExecuting(player)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inInventory(player, node.id)) {
|
||||||
|
for (item in player.inventory.toArray()) {
|
||||||
|
if (item == null) continue
|
||||||
|
val product = items[item.id] ?: continue
|
||||||
|
if (removeItem(player, node.id) && (removeItem(player, item.id))) {
|
||||||
|
addItem(player, product)
|
||||||
|
playAudio(player, Audio(979), false)
|
||||||
|
animate(player, 4069, true)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return@queueScript stopExecuting(player)
|
||||||
|
}
|
||||||
|
return@on true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
package content.global.handlers.item
|
|
||||||
|
|
||||||
import core.api.log
|
|
||||||
import core.cache.def.impl.ItemDefinition
|
|
||||||
import core.game.interaction.OptionHandler
|
|
||||||
import core.game.node.Node
|
|
||||||
import core.game.node.entity.player.Player
|
|
||||||
import core.game.node.item.Item
|
|
||||||
import core.game.world.update.flag.context.Animation
|
|
||||||
import core.plugin.Initializable
|
|
||||||
import core.plugin.Plugin
|
|
||||||
import core.tools.Log
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import org.rs09.consts.Items
|
|
||||||
import core.tools.SystemLogger
|
|
||||||
|
|
||||||
private val LVL_1_ENCHANT = mapOf(
|
|
||||||
Items.SAPPHIRE_RING_1637 to Item(Items.RING_OF_RECOIL_2550),
|
|
||||||
Items.SAPPHIRE_NECKLACE_1656 to Item(Items.GAMES_NECKLACE8_3853),
|
|
||||||
Items.SAPPHIRE_AMULET_1694 to Item(Items.AMULET_OF_MAGIC_1727),
|
|
||||||
Items.SAPPHIRE_BRACELET_11072 to Item(Items.BRACELET_OF_CLAY_11074)
|
|
||||||
)
|
|
||||||
private val LVL_2_ENCHANT = mapOf(
|
|
||||||
Items.EMERALD_RING_1639 to Item(Items.RING_OF_DUELLING8_2552),
|
|
||||||
Items.EMERALD_NECKLACE_1658 to Item(Items.BINDING_NECKLACE_5521),
|
|
||||||
Items.EMERALD_AMULET_1696 to Item(Items.AMULET_OF_DEFENCE_1729),
|
|
||||||
Items.EMERALD_BRACELET_11076 to Item(Items.CASTLEWAR_BRACE3_11079)
|
|
||||||
)
|
|
||||||
|
|
||||||
private val LVL_3_ENCHANT = mapOf(
|
|
||||||
Items.RUBY_RING_1641 to Item(Items.RING_OF_FORGING_2568),
|
|
||||||
Items.RUBY_NECKLACE_1660 to Item(Items.DIGSITE_PENDANT_5_11194),
|
|
||||||
Items.RUBY_AMULET_1698 to Item(Items.AMULET_OF_STRENGTH_1725),
|
|
||||||
Items.RUBY_BRACELET_11085 to Item(Items.INOCULATION_BRACE_11088)
|
|
||||||
)
|
|
||||||
|
|
||||||
private val LVL_4_ENCHANT = mapOf(
|
|
||||||
Items.DIAMOND_RING_1643 to Item(Items.RING_OF_LIFE_2570),
|
|
||||||
Items.DIAMOND_NECKLACE_1662 to Item(Items.PHOENIX_NECKLACE_11090),
|
|
||||||
Items.DIAMOND_AMULET_1700 to Item(Items.AMULET_OF_POWER_1731),
|
|
||||||
Items.DIAMOND_BRACELET_11092 to Item(Items.FORINTHRY_BRACE5_11095)
|
|
||||||
)
|
|
||||||
|
|
||||||
private val LVL_5_ENCHANT = mapOf(
|
|
||||||
Items.DRAGONSTONE_RING_1645 to Item(14646),
|
|
||||||
Items.DRAGON_NECKLACE_1664 to Item(Items.SKILLS_NECKLACE4_11105),
|
|
||||||
Items.DRAGONSTONE_AMMY_1702 to Item(Items.AMULET_OF_GLORY4_1712),
|
|
||||||
Items.DRAGON_BRACELET_11115 to Item(Items.COMBAT_BRACELET4_11118)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@Initializable
|
|
||||||
class EnchantJewelleryTabOption : OptionHandler(){
|
|
||||||
override fun handle(player: Player?, node: Node?, option: String?): Boolean {
|
|
||||||
player ?: return false
|
|
||||||
|
|
||||||
val items = when(node?.id){
|
|
||||||
8016 -> LVL_1_ENCHANT //Sapphire
|
|
||||||
8017 -> LVL_2_ENCHANT
|
|
||||||
8018 -> LVL_3_ENCHANT
|
|
||||||
8019 -> LVL_4_ENCHANT
|
|
||||||
8020 -> LVL_5_ENCHANT
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
|
|
||||||
if(items == null){
|
|
||||||
log(this::class.java, Log.WARN, "UNHANDLED ENCHANT ITEM TABLET [ID: ${node?.id}")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
player.audioManager.send(979)
|
|
||||||
player.animator.forceAnimation(Animation(4069))
|
|
||||||
|
|
||||||
GlobalScope.launch {
|
|
||||||
for(item in player.inventory.toArray()){
|
|
||||||
item ?: continue
|
|
||||||
if(items.containsKey(item.id)){
|
|
||||||
val product = items[item.id]
|
|
||||||
player.inventory.remove(item)
|
|
||||||
player.inventory.remove(node as Item)
|
|
||||||
player.inventory.add(product)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun newInstance(arg: Any?): Plugin<Any> {
|
|
||||||
ItemDefinition.forId(8016).handlers["option:break"] = this
|
|
||||||
ItemDefinition.forId(8017).handlers["option:break"] = this
|
|
||||||
ItemDefinition.forId(8018).handlers["option:break"] = this
|
|
||||||
ItemDefinition.forId(8019).handlers["option:break"] = this
|
|
||||||
ItemDefinition.forId(8020).handlers["option:break"] = this
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user