-- gotta go faster -- local TOPSPEED = 100*FRACUNIT -- Cap speed for dashmode. local RUNTIME = 20*FRACUNIT -- How long do you have to run for to activate dashmode. local DEFNORMALSPEED = 39*FRACUNIT -- Put your default normal speed here. local OVERRIDESPEED = 60*FRACUNIT -- Automaticly activates dashmode at a certain speed. local MAXJUMPHIGHT = 1*FRACUNIT -- Maximum jump power when in dashmode. local SKIN = "sonic" -- Your character skin name goes here. local function ResetVars(player) player.runtime = 0 player.normalspeed = DEFNORMALSPEED player.fakenormalspeed = DEFNORMALSPEED player.jumpfactor = 1*FRACUNIT player.maxspeedentersound = false end addHook("PlayerThink", function(player) if player.mo.skin == SKIN then if player.fakenormalspeed == nil then player.fakenormalspeed = DEFNORMALSPEED return end if player.fakenormalspeed < TOPSPEED and player.speeddash == true and player.isxmomentum player.fakenormalspeed = $1 + 1*FRACUNIT/5 end if player.normalspeed < TOPSPEED and player.speeddash == true and not player.isxmomentum player.normalspeed = $1 + 1*FRACUNIT/5 end if player.jumpfactor < MAXJUMPHIGHT and player.speeddash == true player.jumpfactor = $1 + 1*FRACUNIT/100 end if player.speed > 27*FRACUNIT and not (leveltime % 5) if player.runtime == nil then player.runtime = 0 return true end player.runtime = $ + 1*FRACUNIT end if player.speed < 25*FRACUNIT and P_IsObjectOnGround(player.mo) or P_PlayerInPain(player) if player.speeddash == true then S_StartSound(player.mo, sfx_kc65) player.speeddash = false end ResetVars(player) end if player.speeddash == true local ghost = P_SpawnGhostMobj(player.mo) ghost.fuse = 2 player.charflags = $1|SF_RUNONWATER else player.charflags = $1 & ~SF_RUNONWATER end if player.speeddash == true and P_IsObjectOnGround(player.mo) then P_SpawnSkidDust(player, 13*FRACUNIT, sfx_none) end if P_IsObjectOnGround(player.mo) and player.runtime >= (RUNTIME/2) then P_SpawnSkidDust(player, 13*FRACUNIT, sfx_none) end if player.speed >= 70*FRACUNIT and player.speeddash == true and P_IsObjectOnGround(player.mo) then P_SpawnSkidDust(player, 13*FRACUNIT, sfx_none) P_SpawnSkidDust(player, 13*FRACUNIT, sfx_none) P_SpawnSkidDust(player, 13*FRACUNIT, sfx_none) end local skin = skins[player.mo.skin] if player.speed >= 60*FRACUNIT then player.camerascale = skin.camerascale*5/4 elseif player.speed >= 80*FRACUNIT then player.camerascale = skin.camerascale*9/8 else player.camerascale = skin.camerascale end end end) addHook("PlayerThink", function(player) if player.mo.skin == SKIN then if player.runtime == nil then player.runtime = 0 return true end if not player.speeddash == true and player.runtime >= RUNTIME and P_IsObjectOnGround(player.mo) S_StartSound(player.mo, sfx_s3ka2) player.speeddash = true if not player.xmomentum player.normalspeed = player.speed else player.fakenormalspeed = player.speed end end end end) addHook("PlayerThink", function(player) if player.mo.skin == SKIN then if player.runtime == nil then player.runtime = 0 return true end if player.speed >= OVERRIDESPEED and player.speeddash == false S_StartSound(player.mo, sfx_s3ka2) player.speeddash = true if not player.xmomentum player.normalspeed = player.speed else player.fakenormalspeed = player.speed end end end end)