Halfpipe Utilities

[Open Assets] Halfpipe Utilities v1.2.2

This update fixes various bugs that came up in the 1.2 and 1.2.1 release.
  • Angle flipping with flipcam enabled should now work properly on all slopes
  • rollangle is no longer constantly reset to 0 when not wallrunning, should allow other rollangle modifying mods to work properly (such as xmomentum)
  • Wall to ceiling transfers should now properly flip (or not flip) the player direction depending on current rolling state
Please let me know of any other bugs you find!

Also, thank you @PencilVoid for helping me playtest, I wouldn't have seen many of these issues without your help, its greatly appreciated!
Added one last little feature as a hotfix of sorts: 3D model support!
You can now give custom animations to the wallrunning state, meaning you can make it look like the player is running on the wall instead of into it. Don't worry if you're using sprites or don't have a animation for it, the previous behavior will be used if it's missing.

To add wallrun support, add a SPR2_WLRN animation to your character. For the vanilla cast, besides Tails, this is just an animation the exact same length as their normal run animation, just rotated 90 degrees. Tails has a few quirks, as you also need to add an empty frame for his tails overlay, being SPR2_TALW and his wallrun animation has 4 frames instead of the expected 2 (tails are included in this animation, instead of the normal TALW frame). Other than that, if desired, this should be relatively easy to implement in your models.

Also, as a little bit of a shameless plug, Kaldrum's 3D Models will include this support at the release of this update. Maybe check it out!


Thank you for using my script!
  • Cool!
Reactions: supermayropros
No actual new features, sorta, but lots of bugfixes and improvements!
  • Wallrunning is way more consistent; far less momentum loss, consistently, and walljumps should be possible at any point in the wallrun process - no more delays for a few frames.
  • Fixed a dumb bug where you had to have some kind of forward movement to strafe on walls. was really annoying on K&M
  • (maybe) resolved issues with camera and movement control when flipping 180 degrees on a ceilingrun:
    • If flipcam is disabled, the same behavior as before is exhibited: the player's inputs are reversed as well as their drawangle, however the actual angle itself is unchanged, leaving the camera facing its original direction
    • if flipcam is enabled, the player's actual angle is flipped when transitioning to ceilingrun, allowing for easier and more maneuverable controls, with the downside of a more jumpy camera
    • please give feedback on this solution if you have any. No flipcam is my intended way for this to be experienced, but I understand most people will still use it, so I want this to be hopefully more accommodating, and easier to control. (like flipcam itself) Rolling behavior remains the same between the two modes.
  • Script now defaults to off on level load, however, can be enabled globally using the console variable "globalhpu on" (off to disable)
  • To enable for a level (which also prevents the physics from being disabled) add "Lua.hpu = active" to a level header
  • Wall texture movement is properly accounted for in wallrun, allowing for temporary increases in speed to wallrunning in any given direction
  • Fixed a major bug in 2d mode which could mess with slope physics drastically
  • Updated the test map to give a 2D mode and wall conveyor showcase. It's nothing major, but it's primarily there to show that the feature exists
  • Animation overhaul, should look much smoother and play at a more reasonable speed
  • Dashmode preservation should work slightly better
  • Tails' tails should display properly
  • Code organization, repetitive stuff was deleted or rearranged. The previously two scripts have been separated into four internally, dealing with Console Variables, Ceilingrun, Wallrun, and Animations (are named accordingly)
  • Probably other stuff
The separate wallrun and ceilingrun files will no longer be available from here on out. They both should be perfectly usable on their own if you were to separate them (and you can use them however you like, this is reusable), however due to the ease of separating them once you download the script on its own, I see no reason to convolute things with two additional downloads.

Hope this update fixes a few lingering issues, it definitely feels much better to mess with from my own testing, I hope anyone that uses this feels the same way. Thanks for using my script!
2D mode support! Wall running, without lateral wall movement, and Ceiling running has been implemented, now you can make loops in both of SRB2's dimensions! (you gotta figure out how to enter and exit though, maybe do it like the classics?)

Ceiling run physics rework: Now, when in the ceiling run state, slopes that increase your z-position (in normal gravity) will slow you down. As well as that, slopes that decrease your z-position will now speed you up. This should make the slope physics make more sense, as running up a ceiling while upside down should no longer have a downwards slope effect. However, to compensate for the immediate speed loss from running uphill when gravity is flipped, the speed required to stay on the ceiling has been greatly lowered, to prevent any extra difficulty in ceiling running.

Finally, one extra feature. A new togglable setting has been added, which can be controlled from within a map header file. Adding "Lua.multiwallrun = active" to a level header SOC will enable, for the level, the ability to jump off of walls and continue running on another. In addition, this will rotate the camera, unlike normal walljumping, in order to make this easier to maneuver. Omitting this custom parameter will change the walljump physics to default, preventing wall run reentry after a jump.


Ceiling Run:
  • Reworked slope physics - while ceiling running, slopes reverse the usual direction of push.
  • Falling threshold speed has been greatly reduced, however the speed required to enter ceiling running is the same.
  • 2D mode support, slope input flipping reverses sideways movement instead of forwards and backwards movement. No axis2d currently.
  • Rolling now gets a slight z-momentum boost when exiting a ceiling, this makes this exit much smoother and maintains more momentum. Reduced when ceiling running is on the floor (reverse gravity), and eliminated in 2D mode.
Wall Run:
  • 2D mode support, no sideways movement when on a wall. No axis2d currently.
  • "multi-wallrun" or walljumping added as toggleable. If enabled in a level through adding the custom parameter, "Lua.multiwallrun = active" to a level header, the player can repeatedly jump from wall to wall until they touch the ground. Normal behavior only allows one jump from a wall and prevents subsequent wall running.
  • Repeat instances of either script will no longer run if loaded multiple times.
  • Cool!
Reactions: Why_bother
Various bugfixes.
Wall Run:
  • Metal Sonic's jet fumes now appear when in the wallrunning state. They currently do not move with the sprite's rollangle (although when using models it looks fine for some reason).
  • Partial fix for losing dashmode when on a wall, will be improved later, but currently allows dashmode to be kept when in the wallrunning state.
  • The wallrolling state should now always be removed when on the ground.
Ceiling Run:
  • Now should be network safe.
Fixes various bugs with both the script as well as the test map geometry.

Wall Run:
  • Both manual and automatic playstyles no longer have issues with falling out of loops, the same direction can be held throughout and the player will not fall off or suddenly change direction.
  • Wall running now reverses inputs with the camera; if running towards the camera, you can continue running that direction to climb the wall instead of instantly descending as it did previously.
  • Cannot run up invisible walls set with the linedef impassible flag.
Ceiling Run:
  • Now able to enter a wall run following a ceiling run, instead of falling.
  • Cleaned up level geometry.
  • The first loop on the right side of the map is now taller, in order to demonstrate wall running out of a ceiling run.