today i drew:

Constant suffix where it makes sense.
Examine texts.
Journal overhaul.
Bowl spawn.
This commit is contained in:
psyopcutie 2026-07-07 18:53:24 +02:00
parent 37b8ff82b9
commit 0734c04745
7 changed files with 149 additions and 134 deletions

View file

@ -457,7 +457,7 @@
},
{
"item_id": "1923",
"loc_data": "{1,3208,3214,0,80}-{1,3140,3452,1,90}-"
"loc_data": "{1,3208,3214,0,80}-{1,2816,3351,1,80}-{1,3140,3452,1,90}-"
},
{
"item_id": "1925",

View file

@ -54831,23 +54831,28 @@
},
{
"id": "5053",
"name": "Assistant Serf"
"name": "Assistant Serf",
"examine": "A helpful assistant."
},
{
"id": "5054",
"name": "Assistant Brock"
"name": "Assistant Brock",
"examine": "A helpful assistant."
},
{
"id": "5055",
"name": "Assistant Marrow"
"name": "Assistant Marrow",
"examine": "A helpful assistant."
},
{
"id": "5056",
"name": "Assistant Le Smith"
"name": "Assistant Le Smith",
"examine": "A helpful assistant."
},
{
"id": "5057",
"name": "Assistant Stan"
"name": "Assistant Stan",
"examine": "A helpful assistant."
},
{
"id": "5058",

View file

@ -38,15 +38,15 @@ import org.rs09.consts.Components
*/
object BalloonCrashSites {
const val CRASH_SITE_REGION = 7244
const val SCENERY_OCEAN_PLANK = 19126
const val SCENERY_WOODLAND_DIRT = 19125
const val CRASH_SITE_REGION_7244 = 7244
const val SCENERY_OCEAN_PLANK_19126 = 19126
const val SCENERY_WOODLAND_DIRT_19125 = 19125
const val NPC_OCEAN_AUGUSTE = 5051
const val NPC_WOODLAND_AUGUSTE = 5052
const val NPC_OCEAN_AUGUSTE_5051 = 5051
const val NPC_WOODLAND_AUGUSTE_5052 = 5052
private const val SOUND_CRASH = 3244
private const val RENDER_ANIMATION_SWIM = 188
private const val SOUND_CRASH_3244 = 3244
private const val RENDER_ANIMATION_SWIM_188 = 188
private val OCEAN_CRASH_LANDING = Location.create(1805, 4889, 0)
private val OCEAN_CRASH_FACE_LOCATION = Location.create(1804, 4889, 0)
@ -78,7 +78,7 @@ object BalloonCrashSites {
}
fun crashAtOceanSite(player: Player) {
playAudio(player, SOUND_CRASH)
playAudio(player, SOUND_CRASH_3244)
fadeTransition(player) {
closeFlightInterface(player)
teleport(player, OCEAN_CRASH_LANDING)
@ -100,7 +100,7 @@ object BalloonCrashSites {
}
fun crashAtWoodlandSite(player: Player, exit: WoodlandExit) {
playAudio(player, SOUND_CRASH)
playAudio(player, SOUND_CRASH_3244)
setAttribute(player, ATTRIBUTE_WOODLAND_EXIT, exit.name)
fadeTransition(player) {
closeFlightInterface(player)
@ -179,7 +179,7 @@ object BalloonCrashSites {
}
private fun oceanSwimmingAnimations(player: Player) {
player.appearance.setAnimations(Animation(RENDER_ANIMATION_SWIM))
player.appearance.setAnimations(Animation(RENDER_ANIMATION_SWIM_188))
player.appearance.sync()
}
@ -187,22 +187,22 @@ object BalloonCrashSites {
class BalloonCrashSiteListener : InteractionListener, MapArea {
override fun defineListeners() {
on(BalloonCrashSites.SCENERY_OCEAN_PLANK, IntType.SCENERY, "use") { player, _ ->
on(BalloonCrashSites.SCENERY_OCEAN_PLANK_19126, IntType.SCENERY, "use") { player, _ ->
BalloonCrashSites.leaveOceanCrashSite(player)
return@on true
}
on(BalloonCrashSites.SCENERY_WOODLAND_DIRT, IntType.SCENERY, "leave") { player, _ ->
on(BalloonCrashSites.SCENERY_WOODLAND_DIRT_19125, IntType.SCENERY, "leave") { player, _ ->
BalloonCrashSites.leaveWoodlandCrashSite(player)
return@on true
}
on(BalloonCrashSites.NPC_OCEAN_AUGUSTE, IntType.NPC, "talk-to") { player, node ->
on(BalloonCrashSites.NPC_OCEAN_AUGUSTE_5051, IntType.NPC, "talk-to") { player, node ->
DialogueLabeller.open(player, BalloonCrashDialogue(), node.asNpc())
return@on true
}
on(BalloonCrashSites.NPC_WOODLAND_AUGUSTE, IntType.NPC, "talk-to") { player, node ->
on(BalloonCrashSites.NPC_WOODLAND_AUGUSTE_5052, IntType.NPC, "talk-to") { player, node ->
DialogueLabeller.open(player, BalloonCrashDialogue(), node.asNpc())
return@on true
}
@ -210,7 +210,7 @@ class BalloonCrashSiteListener : InteractionListener, MapArea {
}
override fun defineAreaBorders(): Array<ZoneBorders> {
return arrayOf(getRegionBorders(BalloonCrashSites.CRASH_SITE_REGION))
return arrayOf(getRegionBorders(BalloonCrashSites.CRASH_SITE_REGION_7244))
}
override fun getRestrictions(): Array<ZoneRestriction> {
@ -220,12 +220,12 @@ class BalloonCrashSiteListener : InteractionListener, MapArea {
class BalloonCrashDialogue : DialogueLabeller() {
override fun addConversation() {
assignToIds(BalloonCrashSites.NPC_OCEAN_AUGUSTE)
assignToIds(BalloonCrashSites.NPC_OCEAN_AUGUSTE_5051)
exec { player, npc ->
when (npc.id) {
BalloonCrashSites.NPC_OCEAN_AUGUSTE -> loadLabel(player, "ocean_crash")
BalloonCrashSites.NPC_WOODLAND_AUGUSTE -> loadLabel(player, "woodland_crash")
BalloonCrashSites.NPC_OCEAN_AUGUSTE_5051 -> loadLabel(player, "ocean_crash")
BalloonCrashSites.NPC_WOODLAND_AUGUSTE_5052 -> loadLabel(player, "woodland_crash")
}
}

View file

@ -51,8 +51,8 @@ private enum class BalloonCrashLocation {
class BalloonFlightInterface : InterfaceListener {
companion object {
private const val BALLOON_FLIGHT_INTERFACE = 470
private const val BALLOON_CONTROL_INTERFACE = 471
private const val BALLOON_FLIGHT_INTERFACE_470 = 470
private const val BALLOON_CONTROL_INTERFACE_471 = 471
private const val ATTRIBUTE_BALLOON_TOP = "enlightenedjourney_balloon_top"
private const val ATTRIBUTE_BALLOON_BOTTOM = "enlightenedjourney_balloon_bottom"
@ -61,17 +61,17 @@ class BalloonFlightInterface : InterfaceListener {
private const val ATTRIBUTE_FLIGHT_SCREEN = "enlightenedjourney_balloon_flight_screen"
private const val ATTRIBUTE_FLIGHT_DESTINATION = "enlightenedjourney_balloon_flight_destination"
private const val SOUND_SANDBAG = 3249
private const val SOUND_BURN_LOG = 3251
private const val SOUND_RELAX = 3247
private const val SOUND_ROPE = 3242
private const val SOUND_RED_ROPE = 3239
private const val SOUND_SANDBAG_3249 = 3249
private const val SOUND_BURN_LOG_3251 = 3251
private const val SOUND_RELAX_3247 = 3247
private const val SOUND_ROPE_3242 = 3242
private const val SOUND_RED_ROPE_3239 = 3239
// cant find source material for using these two:
// zep_construct=3248
// zep_hammering_1=3250
private const val MUSIC_FLOATING_FREE = 206
private const val MUSIC_FLOATING_FREE_206 = 206
private val controlMoves = mapOf(
BalloonFlightRoutes.BUTTON_SANDBAG to BalloonMove(1, -2),
@ -91,8 +91,8 @@ class BalloonFlightInterface : InterfaceListener {
closeInterface(player)
hideGameTabs(player)
hideMinimap(player)
player.musicPlayer.unlock(MUSIC_FLOATING_FREE)
openInterface(player, BALLOON_FLIGHT_INTERFACE)
player.musicPlayer.unlock(MUSIC_FLOATING_FREE_206)
openInterface(player, BALLOON_FLIGHT_INTERFACE_470)
}
/** Post-quest flight from Entrana to a new unlockable destination. */
@ -105,8 +105,8 @@ class BalloonFlightInterface : InterfaceListener {
closeInterface(player)
hideGameTabs(player)
hideMinimap(player)
player.musicPlayer.unlock(MUSIC_FLOATING_FREE)
openInterface(player, BALLOON_FLIGHT_INTERFACE)
player.musicPlayer.unlock(MUSIC_FLOATING_FREE_206)
openInterface(player, BALLOON_FLIGHT_INTERFACE_470)
}
private fun getFlightDestination(player: Player): BalloonTravelLocation {
@ -463,11 +463,11 @@ class BalloonFlightInterface : InterfaceListener {
private fun playControlSound(player: Player, buttonId: Int) {
val sound = when (buttonId) {
BalloonFlightRoutes.BUTTON_SANDBAG -> SOUND_SANDBAG
BalloonFlightRoutes.BUTTON_BURN_LOG -> SOUND_BURN_LOG
BalloonFlightRoutes.BUTTON_RELAX -> SOUND_RELAX
BalloonFlightRoutes.BUTTON_NORMAL_ROPE -> SOUND_ROPE
BalloonFlightRoutes.BUTTON_RED_ROPE -> SOUND_RED_ROPE
BalloonFlightRoutes.BUTTON_SANDBAG -> SOUND_SANDBAG_3249
BalloonFlightRoutes.BUTTON_BURN_LOG -> SOUND_BURN_LOG_3251
BalloonFlightRoutes.BUTTON_RELAX -> SOUND_RELAX_3247
BalloonFlightRoutes.BUTTON_NORMAL_ROPE -> SOUND_ROPE_3242
BalloonFlightRoutes.BUTTON_RED_ROPE -> SOUND_RED_ROPE_3239
else -> return
}
playAudio(player, sound)
@ -503,12 +503,12 @@ class BalloonFlightInterface : InterfaceListener {
}
override fun defineInterfaceListeners() {
onOpen(BALLOON_FLIGHT_INTERFACE) { player, _ ->
onOpen(BALLOON_FLIGHT_INTERFACE_470) { player, _ ->
val destination = getFlightDestination(player)
val screen = getAttribute(player, ATTRIBUTE_FLIGHT_SCREEN, 1)
val startPosition = getScreenPosition(destination, screen)
player.lock()
openSingleTab(player, BALLOON_CONTROL_INTERFACE)
openSingleTab(player, BALLOON_CONTROL_INTERFACE_471)
BalloonFlightScreens.clear(player)
drawFlightScreen(player, destination, screen)
BalloonFlightScreens.drawBalloon(player, startPosition.top, startPosition.bottom)
@ -516,7 +516,7 @@ class BalloonFlightInterface : InterfaceListener {
true
}
onClose(BALLOON_FLIGHT_INTERFACE) { player, _ ->
onClose(BALLOON_FLIGHT_INTERFACE_470) { player, _ ->
BalloonFlightScreens.clear(player)
clearFlightAttributes(player)
closeTabInterface(player)
@ -525,7 +525,7 @@ class BalloonFlightInterface : InterfaceListener {
true
}
on(BALLOON_CONTROL_INTERFACE) { player, _, _, buttonId, _, _ ->
on(BALLOON_CONTROL_INTERFACE_471) { player, _, _, buttonId, _, _ ->
handleRouteButton(player, buttonId)
true
}

View file

@ -9,20 +9,20 @@ import core.game.node.entity.player.Player
*/
object BalloonFlightScreens {
private const val BALLOON_FLIGHT_INTERFACE = 470
private const val BALLOON_FLIGHT_INTERFACE_470 = 470
private const val MODEL_WHITE_BIRD = 19779
private const val MODEL_BROWN_BIRD = 19780
private const val ANIMATION_BIRD = 341
private const val MODEL_CLOUD_ANOMALY = 19781
private const val ANIMATION_CLOUD_ANOMALY = 5141
private const val MODEL_BALLOON_TOP = 19517
private const val MODEL_BALLOON_BOTTOM = 19518
private const val MODEL_WHITE_BIRD_19779 = 19779
private const val MODEL_BROWN_BIRD_19780 = 19780
private const val ANIMATION_BIRD_341 = 341
private const val MODEL_CLOUD_ANOMALY_19781 = 19781
private const val ANIMATION_CLOUD_ANOMALY_5141 = 5141
private const val MODEL_BALLOON_TOP_19517 = 19517
private const val MODEL_BALLOON_BOTTOM_19518 = 19518
/** Clears all model child slots used by the flight interface. */
fun clear(player: Player) {
for (child in 78..237) {
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE, child, 0)
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE_470, child, 0)
}
}
@ -40,25 +40,25 @@ object BalloonFlightScreens {
/** Draws the top and bottom balloon models at the given child slots. */
fun drawBalloon(player: Player, topChild: Int, bottomChild: Int) {
player.packetDispatch.sendModelOnInterface(MODEL_BALLOON_TOP, BALLOON_FLIGHT_INTERFACE, topChild, 2576)
player.packetDispatch.sendModelOnInterface(MODEL_BALLOON_TOP_19517, BALLOON_FLIGHT_INTERFACE_470, topChild, 2576)
resetModelAngle(player, topChild)
player.packetDispatch.sendModelOnInterface(MODEL_BALLOON_BOTTOM, BALLOON_FLIGHT_INTERFACE, bottomChild, 2576)
player.packetDispatch.sendModelOnInterface(MODEL_BALLOON_BOTTOM_19518, BALLOON_FLIGHT_INTERFACE_470, bottomChild, 2576)
resetModelAngle(player, bottomChild)
}
/** Clears the top and bottom balloon models at the given child slots. */
fun clearBalloon(player: Player, topChild: Int, bottomChild: Int) {
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE, topChild, 0)
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE, bottomChild, 0)
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE_470, topChild, 0)
player.packetDispatch.sendModelOnInterface(-1, BALLOON_FLIGHT_INTERFACE_470, bottomChild, 0)
}
private fun resetModelAngle(player: Player, child: Int) {
player.packetDispatch.sendAngleOnInterface(BALLOON_FLIGHT_INTERFACE, child, 2576, 0, 0)
player.packetDispatch.sendAngleOnInterface(BALLOON_FLIGHT_INTERFACE_470, child, 2576, 0, 0)
}
private fun drawModels(player: Player, model: Int, vararg children: Int) {
for (child in children) {
player.packetDispatch.sendModelOnInterface(model, BALLOON_FLIGHT_INTERFACE, child, 2576)
player.packetDispatch.sendModelOnInterface(model, BALLOON_FLIGHT_INTERFACE_470, child, 2576)
resetModelAngle(player, child)
}
}
@ -73,9 +73,9 @@ object BalloonFlightScreens {
vararg children: Int
) {
for (child in children) {
player.packetDispatch.sendModelOnInterface(model, BALLOON_FLIGHT_INTERFACE, child, zoom)
player.packetDispatch.sendAngleOnInterface(BALLOON_FLIGHT_INTERFACE, child, zoom, pitch, yaw)
sendAnimationOnInterface(player, animation, BALLOON_FLIGHT_INTERFACE, child)
player.packetDispatch.sendModelOnInterface(model, BALLOON_FLIGHT_INTERFACE_470, child, zoom)
player.packetDispatch.sendAngleOnInterface(BALLOON_FLIGHT_INTERFACE_470, child, zoom, pitch, yaw)
sendAnimationOnInterface(player, animation, BALLOON_FLIGHT_INTERFACE_470, child)
}
}
@ -120,10 +120,10 @@ object BalloonFlightScreens {
drawModels(player, 19572, 78)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 145, 148, 177, 209)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 145, 148, 177, 209)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 175, 230)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 175, 230)
}
private fun drawTaverleyScreenTwo(player: Player) {
@ -176,7 +176,7 @@ object BalloonFlightScreens {
drawModels(player, 19526, 181, 203, 188)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 161, 179, 185, 204, 219)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 161, 179, 185, 204, 219)
}
private fun drawTaverleyScreenThree(player: Player) {
@ -218,10 +218,10 @@ object BalloonFlightScreens {
drawModels(player, 19526, 171, 176, 214)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 146, 151, 192, 207, 208, 215)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 146, 151, 192, 207, 208, 215)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 191)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 191)
}
private fun drawCraftingGuildScreen(player: Player, screen: Int) {
@ -272,10 +272,10 @@ object BalloonFlightScreens {
drawModels(player, 19631, 91)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 220, 221, 206, 175, 151, 171, 148)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 220, 221, 206, 175, 151, 171, 148)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 183)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 183)
// Clouds
drawModels(player, 19525, 162, 192, 233)
@ -317,10 +317,10 @@ object BalloonFlightScreens {
drawModels(player, 19717, 97)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 161, 187, 216, 217, 171)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 161, 187, 216, 217, 171)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 127, 132, 188)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 127, 132, 188)
}
private fun drawCraftingGuildScreenThree(player: Player) {
@ -356,10 +356,10 @@ object BalloonFlightScreens {
drawModels(player, 19524, 223, 167, 174, 229, 211)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 199, 120, 163, 209)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 199, 120, 163, 209)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 143, 104)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 143, 104)
}
private fun drawVarrockScreen(player: Player, screen: Int) {
@ -404,8 +404,8 @@ object BalloonFlightScreens {
// Birds
drawAnimatedModels(
player,
MODEL_WHITE_BIRD,
ANIMATION_BIRD,
MODEL_WHITE_BIRD_19779,
ANIMATION_BIRD_341,
2567,
100,
300,
@ -428,7 +428,7 @@ object BalloonFlightScreens {
drawModels(player, 19741, 55)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 139, 218, 214, 209, 190, 214, 154)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 139, 218, 214, 209, 190, 214, 154)
// Trees
drawModels(player, 19570, 119, 122, 134, 135, 137)
@ -464,7 +464,7 @@ object BalloonFlightScreens {
drawModels(player, 19754, 149)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 187, 192, 236)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 187, 192, 236)
}
private fun drawVarrockScreenThree(player: Player) {
@ -482,7 +482,7 @@ object BalloonFlightScreens {
drawModels(player, 19519, 81)
// Birds
drawAnimatedModels(player, MODEL_BROWN_BIRD, ANIMATION_BIRD, 2567, 100, 300, 141, 199, 225, 230)
drawAnimatedModels(player, MODEL_BROWN_BIRD_19780, ANIMATION_BIRD_341, 2567, 100, 300, 141, 199, 225, 230)
// Clouds
drawModels(player, 19526, 198, 202)
@ -539,7 +539,7 @@ object BalloonFlightScreens {
drawModels(player, 19526, 229, 183, 166, 170, 214, 177)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 140, 147, 207, 130, 193, 136)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 140, 147, 207, 130, 193, 136)
}
private fun drawCastleWarsScreenTwo(player: Player) {
@ -585,10 +585,10 @@ object BalloonFlightScreens {
drawModels(player, 19526, 142, 159, 181, 191, 205, 217, 231)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 152, 156)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 152, 156)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 118, 197)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 118, 197)
}
private fun drawCastleWarsScreenThree(player: Player) {
@ -626,10 +626,10 @@ object BalloonFlightScreens {
drawModels(player, 19526, 172, 186, 199, 211, 217, 223)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 140, 153, 179)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 140, 153, 179)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 138, 147)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 138, 147)
}
private fun drawGrandTreeScreen(player: Player, screen: Int) {
@ -672,10 +672,10 @@ object BalloonFlightScreens {
drawModels(player, 19526, 188, 195, 203, 232)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 191, 229, 237, 144, 130)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 191, 229, 237, 144, 130)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 214)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 214)
}
private fun drawGrandTreeScreenTwo(player: Player) {
@ -715,10 +715,10 @@ object BalloonFlightScreens {
drawModels(player, 19526, 192, 201, 205, 209, 217)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 219, 183, 154, 196, 197, 149, 150)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 219, 183, 154, 196, 197, 149, 150)
// Cloud anomaly
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY, ANIMATION_CLOUD_ANOMALY, 2567, 0, 300, 181, 220, 224, 228)
drawAnimatedModels(player, MODEL_CLOUD_ANOMALY_19781, ANIMATION_CLOUD_ANOMALY_5141, 2567, 0, 300, 181, 220, 224, 228)
}
private fun drawGrandTreeScreenThree(player: Player) {
@ -808,7 +808,7 @@ object BalloonFlightScreens {
drawModels(player, 19526, 175, 200, 214)
// Birds
drawAnimatedModels(player, MODEL_WHITE_BIRD, ANIMATION_BIRD, 2567, 100, 300, 178, 225)
drawAnimatedModels(player, MODEL_WHITE_BIRD_19779, ANIMATION_BIRD_341, 2567, 100, 300, 178, 225)
}
}

View file

@ -46,11 +46,11 @@ import org.rs09.consts.NPCs
* @author Edith
*/
private const val ASSISTANT_STAN_WRAPPER = 5062
private const val ASSISTANT_MARROW_WRAPPER = 5063
private const val ASSISTANT_LE_SMITH_WRAPPER = 5064
private const val ASSISTANT_BROCK_WRAPPER = 5065
private const val ASSISTANT_SERF_WRAPPER = 5066
private const val ASSISTANT_STAN_WRAPPER_5062 = 5062
private const val ASSISTANT_MARROW_WRAPPER_5063 = 5063
private const val ASSISTANT_LE_SMITH_WRAPPER_5064 = 5064
private const val ASSISTANT_BROCK_WRAPPER_5065 = 5065
private const val ASSISTANT_SERF_WRAPPER_5066 = 5066
private const val VARROCK_MEDIUM_DIARY = 1
@ -77,16 +77,16 @@ private val BALLOON_BASKET_LOCS = intArrayOf(19128, 19129)
class BalloonTravelInterface : InterfaceListener, InteractionListener {
companion object {
private const val BALLOON_MAP_INTERFACE = 469
private const val BALLOON_MAP_MODEL = 12
private const val BALLOON_MAP_INTERFACE_469 = 469
private const val BALLOON_MAP_MODEL_12 = 12
private const val ATTRIBUTE_BALLOON_START = "balloon_travel_start"
/** Opens the balloon map interface. */
fun open(player: Player, start: BalloonTravelLocation) {
setAttribute(player, ATTRIBUTE_BALLOON_START, start)
openInterface(player, BALLOON_MAP_INTERFACE)
setComponentVisibility(player, BALLOON_MAP_INTERFACE, start.mapComponent, false)
openInterface(player, BALLOON_MAP_INTERFACE_469)
setComponentVisibility(player, BALLOON_MAP_INTERFACE_469, start.mapComponent, false)
}
/** Checks the saved route unlock state. */
@ -160,9 +160,9 @@ class BalloonTravelInterface : InterfaceListener, InteractionListener {
val duration = animationDuration(Animation(animation))
lock(player, duration)
setComponentVisibility(player, BALLOON_MAP_INTERFACE, start.mapComponent, true)
setComponentVisibility(player, BALLOON_MAP_INTERFACE, BALLOON_MAP_MODEL, false)
animateInterface(player, BALLOON_MAP_INTERFACE, BALLOON_MAP_MODEL, animation)
setComponentVisibility(player, BALLOON_MAP_INTERFACE_469, start.mapComponent, true)
setComponentVisibility(player, BALLOON_MAP_INTERFACE_469, BALLOON_MAP_MODEL_12, false)
animateInterface(player, BALLOON_MAP_INTERFACE_469, BALLOON_MAP_MODEL_12, animation)
queueScript(player, duration, QueueStrength.SOFT) {
closeInterface(player)
@ -199,7 +199,7 @@ class BalloonTravelInterface : InterfaceListener, InteractionListener {
}
override fun defineInterfaceListeners() {
on(BALLOON_MAP_INTERFACE) { player, _, _, selectId, _, _ ->
on(BALLOON_MAP_INTERFACE_469) { player, _, _, selectId, _, _ ->
val destination = BalloonTravelLocation.fromSelectId(selectId) ?: return@on false
val start = getAttribute(player, ATTRIBUTE_BALLOON_START, BalloonTravelLocation.ENTRANA)
@ -226,6 +226,7 @@ class BalloonTravelInterface : InterfaceListener, InteractionListener {
override fun defineListeners() {
on(BALLOON_VISIBLE_NPCS, IntType.NPC, "fly") { player, node ->
if (!isQuestComplete(player, Quests.ENLIGHTENED_JOURNEY)) {
sendMessage(player, "You should speak to Auguste first.")
return@on true
}
@ -281,7 +282,7 @@ enum class BalloonTravelLocation(
10,
50,
EnlightenedJourney.VARBIT_CASTLEWARS_BALLOON_2869,
ASSISTANT_MARROW_WRAPPER,
ASSISTANT_MARROW_WRAPPER_5063,
19137,
),
GRAND_TREE(
@ -292,7 +293,7 @@ enum class BalloonTravelLocation(
3,
60,
EnlightenedJourney.VARBIT_GRANDTREE_BALLOON_2870,
ASSISTANT_LE_SMITH_WRAPPER,
ASSISTANT_LE_SMITH_WRAPPER_5064,
19139,
),
CRAFTING_GUILD(
@ -303,7 +304,7 @@ enum class BalloonTravelLocation(
10,
30,
EnlightenedJourney.VARBIT_CRAFTINGGUILD_BALLOON_2871,
ASSISTANT_BROCK_WRAPPER,
ASSISTANT_BROCK_WRAPPER_5065,
19141,
),
ENTRANA(
@ -325,7 +326,7 @@ enum class BalloonTravelLocation(
1,
20,
EnlightenedJourney.VARBIT_TAVERLEY_BALLOON_2868,
ASSISTANT_STAN_WRAPPER,
ASSISTANT_STAN_WRAPPER_5062,
19135,
),
VARROCK(
@ -336,7 +337,7 @@ enum class BalloonTravelLocation(
10,
40,
EnlightenedJourney.VARBIT_VARROCK_BALLOON_2872,
ASSISTANT_SERF_WRAPPER,
ASSISTANT_SERF_WRAPPER_5066,
19143,
);

View file

@ -114,57 +114,67 @@ class EnlightenedJourney : Quest(Quests.ENLIGHTENED_JOURNEY, 55, 54, 1, 0,
}
if (stage >= STAGE_QUEST_STARTED) {
line(player, "I have agreed to help Auguste build an !!air balloon??.", line++, stage > STAGE_GATHER_MATERIALS)
line(player, "I have no idea what he's talking about.", line++, stage > STAGE_GATHER_MATERIALS)
line(player, "Auguste thinks if he pumps hot air into a sack it will rise and", line++, stage > STAGE_GATHER_MATERIALS)
line(player, "take us along with it.", line++, stage > STAGE_GATHER_MATERIALS)
line(player, "But we're going to run some tests first. Thank goodness.", line++, stage > STAGE_GATHER_MATERIALS)
line++
line(player, "I have agreed to help Auguste build an !!air balloon??.", line++, stage > STAGE_QUEST_STARTED)
line(player, "I have no idea what he's talking about.", line++, stage > STAGE_QUEST_STARTED)
line(player, "Auguste thinks if he pumps hot air into a sack it will rise and", line++, stage > STAGE_QUEST_STARTED)
line(player, "take us along with it.", line++, stage > STAGE_QUEST_STARTED)
line(player, "But we're going to run some tests first. Thank goodness.", line++, stage > STAGE_QUEST_STARTED)
}
if (stage >= STAGE_GATHER_MATERIALS) {
if (stage in STAGE_GATHER_MATERIALS until STAGE_ORIGAMI_BALLOON) {
line(player, "I need to gather the materials Auguste required:", line++, stage > STAGE_GATHER_MATERIALS)
line(player, "three sheets of papyrus", line++, stage > STAGE_GATHER_MATERIALS || inInventory(player, Items.PAPYRUS_970, 3))
line(player, "a ball of wool", line++, stage > STAGE_GATHER_MATERIALS || inInventory(player, Items.BALL_OF_WOOL_1759))
line(player, "a full sack of potatoes", line++, stage > STAGE_GATHER_MATERIALS || inInventory(player, Items.POTATOES10_5438))
line(player, "one unlit candle.", line++, stage > STAGE_GATHER_MATERIALS || inInventory(player, Items.CANDLE_36))
line++
}
if (stage >= STAGE_ORIGAMI_BALLOON) {
line(player, "I made an !!origami balloon??.", line++, stage > STAGE_ORIGAMI_BALLOON || inInventory(player, Items.ORIGAMI_BALLOON_9934))
line(player, "Auguste said I could make these any time I want if", line++, stage > STAGE_ORIGAMI_BALLOON)
line(player, "I have the materials.", line++, stage > STAGE_ORIGAMI_BALLOON)
line++
line(player, "I gathered all the materials Auguste required:", line++, true)
line(player, "three sheets of papyrus, a ball of wool,", line++, true)
line(player, "a full sack of potatoes and one unlit candle.", line++, true)
}
if (stage in STAGE_ORIGAMI_BALLOON until STAGE_FIRST_EXPERIMENT) {
line(player, "I need to make the first test balloon with the ball of wool,", line++)
line(player, "a sheet of papyrus and an unlit candle and then give it to", line++)
line(player, "Auguste.", line++)
}
if (stage >= STAGE_FIRST_EXPERIMENT) {
line(player, "I made an !!origami balloon??.", line++, true)
line(player, "Auguste said I could make these any time I want if", line++, true)
line(player, "I have the materials.", line++, true)
}
if (stage >= STAGE_FIRST_EXPERIMENT) {
line(player, "Auguste conducted the first experiment.", line++, stage > STAGE_FIRST_EXPERIMENT)
line(player, "There was an awful lot of fire.", line++, stage > STAGE_FIRST_EXPERIMENT)
line++
}
if (stage in STAGE_FIRST_EXPERIMENT until STAGE_SECOND_EXPERIMENT) {
line(player, "I need to give Auguste two sheets of papyrus and a full", line++)
line(player, "sack of potatoes.", line++)
}
if (stage >= STAGE_SECOND_EXPERIMENT) {
line(player, "Auguste conducted the second experiment.", line++, stage > STAGE_SECOND_EXPERIMENT)
line(player, "A flash mob appeared. They seem to have a grudge against", line++, stage > STAGE_SECOND_EXPERIMENT)
line(player, "science.", line++, stage > STAGE_SECOND_EXPERIMENT)
line++
}
if (stage >= STAGE_MAIN_BALLOON) {
line(player, "I need to gather the supplies for Auguste's main balloon:", line++, stage > STAGE_MAIN_BALLOON)
line(player, "red dye", line++, stage > STAGE_MAIN_BALLOON || inInventory(player, Items.RED_DYE_1763))
line(player, "yellow dye", line++, stage > STAGE_MAIN_BALLOON || inInventory(player, Items.YELLOW_DYE_1765))
line(player, "ten pieces of silk", line++, stage > STAGE_MAIN_BALLOON || inInventory(player, Items.SILK_950, 10))
line(player, "a bowl", line++, stage > STAGE_MAIN_BALLOON || inInventory(player, Items.BOWL_1923))
line(player, "eight sandbags", line++, stage > STAGE_MAIN_BALLOON || inInventory(player, Items.SANDBAG_9943, 8))
line++
if (stage in STAGE_MAIN_BALLOON until STAGE_WILLOW_BASKET) {
line(player, "I need to gather the supplies for Auguste's main balloon:", line++)
line(player, "red dye", line++, getAttribute(player, ATTRIBUTE_RED_DYE_DELIVERED, false) || inInventory(player, Items.RED_DYE_1763))
line(player, "yellow dye", line++, getAttribute(player, ATTRIBUTE_YELLOW_DYE_DELIVERED, false) || inInventory(player, Items.YELLOW_DYE_1765))
line(player, "ten pieces of silk", line++, getAttribute(player, ATTRIBUTE_SILK_DELIVERED, false) || inInventory(player, Items.SILK_950, 10))
line(player, "a bowl", line++, getAttribute(player, ATTRIBUTE_BOWL_DELIVERED, false) || inInventory(player, Items.BOWL_1923))
line(player, "eight sandbags", line++, getAttribute(player, ATTRIBUTE_SANDBAGS_DELIVERED, false) || inInventory(player, Items.SANDBAG_9943, 8))
}
if (stage >= STAGE_WILLOW_BASKET) {
line(player, "I need to make the basket for the balloon:", line++, stage > STAGE_WILLOW_BASKET)
line(player, "twelve willow branches", line++, stage > STAGE_WILLOW_BASKET || inInventory(player, Items.WILLOW_BRANCH_5933, 12))
line++
if (stage in STAGE_WILLOW_BASKET until STAGE_FLIGHT) {
line(player, "I've given all the materials to Auguste, now I just need to", line++)
line(player, "use the 12 willow branches to build the basket.", line++)
}
if (stage >= STAGE_FLIGHT) {
@ -172,7 +182,6 @@ class EnlightenedJourney : Quest(Quests.ENLIGHTENED_JOURNEY, 55, 54, 1, 0,
line(player, "balloon.", line++, stage > STAGE_FLIGHT)
line(player, "The balloon is all made and looks impressive!", line++, stage > STAGE_FLIGHT)
line(player, "Let's hope it doesn't end the way the experiments did.", line++, stage > STAGE_FLIGHT)
line++
}
if (stage >= STAGE_CLAIM_REWARD) {