local Mint = Mint

addHook("SpinSpecial",function(p)
//if p.spectator return end
if p.bot return end
local s = p.realmo if not (s and s.valid) return end
local spr2 = s.sprite2
local sv = p.realmo.valid
local mint = p.minttable
local pain = P_PlayerInPain(p)
local ong = P_IsObjectOnGround(s)
local hitflr = (s.eflags&MFE_JUSTHITFLOOR)
if s and sv and ActiveMint(s)
if (p.pflags&PF_JUMPED) and mint and mint.b==1 and p.playerstate==PST_LIVE
and not (p.pflags&PF_THOKKED)
and not p.exiting
and not mint.burststompcd
mint.spinlaunchcharge = false
mint.twirl,mint.spintrail = 0,0
s.state = S_PLAY_ROLL
p.pflags = $|PF_THOKKED
p.pflags = $1&~PF_SPINNING
s.momz = 0
S_StartSound(s,sfx_mbstop)
mint.spinlaunchcharge = false
mint.burststomp = true
mint.twirl,mint.trick,s.rollangle = 0,0,0
P_SetObjectMomZ(s,-35*FU,true)
p.powers[pw_strong] = $|STR_SPRING
p.powers[pw_strong] = $|STR_BUST
if (leveltime%2==0)
Mint.AttackVoice(p,s,mint)
end
if (p.cmd.forwardmove or p.cmd.sidemove)
P_InstaThrust(s,s.angle,20*FU)
end;end;end;end)

addHook("ThinkFrame", do for p in players.iterate
//if p.spectator return end
local s = p.realmo if not (s and s.valid) return end
local spr2 = s.sprite2
local sv = p.realmo.valid
local mint = p.minttable
local pain = P_PlayerInPain(p)
local ong = P_IsObjectOnGround(s)
local zflip = P_MobjFlip(s)
if s and ActiveMint(s) and mint and P_IsObjectOnGround(s) and (mint.burststomp==true) and p.playerstate==PST_LIVE
and not P_PlayerInPain(p)
and not P_CheckDeathPitCollide(s, true)
and not mint.a
if mint.shield and (mint.shield==SH_BUBBLEWRAP)
P_DoMintDust(p)
P_DoBubbleBounce(p)
mint.burststomp = false
p.pflags = $|PF_JUMPED
p.pflags = $&~PF_THOKKED
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_BUST
s.spritexscale = FU-18500
s.spriteyscale = FU+1000
mint.stretch = {timer = 20}
if mint.c3 and (mint.c3 >= 1) and (mint.c3 < 127)
mint.trick,mint.twirl = 27,27
mint.c3 = 128
end
else
s.state = S_PLAY_ROLL
S_StartSound(s, sfx_zoom)
p.pflags = $1&~PF_THOKKED
p.pflags = $1&~PF_JUMPED
p.pflags = $|PF_SPINNING
mint.burststomp = false
mint.sbs = false
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_BUST
P_DoMintEffect(p,SKINCOLOR_GREY)
mint.spintrail = 0
end
//mint.zoomout = 7
if (s.eflags&MFE_UNDERWATER) and not (mint.shield==SH_BUBBLEWRAP)
P_Thrust(s, s.angle, 10*FU)
elseif not (mint.shield==SH_BUBBLEWRAP)
P_Thrust(s, s.angle, 25*FU)
end;end
if mint and mint.burststomp==true and P_IsObjectOnGround(s) and p.playerstate==PST_LIVE and mint and mint.a and not P_PlayerInPain(p)
and not P_CheckDeathPitCollide(s, true)
s.state = S_PLAY_MINTLAND
P_InstaThrust(s,s.angle,0*FU)
mint.burststomp = false
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_FLOOR
p.powers[pw_strong] = $&~ STR_BUST
S_StartSound(s, sfx_mstomp)
P_StartQuake(10*FU, 1*TICRATE*1/2)
P_DoBurstStompGFX(s)
mint.burststompcd = 20
mint.spintrail = 0
if mint.sbs and not CBW_Battle and not mint.matchgt
S_StartSound(s, sfx_s3k9b)
P_NukeEnemies(s, s, 500*FU)
P_StartQuake(30*FU, 2*TICRATE*1/2)
mint.sbs = false
end;end
if (s.momz*P_MobjFlip(s) > 1*s.scale) and mint and mint.burststomp==true and p.playerstate==PST_LIVE
and not P_PlayerInPain(p)
and not P_IsObjectOnGround(s)
and not (s.eflags&MFE_JUSTHITFLOOR)
p.pflags = $1&~PF_SPINNING
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_FLOOR
p.powers[pw_strong] = $&~ STR_BUST
mint.burststomp = false
if not P_IsObjectInGoop(s,s.angle)
p.pflags = $|PF_JUMPED
p.pflags = $1&~PF_THOKKED
if s.eflags&MFE_VERTICALFLIP
s.state = S_PLAY_ROLL
else
s.state = S_PLAY_SPRING
end;end
if p.powers[pw_justsprung]
P_DoBurstStompGFX(s)
S_StartSound(s, sfx_mspng)
mint.burststompcd = 60
mint.twirl,mint.trick = 60,60
mint.sbs = false
P_SetObjectMomZ(s,35*FU,false)
end
if p.playerstate==PST_DEAD or p.powers[pw_justsprung] or p.powers[pw_carry]==CR_MACESPIN or P_PlayerInPain(p)
mint.burststomp = false
mint.superburststomp = 0
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_FLOOR
p.powers[pw_strong] = $&~ STR_BUST
end
if mint.burststomp==true
and (s.momz > (9000*P_MobjFlip(s)))
and not (s.momz*P_MobjFlip(s) > 1*s.scale)
P_SetObjectMomZ(s, FixedMul(-55*FU, s.scale))
end
if P_PlayerInPain(p) or P_IsObjectInGoop(s,s.angle) or p.playerstate==PST_DEAD
or p.powers[pw_carry]==CR_MINECART
or p.powers[pw_carry]==CR_MACESPIN
or p.powers[pw_carry]==CR_ROLLOUT
or p.powers[pw_carry]==CR_DUSTDEVIL
or p.powers[pw_carry]==CR_ROPEHANG
mint.burststomp = false
p.powers[pw_strong] = $&~ STR_SPRING
p.powers[pw_strong] = $&~ STR_BUST
end;end;end;end)