// This code is really fuckin outdated and was made back when i knew jackshit about custom abilities, i still tried to make it good tho now tho.
freeslot("S_PLAY_BECH")

states[S_PLAY_BECH] = {SPR_PLAY, SPR2_JUMP|FF_ANIMATE, 1, nil, 0, 0, S_PLAY_BECH}

addHook("ThinkFrame", function()
for player in players.iterate do
player.bechargingup = player.bechargingup or false
player.haspunched = player.haspunched or false
player.bechargepower = player.bechargepower or 0
player.befuckoff = player.befuckoff or 0

if player.mo and player.mo.valid and player.mo.skin == "beggman" then
if (player.cmd.buttons & BT_SPIN) and P_IsObjectOnGround(player.mo) and not player.haspunched and (player.mo.state == S_PLAY_STND or player.mo.state == S_PLAY_WAIT) then
P_InstaThrust(player.mo, player.mo.angle, FixedMul(0* FRACUNIT, player.mo.scale))
S_StartSound(player.mo,sfx_behu)
player.bechargingup = true
end
if (player.cmd.buttons & BT_SPIN) and player.bechargingup and player.bechargepower <= 59 and not player.haspunched then
player.bechargepower = player.bechargepower + 1
P_InstaThrust(player.mo, player.mo.angle, FixedMul(0* FRACUNIT, player.mo.scale))
player.mo.state = S_PLAY_BECH
P_SetObjectMomZ(player.mo, 1 * FRACUNIT / 3)
end
if (player.cmd.buttons & BT_SPIN) and player.bechargingup and player.bechargepower == 60 and not player.haspunched then
player.bechargepower = player.bechargepower + 1
S_StartSound(player.mo,sfx_behr)
player.mo.state = S_PLAY_BECH
S_StopSound(player.mo,sfx_behu)
P_SetObjectMomZ(player.mo, 1 * FRACUNIT / 3)
end
if (player.cmd.buttons & BT_SPIN) and player.bechargingup and player.bechargepower >= 60 and player.befuckoff <= 70 then
player.befuckoff = player.befuckoff + 1
P_SpawnMobjFromMobj(player.mo, P_RandomRange(-12, 6) * FRACUNIT, P_RandomRange(-12, 12) * FRACUNIT, P_RandomRange(4, 32) * FRACUNIT, MT_PARTICLE)
P_SpawnMobjFromMobj(player.mo, P_RandomRange(-12, 6) * FRACUNIT, P_RandomRange(-12, 12) * FRACUNIT, P_RandomRange(4, 32) * FRACUNIT, MT_PARTICLE)
player.mo.state = S_PLAY_BECH
P_SetObjectMomZ(player.mo, 0 * FRACUNIT)
end
if (player.cmd.buttons & BT_SPIN) and player.bechargingup and player.bechargepower >= 60 and player.befuckoff >= 70 then
P_InstaThrust(player.mo, player.mo.angle, FixedMul(player.bechargepower * 2 / 3 * FRACUNIT, player.mo.scale))
P_SetObjectMomZ(player.mo, player.bechargepower / 4 * FRACUNIT)
player.mo.state = S_PLAY_FALL
player.bechargingup = false
player.haspunched = true
P_SpawnThokMobj(player)
S_StopSound(player.mo,sfx_behu)
S_StopSound(player.mo,sfx_behr)
S_StartSound(player.mo,sfx_behp)
end
if not (player.cmd.buttons & BT_SPIN) and player.bechargingup then
P_InstaThrust(player.mo, player.mo.angle, FixedMul(player.bechargepower * 3 / 4 * FRACUNIT, player.mo.scale))
P_SetObjectMomZ(player.mo, player.bechargepower / 4 * FRACUNIT)
player.bechargingup = false
player.mo.state = S_PLAY_RUN
player.powers[pw_strong] =  STR_ANIM|STR_PUNCH|STR_SPIKE
player.haspunched = true
P_SpawnThokMobj(player)
S_StopSound(player.mo,sfx_behu)
S_StopSound(player.mo,sfx_behr)
S_StartSound(player.mo,sfx_behp)
end
if P_IsObjectOnGround(player.mo) then
player.haspunched = false
player.bechargepower = 0
player.befuckoff = 0
end
end
end
end)