//NOTE: this script is really bad lol, its my first so be mean and critique me >:( -- CREDITS: -- Starlight (SA1 Spindash Script) -- Kirb (Discord help) -- Ninja Kirby (Inflictor and target help) -- Kbm (me!!!) -- if i forgot credits hit me up -- Spindash: addHook("SpinSpecial", function(p) if p.mo.skin == "sonic" if p.spectator then return end if (p.speed > 5*FRACUNIT and p.pflags & PF_STARTDASH) then return true end p.mindash = 50*FRACUNIT p.maxdash = 75*FRACUNIT if P_IsObjectOnGround(p.mo) and p.mo.state == S_PLAY_STND or p.mo.state == S_PLAY_SKID and p.charability2 == CA2_SPINDASH and not (p.pflags & (PF_USEDOWN|PF_SPINNING)) then p.cmomx = 5 * cos(p.mo.angle) p.cmomy = 5 * sin(p.mo.angle) p.mo.cmomx = p.cmomx p.mo.cmomy = p.cmomy p.dashspeed = p.mindash p.mo.state = S_PLAY_SPINDASH p.speed = 20*FRACUNIT p.pflags = $ | (PF_USEDOWN|PF_STARTDASH|PF_SPINNING) S_StartSound(p.mo, sfx_spndsh) return true end if P_IsObjectOnGround(p.mo) and p.mo.state == S_PLAY_ROLL and (p.cmd.buttons & BT_JUMP) and p.charability2 == CA2_SPINDASH then p.cmomx = 5 * cos(p.mo.angle) p.cmomy = 5 * sin(p.mo.angle) p.mo.cmomx = p.cmomx p.mo.cmomy = p.cmomy p.dashspeed = p.mindash p.mo.state = S_PLAY_SPINDASH p.speed = 20*FRACUNIT p.pflags = $ | (PF_USEDOWN|PF_STARTDASH|PF_SPINNING) S_StartSound(p.mo, sfx_spndsh) return true end end end) addHook("JumpSpecial", function(p) -- spindash check if (p.pflags & PF_STARTDASH) return true end end) addHook("PlayerThink", function(p) if (p.pflags & PF_STARTDASH) or p.mo.state == S_PLAY_SPINDASH then p.mo.friction = 59392 -- done for 6-line momentum compats return true end end) -- Ability Saver/ Roll-lock Remover (im proud i did this by myself) addHook("PlayerThink", function(player) if P_IsObjectOnGround(player.mo) ~= true then if (player.pflags & PF_SPINNING) then player.pflags = $ & ~PF_SPINNING player.mo.state = S_PLAY_JUMP player.pflags = $|PF_JUMPED end end end) addHook("JumpSpecial", function(player) if player.mo.skin == "sonic" if P_IsObjectOnGround(player.mo) ~= true then if player.mo.state ~= S_PLAY_JUMP then player.pflags = $|PF_JUMPED return false end end end end) -- Thok addHook("AbilitySpecial", function(player) if player.mo.skin == "sonic" and not (player.pflags & PF_JUMPDOWN) and not (player.pflags & PF_THOKKED) and player.speed < 70*FRACUNIT P_InstaThrust(player.mo, player.mo.angle, 55*FRACUNIT) P_SetObjectMomZ(player.mo, 8*FRACUNIT) player.mo.state = S_PLAY_ROLL player.pflags = $|PF_THOKKED S_StartSound(player.mo, sfx_thok) P_SpawnThokMobj(player) return true elseif player.mo.skin == "sonic" and not (player.pflags & PF_JUMPDOWN) and not (player.pflags & PF_THOKKED) and player.speed >= 70*FRACUNIT P_InstaThrust(player.mo, player.mo.angle, player.speed + 1*FRACUNIT) P_SetObjectMomZ(player.mo, 10*FRACUNIT) player.mo.state = S_PLAY_ROLL player.pflags = $|PF_THOKKED S_StartSound(player.mo, sfx_thok) S_StartSound(player.mo, sfx_zoom) P_SpawnThokMobj(player) P_SpawnGhostMobj(player.mo) return true end end) -- Speed Attack addHook("MobjThinker", function(sonic) if (sonic and sonic.skin) =="sonic" if sonic.speedattack == nil if P_IsObjectOnGround(sonic) ~= true and not (sonic.player.cmd.buttons & BT_CUSTOM2) sonic.speedattack = 0 //create variable end end end if P_IsObjectOnGround(sonic) ~= true and (sonic.player.cmd.buttons & BT_CUSTOM2) sonic.speedattack = 1 end if sonic.skin =="sonic" and sonic.speedattack == 1 if sonic.state == S_PLAY_JUMP or sonic.state == S_PLAY_ROLL if P_IsObjectOnGround(sonic) ~= true if (sonic.player.cmd.buttons & BT_CUSTOM2) if sonic.player.speed < 70*FRACUNIT P_SetObjectMomZ(sonic, -25*FRACUNIT) P_InstaThrust(sonic, sonic.angle, 55*FRACUNIT) sonic.state = S_PLAY_FALL sonic.player.pflags = $|PF_JUMPED sonic.player.pflags = $|PF_THOKKED P_SpawnThokMobj(sonic.player) S_StartSound(sonic, sfx_turhit) else P_SetObjectMomZ(sonic, -25*FRACUNIT) P_InstaThrust(sonic, sonic.angle, sonic.player.speed - 10) sonic.state = S_PLAY_FALL sonic.player.pflags = $|PF_JUMPED sonic.player.pflags = $|PF_THOKKED P_SpawnThokMobj(sonic.player) S_StartSound(sonic, sfx_turhit) end end end end end end) addHook("MobjDamage", function(target, inflictor) if not (inflictor and inflictor.valid and inflictor.player and target and target.valid and target.flags & (MF_ENEMY | MF_MONITOR)) then return end if inflictor.player.pflags & PF_THOKKED and inflictor.momz > 0 then inflictor.player.pflags = $ & ~PF_THOKKED inflictor.state = S_PLAY_SPRING end end) addHook("PlayerThink", function(player) if player.speed >= 70*FRACUNIT P_SpawnGhostMobj(player.mo) end end)