|
Been working on our move to 188. 120 or so packets are done now covering most important behaviours - huge round of applause to DaGreenRs for his efforts there.
Added support for the new hitmarks:
I'm working on fixing some bugs with trade and player updating today. Hoping tomorrow I can begin working on pvp combat, which will have many more pretty pictures.
Edit ~17:30 GMT:
Today we've been tackling growing pains which can be attributed to a couple of pre-existing issues within RSMod.
- Improved the RSMod `on_obj_option` API so that it supports multiple instances of the same object with different behaviours. When creating an object option event handler you can optionally provide a tile as part of the event signature which creates a unique handler for that instance.
- Improved zone updating to fix a known persistence issue with stale zones. This example shows ground objects are cleaned up as expected when removing and re-adding zones from a players viewport.Code:on_obj_option(Objs.LADDER_17385, option = "climb-up", tile = Tile(2842, 9824, 0)) { player.climbLadderTo(2842, 3425, 0); } // a second instance, in another place on_obj_option(Objs.LADDER_17385, option = "climb-up", tile = Tile(4321, 1234, 0)) { player.climbLadderTo(2842, 3425, 0); }
We've begun going through the free-to-play overworld area-by-area and populating each with spawns, dialogues and object interactions. It's quite a laborious process but we're making a very conscious effort to populate our world with great attention to detail - meaning every npc and object interaction should behave as you would expect and actions should have their appropriate sound effect.
As a side-effect of my work today every sink, well, fountain and set of drawers in the game now behave properly and items which can hold a substance (bucket, bowl, jug, vial) can be returned to their empty state.
Huge credit to Lantern for most of the work populating areas so far!
Our first area to reach 100% completion is Entrana, here's some media:
I've been working on a tool to automatically generate npc dialogue trees and this afternoon it's done!
Thanks to this tool we've now got ~2300 dialogue trees made up over 14000 lines of dialogue, which apply to ~1200 npcs - and it's not just data: the output of this tool is Kotlin code in RSMod dialogue format, it's awesome!
This is a huge step forward for us and frees up a lot of potential effort that would have otherwise been spent researching, writing and configuring dialogue.
Some example output (this is programmatically generated code):
Code:on_npc_option(npc = Npcs.GULLDAMAR, option = "talk-to") { player.queue { dialogue() } } suspend fun QueueTask.dialogue() { chatNpc("Finest silver in all of Keldagrim, come and see!", animation = 588) when (options("Right, what do you have?", "Not interested, thanks.")) { 1 -> { chatPlayer("Right, what do you have?", animation = 588) chatNpc("Silver, what else!", animation = 588) // TODO: open silver cog silver stall interface } 2 -> { chatPlayer("No thanks.", animation = 588) } }Code:on_npc_option(npc = Npcs.GHOST_BANKER, option = "talk-to") { player.queue { dialogue() } } suspend fun QueueTask.dialogue() { // TODO: (condition) if player has ghostspeak amulet chatNpc("Good day, how may I help you?", animation = 588) when (options("I'd like to access my bank account, please.", "I'd like to check my PIN settings.", "I'd like to collect items.", "What is this place?")) { 1 -> { // TODO: open bank interface } 2 -> { // TODO: open bank pin interface } 3 -> { // TODO: open collection box interface } 4 -> { chatPlayer("What is this place?", animation = 588) chatNpc("This is a branch of the Bank of Gielinor. We have branches in many towns.", animation = 588) chatPlayer("And what do you do?", animation = 588) chatNpc("We will look after your items and money for you. Leave your valuables with us if you want to keep them safe.", animation = 588) } // TODO: (condition) if player does not have ghostspeak amulet chatNpc("Woooo wooo wooooo woooo", animation = 588) // TODO: open bank interface }Code:on_npc_option(npc = Npcs.GOSSIP, option = "talk-to") { player.queue { dialogue() } } suspend fun QueueTask.dialogue() { chatNpc("Well, this has certainly been exciting! The Sinclairs under house arrest, Morgan Le Faye attempting yet again to interfere with King Arthur and Merlin, and even the Black Knights sticking their noses into it.", animation = 588) chatPlayer("How do you know all that? It only just happened, and you weren't there!", animation = 588) chatNpc("I have my sources. No secret is safe as long as I'm around!", animation = 588) }
Great work will be keeeping an eye on this
Looking good boys!
Damn nice job guys, glad to see this progress once again.
Thank-you all; today we've been discussing the alpha date, and we have made a solid plan for the next month/ foreseeable future short term.
The areas in red are populated with NPC's from OSRS; during the Alpha, you will be able to interact and fight these NPC's as well as buy items from their shops.
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |
Tags for this Thread |