rawset(_G, "P_DoMintEffect", function(p,COLOR)
local s = p.realmo
local mfx = P_SpawnMobjFromMobj(s, 0, 0, 0*P_MobjFlip(s), MT_THOK)
mfx.sprite, mfx.angle = SPR_MTHK, s.angle + $+ANGLE_90
mfx.frame = A
mfx.blendmode = AST_ADD
mfx.colorized = true
mfx.scale = s.scale/5
mfx.destscale, mfx.fuse, mfx.tics = s.scale*5,20,20
mfx.flags = $|MF_NOBLOCKMAP|MF_NOCLIPTHING
mfx.eflags = s.eflags
mfx.renderflags = RF_SEMIBRIGHT|RF_PAPERSPRITE
if COLOR
mfx.color = COLOR
end
local Zflip = (s.eflags & MFE_VERTICALFLIP) and MFE_VERTICALFLIP or 0
if Zflip
mfx.eflags = $|Zflip
mfx.spriteyoffset = -15<<16
end
return mfx
end)

rawset(_G, "P_DoMintEffect2", function(p,COLOR)
local s = p.realmo
local mfx = P_SpawnMobjFromMobj(s, 0, 0, 0*P_MobjFlip(s), MT_THOK)
mfx.sprite, mfx.angle = SPR_MTHK, p.drawangle
mfx.frame = A
mfx.blendmode = AST_ADD
mfx.colorized = true
mfx.scale = s.scale/5
mfx.destscale, mfx.fuse, mfx.tics = s.scale*5,20,20
mfx.flags = $|MF_NOBLOCKMAP|MF_NOCLIPTHING
mfx.eflags = s.eflags
mfx.renderflags = RF_SEMIBRIGHT|RF_FLOORSPRITE
P_SetObjectMomZ(mfx, 1*FU)
if COLOR
mfx.color = COLOR
end
local Zflip = (s.eflags & MFE_VERTICALFLIP) and MFE_VERTICALFLIP or 0
if Zflip
mfx.eflags = $|Zflip
mfx.spriteyoffset = -15<<16
end;end)

rawset(_G, "P_DoMintEffect3", function(p)
local s = p.realmo
p.didinvuln = P_SpawnMobj(s.x, s.y, s.z*P_MobjFlip(s), MT_MINTNOFEAR)
p.didinvuln.target = s
p.didinvuln.scale = s.scale/3
p.didinvuln.flags = MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_NOCLIPTHING|MF_NOBLOCKMAP
p.didinvuln.renderflags = $|RF_FULLBRIGHT
p.didinvuln.blendmode = AST_ADD
//p.didinvuln.flags2 = $|MF2_DONTDRAW
end)

rawset(_G, "P_DoMintEffect4", function(s)
local mfx = P_SpawnMobjFromMobj(s, 0, 0, 0, MT_MINTATK)
mfx.scale = 3*FU/2
mfx.tics = 5
//mfx.fuse = 15
mfx.flags = $|MF_NOCLIPTHING
mfx.eflags = s.eflags
if mfx
P_InstaThrust(mfx, mfx.angle, 0<<16)
P_SetObjectMomZ(mfx, 3<<16)
if mfx.frame==I
P_KillMobj(mfx)
end;end;end)

rawset(_G, "P_DoMintEffect5", function(s)
local mfx = P_SpawnMobj(s.x,s.y,s.z, MT_MINTLIGHTNING)
//mfx.tics = 5
mfx.color = SKINCOLOR_WHITE
mfx.blendmode = AST_ADD
mfx.renderflags = RF_NOCOLORMAPS|RF_FULLBRIGHT
mfx.sttfade = true
mfx.scale = s.scale/2
mfx.scalespeed = $*10
mfx.destscale = s.scale*2
mfx.eflags = s.eflags
mfx.frame = A
mfx.sttfinalframe = D
mfx.sttspeed = 3
mfx.fuse = 15
P_MoveOrigin(mfx, s.x, s.y, s.z + 50*FU)
end)

rawset(_G, "P_DoMintDust", function(p)
local s = p.realmo
local mintdust
for d = 1,8
mintdust = P_SpawnMobjFromMobj(s, 0, 0, 1, MT_SPINDUST)
P_InstaThrust(mintdust, ANGLE_45*d, 10*s.scale)
mintdust.scale = s.scale
mintdust.destscale = 99<<16
mintdust.tics = 2
mintdust.flags2 = $|MF2_SHADOW
mintdust.blendmode = AST_TRANSLUCENT
mintdust.colorized = true
mintdust.color = SKINCOLOR_WHITE
if (s.eflags & MFE_UNDERWATER)
mintdust.state = S_SPINDUST_BUBBLE1
end;end;end)

rawset(_G, "P_DoMintHearts", function(p)
local s = p.realmo
local heart = P_SpawnMobjFromMobj(s, 0, 0, s.height*P_MobjFlip(s), MT_CDLHRT)
heart.destscale = (5*s.scale)>>4
heart.fuse = (5*TICRATE)>>1
heart.momz = s.scale
heart.extravalue1 = s.x
heart.extravalue2 = s.y
end)

rawset(_G, "P_DoBurstStompGFX", function(s) local p = s.player
for i = 1,10
local fx = P_SpawnMobjFromMobj(s, 0, 0, 0, MT_THOK)
fx.angle = ANG60*i
fx.blendmode = AST_ADD
//fx.color = s.color
fx.fuse,fx.tics = 15,20
P_InstaThrust(fx, fx.angle, 15*FU)
local mfx = P_SpawnMobjFromMobj(s, 0, 0, 0, MT_THOK)
mfx.scale = 5
mfx.blendmode, mfx.color = AST_ADD, s.color
//mfx.target,mfx.tracer = s,s
//mfx.eflags = s.eflags
mfx.fuse, mfx.tics = 5,10
if (s.flags&MF_ENEMY|MF_BOSS)
fx.state = S_NIGHTSSTAR
end;end;end)

-- Spawning Mint's Hyper Beam (SpeedyM's Take)
rawset(_G, "P_DoZapBeam", function(s) local p = s.player -- AMMA FAA AMWA LASAA
--for i = 0,25 do
local gfx = P_SpawnPlayerMissile(s, MT_THOK)
local aim = {gfx.momx, gfx.momy, gfx.momz, s.angle, max(FixedHypot(FixedHypot(gfx.momx,s.momy), gfx.momz/2),gfx.scale*36), p.aiming}
gfx.angle = s.angle
gfx.color = SKINCOLOR_WHITE
gfx.renderflags = $|RF_FULLBRIGHT
gfx.mintshyperbeam = true
gfx.scale = $+10550
P_InstaThrust(gfx, s.angle, 80<<16)
gfx.momz = FixedMul(19*aim[5]/16, sin(p.aiming))
gfx.blendmode = (leveltime % 6)<= 2 and AST_ADD or AST_COPY
--gfx.flags2 = $|MF2_DONTDRAW
--PerfectSpinTrail(gfx, 15,AST_ADD,nil,SKINCOLOR_WHITE)
--gfx.frame = FF_TRANS90
gfx.flags = $|MF_MISSILE|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT & ~(MF_NOCLIP|MF_NOCLIPTHING)
gfx.target = s
if (leveltime % 6)==0
local gfx = P_DoMintEffect(p,s.color)
gfx.fuse, gfx.tics = 13, 13
P_InstaThrust(gfx, s.angle, 85<<16)
gfx.momz = FixedMul(19*aim[5]/16, sin(p.aiming))
end
--end
end)
local function MintZapCheck() -- Are we supposed to be beaming? >.>
for p in players.iterate do
if p.minttable and p.minttable.hyperbeam and p.minttable and p.minttable.hyperbeam > 10 and ActiveMint(p.realmo)
P_DoZapBeam(p.realmo)
end
end
end
-- Spawns Beam at every single frame possible (May or may not cause a tiny bit of lag. So you can put pre & post think to ignore if you want.)
addHook("PreThinkFrame", MintZapCheck)
addHook("ThinkFrame", MintZapCheck)
addHook("PostThinkFrame", MintZapCheck)