local hedgehogsFloatCannon = CV_RegisterVar({ name = "hedgehogsfloat_faithcannon", defaultvalue = tostring(1), flags = CV_SHOWMODIF|CV_NETVAR, PossibleValue = CV_OnOff }) addHook("ThinkFrame",function() for player in players.iterate do if player.mo then if (player.mo.skin == "sonic" or player.mo.skin == "amy") if player.mo.wasGooped == nil then player.mo.wasGooped = false end if player.mo.canFloatInWat == nil then player.mo.canFloatInWat = false end if P_IsObjectInGoop(player.mo) or (player.mo.eflags > 64) player.mo.wasGooped = true end if P_IsObjectOnGround(player.mo) or (player.mo.eflags > 64) player.mo.wasGooped = false player.mo.canFloatInWat = false end if not (player.cmd.buttons & BT_CUSTOM1) then if (player.mo.eflags & MFE_UNDERWATER) and (player.mo.eflags < 64) and (not P_IsObjectInGoop(player.mo)) player.mo.canFloatInWat = true if hedgehogsFloatCannon.value == 1 then P_SetObjectMomZ(player.mo,FRACUNIT/2,true) else if player.mo.momz < FRACUNIT*5 then P_SetObjectMomZ(player.mo,FRACUNIT/4,true) end end elseif (player.mo.eflags & MFE_TOUCHWATER) and (player.mo.eflags & ~ MFE_GOOWATER) and (not P_IsObjectInGoop(player.mo)) player.mo.canFloatInWat = true elseif ((player.mo.eflags & ~ MFE_TOUCHWATER) and (player.mo.eflags & ~ MFE_UNDERWATER)) or (player.mo.eflags < 64) player.mo.canFloatInWat = false end if player.mo.canFloatInWat == true and (player.mo.eflags < 64) if player.mo.state ~= S_PLAY_JUMP and player.mo.state ~= S_PLAY_ROLL and player.mo.state ~= S_PLAY_PAIN and player.mo.state ~= S_PLAY_DEAD and player.mo.state ~= S_PLAY_DRWN and player.mo.wasGooped == false and player.mo.momz < 1 if player.mo.state == S_PLAY_FALL then player.mo.state = S_PLAY_STND end player.mo.z = player.mo.watertop player.mo.momz = 0 end end end end end end end)