addHook("PlayerThink",function(p) if not (p.mo and p.mo.valid and p.charability2 == CA2_SPINDASH) return end if p.uncurldelay and ~p.pflags & PF_SPINNING p.uncurldelay = 0 end if p.pflags & PF_STARTDASH or p.mo.dropcharged p.uncurldelay = 10 elseif p.uncurldelay p.uncurldelay = $-1 elseif p.pflags & PF_SPINNING and ~p.pflags & PF_STARTDASH and ~p.cmd.buttons & BT_SPIN and not p.powers[pw_carry] and not (p.mo.subsector.sector.specialflags & SSF_FORCESPIN) and p.mo.ceilingz - p.mo.floorz >= P_GetPlayerHeight(p) p.pflags = $&~ PF_SPINNING if p.mo.state == S_PLAY_ROLL p.mo.state = S_PLAY_WALK end end end) local lockcurl = function(mo,t) if t.player and t.z <= mo.z + mo.height t.player.uncurldelay = TICRATE end end addHook("MobjCollide",lockcurl,MT_YELLOWBOOSTER) addHook("MobjCollide",lockcurl,MT_REDBOOSTER)