[Open Assets] ExitMove v1.6 - Post-exit playability

This content may be freely modified and/or maintained by anyone.

Tatsuru

2.3 will have menus
Moderator
Sonic Team Junior
Changelog:
v1.6.3
- Update to keep up with the newest version of Utility.
- WARP command revamped: you can now choose the Star Post to warp to before warping.

Older versions
v1.6.2
- Fixed a framerate drop occurring for finished players.

v1.6.1
- Utility compatibility issues resolved (again) (again).
- WARP command now can be used with On/Off arguments by the admin to enable or disable warping for everyone in the server.
- Fixed players with high latency spawning goal orbs at the beginning of a level.
- Fixed wrong reference by a function called when getting hurt after finishing a level.
- Other minor quality of life issues.

v1.6
- Goal orb design changed. Now colored, translucent small goal orbs spin around the player.
- Monitor breaking toggle for finished players was removed.
- Exit system revamped to prevent players getting stuck.
- Warping delay of 1 second added to prevent spamming.
- Utility compatibility issues resolved (again).
- Exposed ExitMove to foreign scripts for custom effects.
- Added FREEZE command.

v1.5
- Gametype checks added to every function to avoid activation on NiGHTS mode (big thanks to whoever did it!)
- Fixed players being permanently unable to move when finishing (hopefully, since I'm not entirely sure of what caused it).
- Added "One" option to CUSTOMEXIT for problematic levels like AGZ3.
- Finished players can no longer break monitors by default for balance reasons (togglable anyway).
- Invincibility monitors now working properly for finished players (thanks Kitoko!)
- Adjusted goal icon offset for Pointy Sonic so it doesn't cover his emoji.
- Utility compatibility issues resolved.

v1.4
- Custom HUD removed. The script no longer conflicts with custom HUD modifications, non-green video modes or the centiseconds display.

v1.3.1
- Fixed an issue with the underwater timer.

v1.3
- Added semi-invulnerability to finished players. They are now unable to lose rings or lives, and are impervious to drowning and suffocating in bodies of water and outerspace sections.
- Fixed exit sector detection on FOFs (specially problematic in AGZ3 and PAZ).
- Fixed goal icon offset for Metal Sonic.


v1.2
- Added support to Utility's AFK function. Refer to the Known Issues for more information.
- Added the command WARP, which lets you teleport to previous Star Posts once you have finished the level.
- Tweaked REMAINING so it only shows players who can finish the level (non-game-overed or non-AFK ones).
- Fixed goal icon offsets for Eggman (Eggpack) and Knuckles.


v1.1
- Fixed compatibility with Mystic Realm. Mystic Temple stages can now be accessed regardless of the activating player.
- End Signs now spin properly when the first player finishes the level.
- Slight code changes to make it more lightweight in netgames.
- Fixed level finish messages being duplicated.

Pre-v1.0
- Major code change and optimization to fix compatibility with some scripted effects.
- Added the command CUSTOMEXIT.
- Fixed an issue where joining during a paused server with the script or adding the script while in a stage would spam the console with a warning.
- Fixed an issue where the lights wouldn't follow the player appropriately after completing 1 or more levels.
- Fixed lights disappearing permanently when a finished player dies.
- Fixed certain sector effects like Zoom Tubes not working.
This is a very simple yet very requested feature in most Coop servers. The script allows you to play normally around the map after you've finished the level and do whatever you could do while you haven't yet: collect rings, items and kill and be hurt by enemies. You can also warp between Star Posts so you don't get stuck at the end of levels that are a point of no return.

Available commands:
REMAINING: Shows a list of players who haven't finished the level yet.
CUSTOMEXIT <One / Half / 3/4 / All>: Sets how many players are needed to finish the level.
WARP: Without arguments, lets the player view Star Posts in a cyclic fashion, given that the player has finished the level, and warp to them. It can be coupled with arguments <On/Off> by an admin to enable or disable warping for the whole server.
FREEZE: When this is on, levels will not end regardless of how many players have finished, allowing players to stay on a level indefinitely. Useful for hangouts. Disabled by default. Note that this only disables ExitMove's counter and does not prevent levels from being finished through other means (Egg Capsules, bosses or other scripts).
Notes:
- ERZ3 has a rather orthodox method of "ending" a level (it seemingly teleports players to an exit sector if they lose the race against Metal Sonic to restart it) so there's no guarantee this script will work 100% correctly there.
- exitmove can be used in Lua scripts for checking the presence of ExitMove in the game. The respective boolean finished in player structures indicates whether the player has finished the level or not.
Special thanks to Hino, Chicmunk, LightSpeedAngel and all Sonic Mania Plus goers who helped me test this to death ☆
 

Attachments

  • srb20064.gif
    srb20064.gif
    567.9 KB · Views: 654
  • srb20089.gif
    srb20089.gif
    1.1 MB · Views: 1,812
  • exitmove1.6.lua
    16.6 KB · Views: 540
Last edited:
it's one of those things I never knew I wanted, but now that we have it I am very happy. This should be a staple on co-op servers.
 
I'm terribly sorry for having to update the file so soon, but I've just fixed a problem with the goal lights. The script shouldn't have any glaring problems right now, but please tell me if you find something!
 
Update!

I really hope no mods target me for this double post, but I have a slightly major update to announce. ExitMove now works with Mystic Realm!

Here is the full list of changes.
v1.1
- Fixed compatibility with Mystic Realm. Mystic Temple stages can now be accessed regardless of the activating player.
- End Signs now spin properly when the first player finishes the level.
- Slight code changes to make the script more lightweight in netgames.
- Fixed level finish messages being duplicated.

Please report any new glitches or inconveniences!
 
Last edited:
Update! v1.2

New day, new update! This time, I'm bringing in a new command to enhance the script experience and adding the so-asked for compatibility with Utility.

v1.2
- Added support to Utility's AFK function. Refer to the Known Issues for more information.
- Added the command WARP, which lets you teleport to previous Star Posts once you have finished the level.
- Tweaked REMAINING so it only shows players who can finish the level (non-game-overed or non-AFK ones).
- Fixed goal icon offsets for Eggman (Eggpack) and Knuckles.

I appreciate any feedback, bug reports and ideas to improve the script. Enjoy!
 
Last edited:
Update! v1.3

Here we come with another requested update. Have fun ~

v1.3
- Added semi-invulnerability to finished players. They are now unable to lose rings or lives, and are impervious to drowning and suffocating in bodies of water and outerspace sections.
- Fixed exit sector detection on FOFs (specially problematic in AGZ3 and PAZ).
- Fixed goal icon offset for Metal Sonic.
 
Last edited:
Small bugfix!

Bringing a small bugfix. While there are other glitches, they aren't very gameplay disrupting and since their nature is hardcoded they're not priority as of now.

v1.3.1
- Fixed an issue with the underwater timer.
 
Last edited:
WARNING: ./DOWNLOAD/exitmove.lua line:296: bad argument #1 to 'P_TeleportMove' (MOBJ_T* expected, got number)



So this happened in a MP server when the host finished. The goal orb never appeared for the host and every other one stopped following us and stood still. No new ones ever appeared after that.



A level reset resets that behaviour (works fine until the host finishes).


Also, the (custom timer HUD?) has some issues with certain resolutions and permanently disables things like the centiseconds indication of the timerrres variable.


Resolution issues example here:
srb20000.png



EDIT: Also, no idea why, but the time loops back to 0:00 after every hour.
 
Last edited:
WARNING: ./DOWNLOAD/exitmove.lua line:296: bad argument #1 to 'P_TeleportMove' (MOBJ_T* expected, got number)

So this happened in a MP server when the host finished. The goal orb never appeared for the host and every other one stopped following us and stood still. No new ones ever appeared after that.

A level reset resets that behaviour (works fine until the host finishes).

Do you have access to the files the host used in that server? This isn't a glitch I've noticed in most file combinations so I imagine a different one might be triggering this behavior (the only instances where P_TeleportMove is called have only the light mobj as an argument, so it's a little strange that it got a number in the first place).

Also, the (custom timer HUD?) has some issues with certain resolutions and permanently disables things like the centiseconds indication of the timerrres variable.

Resolution issues example here: <image>

EDIT: Also, no idea why, but the time loops back to 0:00 after every hour.

Those issues are related. ExitMove uses a custom timer to properly stop HUD time for finished players and thus has to use different variables, since the variable that measures time is the same that lets players move around.

About the 1 hour issue, that might be related to the function used to convert minutes into seconds, and although I think it should display everything properly, I'll take another look at the code again. I am going to try including a centisseconds display and accurate positioning for non-green resolutions, well... As soon as I figure out how.
 
Update! v1.4

Due to requests, the custom HUD has been removed (with a much more effective solution, actually. I've got to apologize for not thinking of it before) so you don't get ugly time counting with your mods. Here it is!

v1.4
- Custom HUD removed. The script no longer conflicts with custom HUD modifications, non-green video modes or the centiseconds display.
 
Last edited:
Update! v1.5

Sorry for the hiatus! I have been out of the community for a short while but still cracking my head about how to fix the last version's main glitch. Here's what got changed this time.

v1.5
- Gametype checks added to every function to avoid activation on NiGHTS mode (big thanks to whoever did it!)
- Fixed players being permanently unable to move when finishing (hopefully, since I'm not entirely sure of what caused it).
- Added "One" option to CUSTOMEXIT for problematic levels like AGZ3.
- Finished players can no longer break monitors by default for balance reasons (togglable anyway).
- Invincibility monitors now working properly for finished players (thanks Kitoko!)
- Adjusted goal icon offset for Pointy Sonic so it doesn't cover his emoji.
- Utility compatibility issues resolved.

Please report to me here on in either Discord community servers if any new issues appear.
 
Last edited:
<Gregory_House> but a new one came out
<aplayer> yeah because the new one has some really bad bugs
<aplayer> like touching a monitor after finishing can cause mass synch bombs
<aplayer> or not being able to move right as a level starts


Regarding this lua, apparently.
 
To be fair SRB2's exiting code is way too unbugding and this script is a mere hack that can only do so much. Listening to people's impressions on the previous version when I came back, they didn't seem to be bothered that much by the bugs (and even made their own fixes in the meantime that I was out!) and since investigating the causes of the new bugs might not be worth the effort for now because I'm out of ideas, I may just leave this script unsupported for a while. I'll make sure to keep both versions available.
 
First of all, I'd like to apologize for leaving you guys with crappy versions of this script for so long, and thank you for your patience. It's been difficult to muster the motivation to fix it all for good (added to the fact I didn't know Lua better than I do now) but I'm finally proud to present this version and I hope you all have fun with it, since I intend it to be the last update to ExitMove before 2.2, save for potential critical glitches.

If you got the file from one of my testing servers, be sure to get it again, since your file is already outdated. Please read the changelog to check what's new and don't hesitate to report to me here or through the Discord server if you find any issues!

hdFOXHkF_o.gif
 
Last edited:
*sigh* All right.
The last version had a few stupid glitches too (but it's not like you all weren't expecting it) most by lack of testing on my end and due to how many of these glitches would only happen with many different people playing at once.

This version was intensely tested by the Sonic Mania Plus server folks, so they can guarantee as much as me this one does fix 99% of whatever plagued ExitMove until now.

Changelog:
- Utility compatibility issues resolved (again) (again).
- WARP command now can be used with On/Off arguments by the admin to enable or disable warping for everyone in the server.
- Fixed players with high latency spawning goal orbs at the beginning of a level.
- Fixed wrong reference by a function called when getting hurt after finishing a level.
- Other minor quality of life issues.
 
Last edited:
Small patch to fix a slowdown occurring for finished players after a long playtime. Once again big thanks to the SMP folks!
 

Attachments

  • exitmove.lua
    14.3 KB · Views: 202
Okay, I said I planned 1.6 to be the last update to this, but now that Utility is under new management and got a new update I took the cue. Besides a few compatibility tweaks, the WARP command has been revamped: now you can view Star Posts in the level and where they are before teleporting to them.

attachment.php


The new file is also named differently: exitmove1.6.lua. This is so you don't get your version overwritten with older ones when joining other people's servers and make sure everyone gets the right one when joining your server. Please for the love of god get your new versions I beg you

Anyway, this is it for 2.1's ExitMove. Be sure to grab your new version of Utility here and see you later!
 

Attachments

  • exitmove1.6.lua
    16.6 KB · Views: 234

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top