
freeslot("MT_BLUEBOIS",
"S_BLUES_SPLIT", "sfx_buslit", "S_BTHINK", "S_BLAUNCH",
"S_BSPEC", "sfx_allgon")

sfxinfo[sfx_buslit].caption = "Split"
sfxinfo[sfx_allgon].caption = "Poof"

addHook("PlayerSpawn", function(player)// fhnbijosfejnaefjno
local bluecooldown
player.bluecooldown = 60
local bluesplitcooldown
player.bluesplitcooldown = 10
end)

addHook("PlayerThink", function(player) //oh for heck sake
if player.mo
and (player.mo.skin == "blues")

player.bluecooldown = $ or 0
player.bluesplitcooldown = $ or 0
if player.bluecooldown > 0
if player.bluecooldown < 2
S_StartSound(player.mo, sfx_s257, player)
P_SpawnParaloop(player.mo.x, player.mo.y, player.mo.z + (player.mo.height/2),
10*FRACUNIT, 16, MT_NIGHTSPARKLE, 180*ANGLE_22h, MT_NULL, false)
end
if player.powers[pw_super]
player.bluecooldown = player.bluecooldown - 2
else
player.bluecooldown = player.bluecooldown - 1
end
end

if player.bluesplitcooldown > 0
if player.bluesplitcooldown < 2
S_StartSound(player.mo, sfx_allgon, player)
P_SpawnParaloop(player.mo.x, player.mo.y, player.mo.z + (player.mo.height/2),
10*FRACUNIT, 16, MT_NIGHTSPARKLE, 180*ANGLE_22h, MT_NULL, false)
end
if player.powers[pw_super]
player.bluesplitcooldown = $ - 2
else
player.bluesplitcooldown = $ - 1
end
end

end
end)


addHook("AbilitySpecial", function(player)//using as platforms/springs
if player.mo
and (player.mo.skin == "blues")// is the eastern bluejays
and not (player.pflags & PF_JUMPSTASIS or player.pflags & PF_STASIS or player.pflags & PF_FULLSTASIS) 
if player.bluecooldown < 1
player.bluecooldown = 6*TICRATE
S_StartSound(player.mo, sfx_buslit, player)

local idiot = (skins["blues"].height+20)+(2*25)*P_MobjFlip(player.mo)
local bluez = P_SpawnMobjFromMobj(player.mo, 0, 0, idiot*FRACUNIT, MT_BLUEBOIS)
bluez.target = player.mo 
bluez.angle = player.drawangle
bluez.skin = player.mo.skin
bluez.sprite = SPR_PLAY
bluez.sprite2 = SPR2_SPIN
bluez.flags = $ + MF_SPRING
bluez.flags = $ & ~MF_NOBLOCKMAP
bluez.tics = 3*TICRATE + 65
bluez.color = player.skincolor
bluez.height = skins[player.mo.skin].height
bluez.radius = skins[player.mo.skin].radius
bluez.target = player.mo
if (player.speed <= 0)
P_MoveOrigin(player.mo, player.mo.x, player.mo.y,
 ((skins["blues"].height+20)+(2*25)*P_MobjFlip(player.mo))*FRACUNIT + player.mo.z)
else
P_SetObjectMomZ(player.mo, 10*FRACUNIT, false)
end
end
end
end)

addHook("SpinSpecial", function(player) //split!
if player.mo
and (player.mo.skin == "blues") and player.pflags & ~PF_THOKKED and player.speed > 5*FRACUNIT
and not (player.pflags & PF_JUMPSTASIS or player.pflags & PF_STASIS or player.pflags & PF_FULLSTASIS) 
if player.bluesplitcooldown <= 1
player.bluesplitcooldown = 60
if player.mo.state != S_BLUES_SPLIT and player.mo.state != S_PLAY_ROLL
player.mo.state = S_BLUES_SPLIT
end
S_StartSound(player.mo, sfx_buslit, player)
for i = -1,1 do //spawn into 3
if i != 0
local bluet = P_SpawnMobjFromMobj(player.mo, 
FixedMul(cos(player.drawangle + ANGLE_90*i), 45*FRACUNIT), 
FixedMul(sin(player.drawangle + ANGLE_90*i), 45*FRACUNIT), 
0, MT_BLUEBOIS)
bluet.target = player.mo
bluet.tics = -1
bluet.skin = player.mo.skin
bluet.angle = player.drawangle
bluet.sprite = SPR_PLAY
bluet.sprite2 = SPR2_SPIN
bluet.color = player.skincolor
bluet.state = S_BSPEC
bluet.flags = $|MF_MISSILE
bluet.flags = $ & ~MF_PUSHABLE
bluet.flags = $ & ~MF_BOUNCE
if (player.mo.flags2 & MF2_TWOD) or (twodlevel) 
P_MoveOrigin(bluet, player.mo.x, player.mo.y,
player.mo.z + ((5*FRACUNIT)*i))
bluet.momz = player.mo.momz+(5*FRACUNIT)*i
else
bluet.momz = player.mo.momz
end
bluet.momx = player.mo.momx// + FixedMul(cos(player.mo.angle + ANGLE_45*i), 5*FRACUNIT)
bluet.momy = player.mo.momy// + FixedMul(sin(player.mo.angle + ANGLE_45*i), 5*FRACUNIT)
bluet.height = skins[player.mo.skin].height
bluet.radius = skins[player.mo.skin].radius
bluet.target = player.mo
elseif player.powers[pw_super] //super-only holograms
local bluet = P_SpawnMobjFromMobj(player.mo,
FixedMul(cos(player.drawangle + ANGLE_90*i), 45*FRACUNIT),
FixedMul(sin(player.drawangle + ANGLE_90*i), 45*FRACUNIT),
 0, MT_BLUEBOIS)
bluet.target = player.mo
bluet.tics = -1
bluet.skin = player.mo.skin
bluet.angle = player.drawangle
bluet.sprite = SPR_PLAY
bluet.sprite2 = SPR2_ROLL
bluet.flags = $|MF_MISSILE
bluet.flags = $ & ~MF_PUSHABLE
bluet.flags = $ & ~MF_BOUNCE
bluet.color = player.skincolor
bluet.momz = player.mo.momz
bluet.momx = player.mo.momx
bluet.momy = player.mo.momy
bluet.height = skins[player.mo.skin].height
bluet.radius = skins[player.mo.skin].radius
bluet.target = player.mo
bluet.colorized = true
bluet.frame = $|FF_TRANS30
if not (player.mo.flags2 & MF2_TWOD) and not (twodlevel) 
P_InstaThrust(player.mo, player.drawangle, player.speed+16*FRACUNIT)
end
end
end
end
end
end)

addHook("MobjRemoved", function(mobj) //this break all the time =)
if mobj
for i = 0,5 do
local minefs = P_SpawnMobj((mobj.x), (mobj.y), (mobj.z), MT_SPINDUST)
minefs.momx = P_RandomRange(-5, 5)*FRACUNIT
minefs.momy = P_RandomRange(-5, 5)*FRACUNIT
minefs.momz = P_RandomRange(-5, 5)*FRACUNIT
end
end
end, MT_BLUEBOIS)
