From 7860d8a27f8969de12e44c7e787aa50c6e30253b Mon Sep 17 00:00:00 2001 From: aidan Date: Wed, 21 Jan 2026 07:54:06 -0600 Subject: [PATCH] structure --- .../quest/elementalworkshop2/BeatenBook.kt | 4 + .../quest/elementalworkshop2/EW2Listeners.kt | 33 ++++++++ .../elementalworkshop2/ElementalWorkshop2.kt | 77 +++++++++++++++++++ .../JunctionBoxInterface.kt | 4 + 4 files changed, 118 insertions(+) create mode 100644 Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/BeatenBook.kt create mode 100644 Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/EW2Listeners.kt create mode 100644 Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/ElementalWorkshop2.kt create mode 100644 Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/JunctionBoxInterface.kt diff --git a/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/BeatenBook.kt b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/BeatenBook.kt new file mode 100644 index 000000000..481d92f11 --- /dev/null +++ b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/BeatenBook.kt @@ -0,0 +1,4 @@ +package content.region.kandarin.seers.quest.elementalworkshop2 + +class BeatenBook { +} \ No newline at end of file diff --git a/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/EW2Listeners.kt b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/EW2Listeners.kt new file mode 100644 index 000000000..866cf47aa --- /dev/null +++ b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/EW2Listeners.kt @@ -0,0 +1,33 @@ +package content.region.kandarin.seers.quest.elementalworkshop2 + +import content.data.Quests +import content.region.kandarin.seers.quest.elementalworkshop2.ElementalWorkshop2.Companion.EW2Varbit +import core.api.* +import core.game.interaction.IntType +import core.game.interaction.InteractionListener +import core.game.node.entity.skill.Skills +import org.rs09.consts.* + +class EW2Listeners : InteractionListener { + + override fun defineListeners() { + + // Bookcase at digsite where you start quest. + on(Scenery.BOOKCASE_17382, IntType.SCENERY, "search") { player, _ -> + if (isQuestComplete(player, Quests.ELEMENTAL_WORKSHOP_I) && + !inInventory(player, Items.BEATEN_BOOK_9717) && + hasLevelStat(player, Skills.MAGIC, 20) && + hasLevelStat(player, Skills.SMITHING, 30) + ) { + sendItemDialogue(player, Items.BEATEN_BOOK_9717, "You find an old-looking book.") + addItemOrDrop(player, Items.BEATEN_BOOK_9717) + //setQuestStage(player, Quests.ELEMENTAL_WORKSHOP_II, 1) + setVarbit(player, EW2Varbit, 1, true) + } else { + sendMessage(player, "You search the books...") + sendMessage(player, "You find nothing of interest.") + } + return@on true + } + } +} \ No newline at end of file diff --git a/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/ElementalWorkshop2.kt b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/ElementalWorkshop2.kt new file mode 100644 index 000000000..5a37ce5b9 --- /dev/null +++ b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/ElementalWorkshop2.kt @@ -0,0 +1,77 @@ +package content.region.kandarin.seers.quest.elementalworkshop2 + +import content.data.Quests +import core.api.* +import core.game.node.entity.player.Player +import core.game.node.entity.player.link.quest.Quest +import core.game.node.entity.skill.Skills +import org.rs09.consts.* + +/** + * ELEMENTAL WORKSHOP II QUEST + * + * Requirements: 20 Magic, 30 Smithing, completion of Elemental Workshop I + * Primary Sources: https://www.youtube.com/watch?v=YKSWisRgGZk, https://www.youtube.com/watch?v=xoDkqRhus4Y + */ + +class ElementalWorkshop2 : Quest(Quests.ELEMENTAL_WORKSHOP_II, 53, 52, 1, EW2Varbit, 0, 1, 11) { + + companion object { + const val EW2Varbit = 2639 + } + + /** + * Quest Stages and Varp values: + * https://chisel.weirdgloop.org/varbs/display?varbit=2639 + * + * val stage desc. + * 0 0 unstarted + * 1 1 found book + * 2 2 read book + * 3 3 + * 4 4 + * 5 5 + * 6 6 + * 7 7 + * 8 8 + * 9 9 + * 10 10 + * 11 100 quest complete + */ + override fun drawJournal(player: Player, stage: Int) { + super.drawJournal(player, stage) + var line = 12 + var stage = getStage(player) + + var started = getQuestStage(player, Quests.ELEMENTAL_WORKSHOP_II) > 0 + + // journal here + } + + override fun reset(player: Player?) { + super.reset(player) + } + + override fun finish(player: Player) { + var ln = 10 + super.finish(player) + player.packetDispatch.sendString("You have completed the Elemental Workshop II quest!", 277, 4) + player.packetDispatch.sendItemZoomOnInterface(Items.ELEMENTAL_HELMET_9729, 230, 277, 5) + + drawReward(player, "1 Quest Point", ln++) + drawReward(player, "7,500 Smithing XP,", ln++) + drawReward(player, "7,500 Crafting XP,", ln++) + drawReward(player, "Ability to make and equip", ln++) + drawReward(player, "elemental mind equipment", ln) + + setVarbit(player, EW2Varbit, 11, true) + rewardXP(player, Skills.SMITHING, 7500.0) + rewardXP(player, Skills.CRAFTING, 7500.0) + + // remove attributes + } + + override fun newInstance(`object`: Any?): Quest { + return this + } +} \ No newline at end of file diff --git a/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/JunctionBoxInterface.kt b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/JunctionBoxInterface.kt new file mode 100644 index 000000000..bb6916ba1 --- /dev/null +++ b/Server/src/main/content/region/kandarin/seers/quest/elementalworkshop2/JunctionBoxInterface.kt @@ -0,0 +1,4 @@ +package content.region.kandarin.seers.quest.elementalworkshop2 + +class JunctionBoxInterface { +} \ No newline at end of file