Skip to content

Conversation

@Standing-Storm
Copy link
Contributor

@Standing-Storm Standing-Storm commented Oct 23, 2025

Summary

Mods "[Sky Island] Missions take place in alternate dimensions"

Purpose of change

Sky Island save bloating or visiting places you've already been has been a problem for a while.

No more.

Describe the solution

Use dimensional infrastructure to create a mission dimension. Blind the player (and any NPCs) and teleport them to the mission dimension, where they'll now be floating on Z level 7 (hence blinding). Run the mission search EoCs (now a much lower radius, since each dimension is new) and then teleport the player and any NPCs to the mission target location.

On mission end, do the opposite. Blind the player and teleport to Z level 7, then shift dimensions back to default. After that, return to Sky Island and delete the mission dimension.

Drafted because this makes it impossible to bring the room with you (there is no way to shift items across dimension) and also because it crashes the game if you try to use it with NPCs

Describe alternatives you've considered

Testing

Everything works when you go alone.

It segfaults if you bring NPCs.

Additional context

@Standing-Storm Standing-Storm marked this pull request as draft October 23, 2025 16:57
@RenechCDDA
Copy link
Member

This has been a longstanding aim, so I think it's a good idea to try.

My principle concern is that it's going to cause each mission to take a lot longer to generate, as each one needs to generate a new dimension from scratch.

But we'll see if that's actually a problem in practice.

@Standing-Storm
Copy link
Contributor Author

From my tests it actually takes a lot less time to generate. I presume this is because I drastically lowered the mission search range, from 1400 to 200, since there's no need to try to avoid previously-explored areas anymore

@github-actions github-actions bot added Mods Issues related to mods or modding [JSON] Changes (can be) made in JSON Mods: Sky Island Anything about the Sky Island mod labels Oct 23, 2025
@Consoleable
Copy link
Contributor

Yay!!! Very exciting!

This potentially opens the door to mission modifiers that affect regions, like weather effects for the duration of that mission, or changing terrain gen. The possibilities are very cool.

Also smaller save files.

@github-actions github-actions bot added astyled astyled PR, label is assigned by github actions json-styled JSON lint passed, label assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Oct 23, 2025
@Light-Wave
Copy link
Contributor

If there is an easy way to check which dimension you are in, we might be able to use that instead of the awayfromhome trait.

@Standing-Storm
Copy link
Contributor Author

Standing-Storm commented Oct 24, 2025

Update: Using what ehughsbaird found in #83454 (turning off the compass bypasses the crash), I've been able to test the EoC. I can successfully transport the NPC across dimensions, but for some reason trying to teleport them to the mission spot just banishes them. And even weirder, they're back on the island when I go back there.

Interrupting the warp EoC (stopping the teleport to the mission spot but after jumping dimensions) does show that the NPC comes with me to the mission dimension, so I don't know why they're not coming on the mission or how they're getting home.

Edit:

Followers tab on the mission:

image

Edit edit: Recorded the whole process but it's 20 MB so github won't let me upload it.

@Light-Wave
Copy link
Contributor

After switching dimensions, do the NPCs stay around you if you pass some time and don't teleport away?

@Standing-Storm
Copy link
Contributor Author

Yes, they do show up in the new dimension:
image

(floating in the air since we dimension-shifted from Z level 7 on the island)

@Light-Wave
Copy link
Contributor

And they stay with you if you pass a turn?

@Standing-Storm
Copy link
Contributor Author

Yes:

Sky.Island.In.Air.mp4

@Standing-Storm
Copy link
Contributor Author

If I go into EOC_initiate_randomport and leave in the part where NPCs teleport but remove the part where the avatar teleports, the NPC disappears, so the teleport is firing. I just have no idea where they're going. Both teleport EoCs target exactly the same spot ( { "global_val": "OM_missionspot" } )

@Standing-Storm
Copy link
Contributor Author

Okay, further checking shows that EOC_initiate_randomport_npc_follower isn't working. Interrupting EOC_Field_Loc_Warp so it never runs EOC_initiate_randomport and then running EOC_initiate_randomport_npc_follower manually does nothing--the NPC stays right next to me and doesn't teleport.

If I run EOC_initiate_randomport manually the avatar does teleport to the mission spot, and the mission spot is selected in EOC_Field_Loc_Warp, so the problem isn't that it can't find a location.

I wonder if it's something to do with your followers not being properly transferred across dimensions? When I interrupt the teleport the follower menu shows that I have no followers (as above) but if I talk to the NPC next to me I still get follower dialogue.

@sacredsky
Copy link

It's great to see new features and additions to the Sky Island! Thanks for your work.
I'm just curious, will generating a mission on a higher z-level prevent the player from entering the basement or a very high building? Is it possible we do this on the ground z-level?

@github-actions
Copy link
Contributor

Hi @sacredsky, welcome to CleverRaven! We see that this is your first time commenting here. Check out how development works and be sure to follow the code of conduct! We hope to see you around!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Mods: Sky Island Anything about the Sky Island mod Mods Issues related to mods or modding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants