Convert poorly written Fam Crest plugin to Listener

This commit is contained in:
ceikry 2022-01-01 11:27:18 -06:00
parent 1e6ca6b379
commit 2b98e963b9

View file

@ -1,42 +1,32 @@
package plugin.quest.members.familycrest package rs09.game.content.quest.members.familycrest
import core.game.interaction.NodeUsageEvent; import api.*
import core.game.interaction.UseWithHandler; import org.rs09.consts.Items
import core.game.node.entity.npc.NPC import org.rs09.consts.NPCs
import core.game.node.item.Item; import rs09.game.interaction.InteractionListener
import core.plugin.Initializable
import core.plugin.Plugin;
@Initializable class JohnathonAntiPosionInteraction: InteractionListener() {
class JohnathonAntiPosionInteraction: UseWithHandler(175, 177, 179, 2446 ) { override fun defineListeners() {
val poisons = intArrayOf(Items.ANTIPOISON4_2446, Items.ANTIPOISON3_175, Items.ANTIPOISON2_177, Items.ANTIPOISON1_179)
override fun newInstance(arg: Any?): Plugin<Any> { onUseWith(NPC, poisons, NPCs.JOHNATHON_668){player, used, with ->
addHandler(668, NPC_TYPE, this) val npc = with.asNpc()
return this val antip = used.asItem()
} val stage = questStage(player, "Family Crest")
override fun handle(event: NodeUsageEvent?): Boolean { val index = poisons.indexOf(used.id)
if (event != null) { val returnItem = if(index + 1 == poisons.size) Items.VIAL_229 else poisons[index + 1]
val qstage = event.player.questRepository.getQuest("Family Crest").getStage(event.player)
val itemUsed = event.usedItem.id
if(qstage == 17){
event.player.questRepository.getQuest("Family Crest").setStage(event.player, 18)
when(itemUsed){ if(stage == 17 && removeItem(player, antip)){
2446 -> event.player.inventory.remove(Item(2446)).also{event.player.inventory.add(Item(175))} addItem(player, returnItem)
175 -> event.player.inventory.remove(Item(175)).also{event.player.inventory.add(Item(177))} setQuestStage(player, "Family Crest", 18)
177 -> event.player.inventory.remove(Item(177)).also{event.player.inventory.add(Item(179))} openDialogue(player, NPCs.JOHNATHON_668, npc)
179 -> event.player.inventory.remove(Item(179)).also{event.player.inventory.add(Item(229))}
}
event.player.getDialogueInterpreter().open(668, NPC(668))
} else { } else {
event.player.sendMessage("Nothing interesting happened.") sendMessage(player, "Nothing interesting happens.")
}
}
return true;
} }
return@onUseWith true
}
}
} }