diff --git a/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/DeathPlateauInteractionListener.kt b/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/DeathPlateauInteractionListener.kt index 01a253ad4..fd59d4697 100644 --- a/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/DeathPlateauInteractionListener.kt +++ b/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/DeathPlateauInteractionListener.kt @@ -1,11 +1,13 @@ package content.region.asgarnia.burthorpe.quest.deathplateau import content.data.Quests +import content.global.handlers.iface.ScrollInterface import core.api.* import core.game.global.action.DoorActionHandler import core.game.interaction.IntType import core.game.interaction.InteractionListener import core.game.node.item.GroundItemManager +import org.rs09.consts.Components import org.rs09.consts.Items import org.rs09.consts.Scenery @@ -23,6 +25,11 @@ class DeathPlateauInteractionListener : InteractionListener { Scenery.STONE_MECHANISM_3676, // 4 Outer stone plates Scenery.STONE_MECHANISM_3677 // 2 Inner stone plates ) + val combinationScroll = arrayOf( + "Red is North of Blue. Yellow is South of Purple.", + "Green is North of Purple. Blue is West of", + "Yellow. Purple is East of Red." + ) } override fun defineListeners() { on(Scenery.DOOR_3747, SCENERY, "open") { player, node -> @@ -48,10 +55,10 @@ class DeathPlateauInteractionListener : InteractionListener { } on(Items.COMBINATION_3102, ITEM, "read") { player, _ -> - openInterface(player, 220) - setInterfaceText(player, "Red is North of Blue. Yellow is South of Purple.", 220, 7) - setInterfaceText(player, "Green is North of Purple. Blue is West of", 220, 8) - setInterfaceText(player, "Yellow. Purple is East of Red.", 220, 9) + // https://youtu.be/C8n8Yi-J8wU?t=466 + openInterface(player, 222) + setInterfaceText(player, combinationScroll.joinToString("
"), 222, 5) + return@on true } diff --git a/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/IOUNoteDialogueFile.kt b/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/IOUNoteDialogueFile.kt index 4a4531422..29978f609 100644 --- a/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/IOUNoteDialogueFile.kt +++ b/Server/src/main/content/region/asgarnia/burthorpe/quest/deathplateau/IOUNoteDialogueFile.kt @@ -4,6 +4,9 @@ import content.data.Quests import core.api.* import core.game.dialogue.DialogueFile import core.game.dialogue.FacialExpression +import core.game.interaction.IntType +import core.game.interaction.InteractionListeners +import core.game.node.item.Item import core.tools.END_DIALOGUE import org.rs09.consts.Items @@ -26,10 +29,7 @@ class IOUNoteDialogueFile : DialogueFile() { 4 -> { end() stage = END_DIALOGUE - openInterface(player!!, 220) - setInterfaceText(player!!, "Red is North of Blue. Yellow is South of Purple.", 220, 7) - setInterfaceText(player!!, "Green is North of Purple. Blue is West of", 220, 8) - setInterfaceText(player!!, "Yellow. Purple is East of Red.", 220, 9) + InteractionListeners.run(Items.COMBINATION_3102, IntType.ITEM, "read", player!!, Item(Items.COMBINATION_3102)) } } } diff --git a/Server/src/main/content/region/asgarnia/mudskipperpoint/MudSkipperPointListeners.kt b/Server/src/main/content/region/asgarnia/mudskipperpoint/MudSkipperPointListeners.kt index eed56b4bf..6d31ea26b 100644 --- a/Server/src/main/content/region/asgarnia/mudskipperpoint/MudSkipperPointListeners.kt +++ b/Server/src/main/content/region/asgarnia/mudskipperpoint/MudSkipperPointListeners.kt @@ -14,6 +14,7 @@ import core.game.world.update.flag.context.Animation import core.game.world.update.flag.context.Graphics import core.plugin.Initializable import core.tools.RandomFunction +import core.tools.colorize import org.rs09.consts.Items import org.rs09.consts.NPCs import org.rs09.consts.Scenery @@ -119,9 +120,8 @@ class MudSkipperPointListeners : InteractionListener { } on(Scenery.SIGNPOST_10090, IntType.SCENERY, "read") { player, _ -> - setInterfaceText(player, "Mudskipper Point.", 220, 2) - setInterfaceText(player, "WARNING! BEWARE OF THE MUDSKIPPERS!", 220, 4) - openInterface(player, 220) + // https://runescape.wiki/w/Mudskipper_Point?oldid=969991 + sendDialogue(player, colorize("%RBEWARE OF THE MUDSKIPPERS!")) return@on true } diff --git a/Server/src/main/content/region/desert/quest/thegolem/TheGolemDialogue.kt b/Server/src/main/content/region/desert/quest/thegolem/TheGolemDialogue.kt index c1331e614..19af2735d 100644 --- a/Server/src/main/content/region/desert/quest/thegolem/TheGolemDialogue.kt +++ b/Server/src/main/content/region/desert/quest/thegolem/TheGolemDialogue.kt @@ -9,6 +9,7 @@ import org.rs09.consts.NPCs import core.game.dialogue.DialogueBuilder import core.game.dialogue.DialogueBuilderFile import content.data.Quests +import content.global.handlers.iface.ScrollLine @Initializable public final class ClayGolemDialoguePlugin(player: Player? = null) : DialoguePlugin(player) { @@ -107,19 +108,18 @@ class CuratorHaigHalenGolemDialogue : DialogueBuilderFile() { } } +// https://youtu.be/owPSLUB9E8k?t=261 val LETTER_LINES = arrayOf( - "", - "", - "Dearest Varmen,", - "I hope this finds you well. Here are the books you asked for", - "There has been an exciting development closer to home --", - "another city from the same period has been discovered east", - "of Varrock, and we are starting a huge excavation project", - "here. I don't know if the museum will be able to finance your", - "expedition as well as this one, so I fear your current trip will be", - "the last.", - "May Saradomin grant you a safe journey home", - "Your loving Elissa.", + ScrollLine("Dearest Varmen,", 3), + ScrollLine("I hope this finds you well. Here are the books you asked for", 4), + ScrollLine("There has been an exciting development closer to home --", 5), + ScrollLine("another city from the same period has been discovered east", 6), + ScrollLine("of Varrock, and we are starting a huge excavation project", 7), + ScrollLine("here. I don't know if the museum will be able to finance your", 8), + ScrollLine("expedition as well as this one, so I fear your current trip will be", 9), + ScrollLine("the last.", 10), + ScrollLine("May Saradomin grant you a safe journey home", 11), + ScrollLine("Your loving Elissa.", 12) ) val DISPLAY_CASE_TEXT = arrayOf("3rd age - yr 3000-4000", diff --git a/Server/src/main/content/region/desert/quest/thegolem/TheGolemQuest.kt b/Server/src/main/content/region/desert/quest/thegolem/TheGolemQuest.kt index 89d485f91..4d637b890 100644 --- a/Server/src/main/content/region/desert/quest/thegolem/TheGolemQuest.kt +++ b/Server/src/main/content/region/desert/quest/thegolem/TheGolemQuest.kt @@ -20,6 +20,8 @@ import core.game.interaction.InteractionListener import core.game.interaction.InterfaceListener import core.game.world.GameWorld import content.data.Quests +import content.global.handlers.iface.ScrollInterface +import org.rs09.consts.Components @Initializable class TheGolemQuest : Quest(Quests.THE_GOLEM, 70, 69, 1, 437, 0, 1, 10) { @@ -112,19 +114,6 @@ class ClayGolemNPC : AbstractNPC { } } -class LetterListener : InterfaceListener { - override fun defineInterfaceListeners() { - onOpen(220) { player, component -> - val lines: Array = player.getAttribute("ifaces:220:lines", arrayOf()) - for(i in 0 until Math.min(lines.size, 15)) { - setInterfaceText(player, lines[i], 220, i+1) - //setInterfaceText(player, "${i}", 220, i+1) - } - return@onOpen true - } - } -} - class DisplayCaseListener : InterfaceListener { override fun defineInterfaceListeners() { onOpen(534) { player, component -> @@ -372,9 +361,8 @@ class TheGolemListeners : InteractionListener { on(34978, IntType.SCENERY, "climb-down") { player, node -> core.game.global.action.ClimbActionHandler.climb(player, core.game.global.action.ClimbActionHandler.CLIMB_DOWN, core.game.global.action.SpecialLadders.getDestination(node.location)); return@on true } on(6372, IntType.SCENERY, "climb-up") { player, node -> core.game.global.action.ClimbActionHandler.climb(player, core.game.global.action.ClimbActionHandler.CLIMB_UP, core.game.global.action.SpecialLadders.getDestination(node.location)); return@on true } on(4615, IntType.ITEM, "read") { player, node -> - player.setAttribute("ifaces:220:lines", LETTER_LINES) player.setAttribute("/save:the-golem:read-elissa-letter", true) - openInterface(player, 220) + ScrollInterface.scrollSetup(player, Components.MESSAGESCROLL_220, LETTER_LINES) return@on true } on(35226, IntType.SCENERY, "search") { player, node -> diff --git a/Server/src/main/content/region/kandarin/ardougne/quest/plaguecity/PlagueCityListeners.kt b/Server/src/main/content/region/kandarin/ardougne/quest/plaguecity/PlagueCityListeners.kt index 0c8ef60a0..9c5866a59 100644 --- a/Server/src/main/content/region/kandarin/ardougne/quest/plaguecity/PlagueCityListeners.kt +++ b/Server/src/main/content/region/kandarin/ardougne/quest/plaguecity/PlagueCityListeners.kt @@ -406,16 +406,17 @@ class PlagueCityListeners : InteractionListener { } } + // https://youtu.be/AG81LH51WME?t=302 private fun scruffyNote(player: Player) { val scruffynotes = arrayOf( "Got a bncket of nnilk", - "Tlen grind sorne lhoculate", + "Tlen qrind sorne lhoculate", "vnith a pestal and rnortar", "ald the grourd dlocolate to tho milt", - "finales add 5cme snape gras5", + "fnales add 5cme snape gras5", ) - setInterfaceText(player, scruffynotes.joinToString("
"), 222, 5) + setInterfaceText(player, scruffynotes.joinToString("
"), 222, 4) } override fun defineDestinationOverrides() { diff --git a/Server/src/main/content/region/kandarin/quest/grandtree/GrandTreeListeners.kt b/Server/src/main/content/region/kandarin/quest/grandtree/GrandTreeListeners.kt index 8548efe96..a0dd8b258 100644 --- a/Server/src/main/content/region/kandarin/quest/grandtree/GrandTreeListeners.kt +++ b/Server/src/main/content/region/kandarin/quest/grandtree/GrandTreeListeners.kt @@ -15,6 +15,9 @@ import org.rs09.consts.Items import org.rs09.consts.NPCs import org.rs09.consts.Sounds import content.data.Quests +import content.global.handlers.iface.ScrollInterface +import content.global.handlers.iface.ScrollLine +import org.rs09.consts.Components class GrandTreeListeners: InteractionListener { @@ -26,12 +29,11 @@ class GrandTreeListeners: InteractionListener { Location(2473,9897,0), ) - val hazelmerescroll = Items.HAZELMERES_SCROLL_786 - - val hazelmerescrollText = arrayOf( - "Es lemanto meso pro eis prit ta Cinqo mond.", - "Mi lovos ta lemanto Daconia arpos", - "et Daconia arpos eto meriz ta priw!", + // https://youtu.be/-jfueZpRhzU?t=184 + val hazelmereScrollText = arrayOf( + ScrollLine("Es lemanto meso pro eis prit ta Cinqo mond.", 6), + ScrollLine("Mi lovos ta lemanto Daconia arpos", 7), + ScrollLine("et Daconia arpos eto meriz ta priw!", 8) ) fun unlockTUZODoor(player: Player) { @@ -84,8 +86,8 @@ class GrandTreeListeners: InteractionListener { openDialogue(player, AnitaDialogue(), npc) return@on true } - on(hazelmerescroll, IntType.ITEM, "read") { player, node -> - hazelmereScroll(player, node.asItem()) + on(Items.HAZELMERES_SCROLL_786, IntType.ITEM, "read") { player, node -> + ScrollInterface.scrollSetup(player, Components.MESSAGESCROLL_220, hazelmereScrollText) return@on true } @@ -209,14 +211,5 @@ class GrandTreeListeners: InteractionListener { return@on true } } - - private fun hazelmereScroll(player: Player, item: Item) { - val id = item.id - openInterface(player, 222).also { - when (id) { - hazelmerescroll -> setInterfaceText(player, hazelmerescrollText.joinToString("
"), 222, 6) - } - } - } }