--if you are using this in a mod, don't mind giving credits, use this as you wish :3 --btw the code is extra messy and i don't want to risk to edit it --some stuff is commented out so i can use them in a possible future update --in some of this stuff i was helped, by cool people like Golden, Amperbee, CloneFighter and Speccy, they are not part of the project but i wanted to let you aknowledge their importance in this --also thanks to youngod for letting me know about destscale addHook("PlayerThink", function(player) if player.mo.state == S_PLAY_DEAD and player.mo.momz < 1 player.mo.state = S_PLAY_DRWN end end) addHook("PlayerThink", function(player) if player.speed > skins[player.realmo.skin].normalspeed - 2*FRACUNIT if player.mo.skin == "adventuresonic" then return end --chad adventure sonic already has momentum if player.speed < 150*player.mo.scale --speed cap because you could noclip to the backrooms if you go 2 fest player.mo.friction = FRACUNIT end if (not player.cmd.buttons) and (player.cmd.forwardmove == 0) and (player.cmd.sidemove == 0) --thanks speccy player.mo.friction = 59392 end end if player.mo.skin ~= "adventuresonic" and not (player.pflags & PF_JUMPED) and player.cmd.buttons & BT_USE and player.charability2 == CA2_SPINDASH and (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_SKID) and not P_IsObjectOnGround(player.mo) player.pflags = $ | PF_JUMPED player.mo.state = S_PLAY_ROLL S_StartSound(player.mo, sfx_zoom, player) P_SpawnThokMobj(player) end if (player.charability == CA_TWINSPIN and player.charability2 == CA2_MELEE) and (player.mo.state == S_PLAY_FALL or player.mo.state == S_PLAY_SPRING) player.pflags = ($|PF_JUMPED|PF_NOJUMPDAMAGE) end if (player.pflags & PF_JUMPED) and (player.pflags & PF_SPINNING) then player.pflags = $1 & ~PF_SPINNING end if player.speed > skins[player.realmo.skin].normalspeed + 5*FRACUNIT player.charflags = $1|SF_RUNONWATER end if player.speed < skins[player.realmo.skin].normalspeed + 5*FRACUNIT player.charflags = $ & ~SF_RUNONWATER end if player.mo if player.mo.skin == "adventuresonic" then return end if (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_SKID) and player.mo.momz > 0 and not P_IsObjectOnGround(player.mo) and not player.powers[pw_carry] player.mo.state = S_PLAY_SPRING end end if (player.mo.state == S_PLAY_WALK or player.mo.state == S_PLAY_RUN or player.mo.state == S_PLAY_SKID) and player.mo.momz < 1 and not P_IsObjectOnGround(player.mo) and not player.powers[pw_carry] player.mo.state = S_PLAY_FALL end if player.mo.skin ~= "adventuresonic" and not (player.pflags & PF_JUMPED) and player.cmd.buttons & BT_USE and player.charability2 == CA2_SPINDASH and (player.mo.state == S_PLAY_SPRING or player.mo.state == S_PLAY_FALL) player.pflags = $ | PF_JUMPED player.mo.state = S_PLAY_ROLL S_StartSound(player.mo, sfx_zoom, player) P_SpawnThokMobj(player) end end) /* local timeme = 0 addHook("PlayerThink", function(player) if not player.mo.skin == "sonic" or player.mo.skin == "cdsonic" or player.mo.skin == "altsonic" or player.mo.skin == "sunky" then return end if not (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT) timeme = 0 end if (player.mo.state == S_PLAY_WAIT or player.mo.state == S_PLAY_STND) timeme = $ + 1 end if timeme == 3*60*TICRATE and player.playerstate == PST_LIVE P_DamageMobj(player.mo, nil, nil, 1, DMG_INSTAKILL) player.mo.state = S_PLAY_FALL S_StartSound(player.mo, sfx_cdpcm3) player.lives = 0 end end) */ addHook("PlayerThink", function(player) if not(player.mo) then return end if player.playerstate == PST_DEAD and player.rings > 39 P_PlayerRingBurst(player, 40) S_StartSound(player.mo, sfx_altow1) player.rings = 0 end if not(player.mo) then return end if player.playerstate == PST_DEAD and player.rings > 0 P_PlayerRingBurst(player) S_StartSound(player.mo, sfx_altow1) player.rings = 0 end end) addHook("PlayerThink", function(player) if not(player.mo) then return end if player.playerstate == PST_DEAD and player.rings > 39 P_PlayerRingBurst(player, 40) S_StartSound(player.mo, sfx_altow1) player.rings = 0 end if not(player.mo) then return end if player.playerstate == PST_DEAD and player.rings > 0 P_PlayerRingBurst(player) S_StartSound(player.mo, sfx_altow1) player.rings = 0 end if not (player.mo) then return end player.camerascale = player.speed/170 + 1*FRACUNIT local bozo = player.speed/FRACUNIT local fov = CV_FindVar("fov") CV_Set(fov, 100) end) addHook("PlayerSpawn", function(player) player.normalspeed = skins[player.realmo.skin].normalspeed + skins[player.realmo.skin].normalspeed /3 end) addHook("PlayerThink", function(player) if player.mo.skin == "shadow" if player.speed > 55*FRACUNIT and player.mo.state == S_PLAY_RUN player.mo.eflags = $ | MFE_FORCESUPER end if player.speed < 55*FRACUNIT player.mo.eflags = $ & ~MFE_FORCESUPER end end if P_IsValidSprite2(player.mo, SPR2_DASH) if player.speed > 55*FRACUNIT and player.mo.state == S_PLAY_RUN player.mo.state = S_PLAY_DASH end if player.speed < 55*FRACUNIT and player.mo.state == S_PLAY_DASH player.mo.state = S_PLAY_RUN end end end)