
addHook("PlayerSpawn", function(player) 
local springcharge
player.springcharge = 0
local bouncerev
player.bonucerev = 0
local revheight
player.revheight = $ or skins["matilda"].height
end)

local function BombBirdExplodeFX(player, where) //copy and pasted cuz lazy
for n = -1,1 do
for i = 0,16 do
local boom = P_SpawnMobjFromMobj(where, 0, 0, (n*15)*FRACUNIT, MT_BOMB_BOOM)
boom.momz = (n*15)*FRACUNIT
boom.angle = (i*22)*ANG1
boom.tics = 6
boom.flags = $|MF_MISSILE
boom.target = player.mo
boom.scale = player.mo.scale
P_InstaThrust(boom, (i*22)*ANG1, 15*FRACUNIT)

local boom = P_SpawnMobjFromMobj(where, 0, 0, (n*10)*FRACUNIT, MT_BOMB_BOOM)
boom.momz = (n*10)*FRACUNIT
boom.angle = (i*22)*ANG1
boom.tics = 6
boom.flags = $|MF_MISSILE
boom.target = player.mo
boom.scale = player.mo.scale
P_InstaThrust(boom, (i*22)*ANG1, 30*FRACUNIT)
end

local boom = P_SpawnMobjFromMobj(where, 0, 0, (n*-15)*FRACUNIT, MT_BOMB_BOOM)
boom.momz = (n*15)*FRACUNIT
boom.angle = (i*22)*ANG1
boom.tics = 6
boom.flags = $|MF_MISSILE
boom.target = player.mo
boom.scale = player.mo.scale
P_InstaThrust(boom, (i*22)*ANG1, 15*FRACUNIT)
end
end

addHook("PlayerThink", function(player) 
if player.valid and player.mo and (player.mo.skin == "matilda") // that's a chicken?
player.revheight = $ or skins["matilda"].height
player.springcharge = $ or 0
player.bonucerev = $ or 0
if player.powers[pw_nocontrol] == 0
and not (player.pflags & PF_JUMPSTASIS or player.pflags & PF_STASIS or player.pflags & PF_FULLSTASIS) 
if not(player.cmd.buttons & BT_SPIN) //spinspecial part 2
player.revheight = skins["matilda"].height
if (player.springcharge > 45)
if P_IsObjectOnGround(player.mo)
player.mo.state = S_PLAY_SPRING
S_StartSound(player.mo, sfx_mdoet, player)
P_SetObjectMomZ(player.mo, (player.springcharge/3)*FRACUNIT, false)
else
S_StartSound(player.mo, sfx_mdoet, player)
P_Thrust(player.mo, player.drawangle, (player.springcharge/3)*FRACUNIT)
end
player.springcharge = 0
player.bonucerev = 0
player.mo.spriteyscale = FRACUNIT
player.pflags = $ + PF_SPINNING
elseif (player.springcharge > 0)
player.springcharge = 0
player.bonucerev = 0
player.mo.spriteyscale = FRACUNIT
end
end
end
end
end)

addHook("AbilitySpecial", function(player)// egg bombs
if player.mo and (player.mo.skin == "matilda")
if not(player.pflags & PF_THOKKED)
P_InstaThrust(player.mo, player.drawangle, 25*FRACUNIT)
P_SetObjectMomZ(player.mo, -25*FRACUNIT, true)
S_StartSound(player.mo, sfx_mdnet, player)
local eggbom = P_SpawnMobjFromMobj(player.mo, 0, 0, 0, MT_MAT_EGBOM)
eggbom.color = player.skincolor
eggbom.target = player.mo
player.mo.state = S_PLAY_ROLL
end
end
end)

addHook("SpinSpecial", function(player)//springy
if player.mo and (player.mo.skin == "matilda")
and not(player.exiting)
if player.powers[pw_nocontrol] == 0
and not (player.pflags & PF_JUMPSTASIS or player.pflags & PF_STASIS or player.pflags & PF_FULLSTASIS) 
//print(player.springcharge)
if player.springcharge < 80 // and P_IsObjectOnGround(player.mo)
player.springcharge = $ + 2
end

if player.springcharge < 31 //"animation"
local charge = P_SpawnMobjFromMobj(player.mo, P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT, MT_BOXSPARKLE)
charge.colorized = true
charge.color = player.skincolor
charge.frame = $|FF_TRANS50
player.mo.spriteyscale = (FRACUNIT/2)+(FRACUNIT/3)
player.revheight = skins[player.mo.skin].height - 20*FRACUNIT

elseif player.springcharge > 30 and player.springcharge < 65
local charge = P_SpawnMobjFromMobj(player.mo, P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT, MT_BOXSPARKLE)
charge.colorized = true
charge.color = player.skincolor
charge.frame = $|FF_TRANS20
charge.scale = 2*FRACUNIT
player.mo.spriteyscale = (FRACUNIT/2)+(FRACUNIT/4)
player.revheight = skins[player.mo.skin].height - 30*FRACUNIT

else
//player.mo.spriteyscale = (FRACUNIT/3)+(FRACUNIT/5)
local charge = P_SpawnMobjFromMobj(player.mo, P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT,
P_RandomRange(-10, 10)*FRACUNIT, MT_BOXSPARKLE)
charge.colorized = true
charge.color = player.skincolor
charge.frame = $|FF_FULLBRIGHT
charge.scale = 3*FRACUNIT
player.mo.spriteyscale = (FRACUNIT/3)+(FRACUNIT/5)
player.revheight = skins[player.mo.skin].height - 35*FRACUNIT
end
end
end
end)

addHook("PlayerHeight", function(player) //for fun
	if (player.mo and player.mo.valid)
	if (player.mo.skin == "matilda")
		return player.revheight
end
end
end)

addHook("PlayerCanEnterSpinGaps", function(player) 
	if (player.mo and player.mo.valid)
	if (player.mo.skin == "matilda")
	if (player.revheight == skins[player.mo.skin].height - 35*FRACUNIT)
	return true
	else
	return false
end
end
end
end)

addHook("MobjThinker", function(mobj) // explode
if (mobj.state == S_FBOMB_EXPL1) then
BombBirdExplodeFX(mobj.target.player, mobj)
end
end, MT_MAT_EGBOM)



