-----[*~Mint "The AmyDroid" Sweetnam~* by SSNeoMint]-----
---------[Custom Sprites by SSNeoMint]-------
------------[Lua made by SSNeoMint]----------
-----[Mint's voice from Space Channel 5 (Ulala)-------

local Mint = Mint

rawset(_G, "ActiveMint", function(s)
if (s and s.skin=="mint") return true end
end)

addHook("MobjSpawn", function(s)
s.gotmint = true
end, MT_PLAYER)

addHook("ThinkFrame", do for p in players.iterate
local s = p.realmo if not (s and s.valid) continue end

Mint.Timers(p,s,p.minttable)
Mint.Gift(p,s,p.minttable)
Mint.Chat(p,s,p.minttable)

if ActiveMint(s) and p.minttable

local pain = P_PlayerInPain(p)
local mint = p.minttable
Mint.Music(p,s,p.minttable)

if not mint.matchgt
Mint.LockOn(p,s,p.minttable)
end

if s.gotmint
p.jointime = 3
s.rollangle = 0
p.mintstory = {complete = true}
p.powers[pw_flashing] = 1*TICRATE
FactoryReset(p,s,mint)
mint.exiting = 0
mint.homing = 0
mint.flames = 0
mint.respo = 0
mint.raceboost = 0
mint.otherchar = false
mint.gotthepower = false
s.gotmint = false
end

/*if p.jointime==53 and p.playerstate==PST_LIVE
and not p.spectator
Mint.Story(p,s)
end*/

if s.state==S_PLAY_DEAD or s.state==S_PLAY_GASP
or p.airdodge or p.powers[pw_carry]
and p.powers[pw_carry]!=CR_NIGHTSMODE
FactoryReset(p,s,mint)
s.rollangle = 0
end

if p.playerstate==PST_LIVE
if P_IsObjectOnGround(s) and mint.realcharge
and not (p.powers[pw_carry]==CR_NIGHTSMODE)
s.state = S_PLAY_WALK
mint.spinlaunchcharge = false
mint.realcharge = 0
end;end

if P_IsObjectOnGround(s)
mint.ledgechance = 6 --6 means 3
mint.flip = 0
end

if mint.shield
Mint.ShieldThinker(p,s,mint)
end

if p.mintvoice==nil
p.mintvoice = 2
end

if p.mintphys==nil
p.mintphys = 2
end

if not P_IsObjectOnGround(s) and not (p.pflags&PF_SPINNING)
Mint.AirControl(p,s,mint)
end

if (p.pflags&PF_SPINNING) and not mint.spinlaunchcharge
mint.spintrail = 1
end
if (p.pflags&PF_SPINNING) and not mint.spinlaunchcharge
p.thrustfactor = (skins["mint"].thrustfactor)*10
else p.thrustfactor = skins["mint"].thrustfactor
end

local speedcap
if mint.speedup
speedcap = 100*s.scale
else
speedcap = 60*s.scale
end
if s.state==S_PLAY_RUN
and (leveltime%6==0)
and not (p.speed >= speedcap)
and not (s.eflags&MFE_UNDERWATER)
P_Thrust(s, p.drawangle, 1*FU)
elseif P_IsObjectOnGround(s) and (p.speed >= speedcap) and not (p.speed <= 70*s.scale)
and not (p.pflags&PF_SPINNING)
and not s.standingslope
and not p.mysticsuper
and not mint.uncapped
or (s.eflags&MFE_UNDERWATER) and (p.speed >= 40*s.scale) and not (p.speed <= 30*s.scale)
and not mint.uncapped
P_Thrust(s, p.drawangle, -2*FU)
end

if s.state==S_PLAY_WAIT
if mint.nofear
s.state = S_PLAY_MINTDANCE
else
S_StartSoundAtVolume(s, sfx_s251, 138)
s.state = S_PLAY_MINTSIT
P_DoMintDust(p)
s.spritexscale = FU+18500
s.spriteyscale = FU-10000
mint.stretch = {timer = 10}
end;end

if s.state==S_PLAY_SPRING and (s.momz*P_MobjFlip(s) < 0*s.scale)
and (mint.realcharge >= 30)
mint.flip = 22
s.spritexscale = FU-22500
s.spriteyscale = FU+41000
mint.stretch = {timer = 2}
end

if (p.pflags&PF_SPINNING)
and s.state==S_PLAY_JUMP
s.state = S_PLAY_SPRING
p.pflags = $&~PF_SPINNING
S_StopSoundByID(s,sfx_spndsh)
mint.spindash = 0
s.spritexscale = s.scale
s.spriteyscale = s.scale
end

if not p.powers[pw_carry] and s.state==S_PLAY_JUMP and (s.momz*P_MobjFlip(s) < 0*s.scale)
s.state = S_PLAY_FALL
elseif not p.powers[pw_carry] and s.state==S_PLAY_FALL and (s.momz*P_MobjFlip(s) > 0*s.scale)
s.state = S_PLAY_JUMP
end

if mint.twirl and mint.trick
s.state = S_PLAY_RIDE
else if (mint.twirl and not mint.trick or mint.trick and not mint.twirl)
s.state = S_PLAY_SPRING
end;end

if s.state==S_PLAY_SKID and P_IsObjectOnGround(s)
s.momx = $*5/6
s.momy = $*5/6
end

if P_IsObjectOnGround(s) and mint.combo and (mint.combo >= 2)
and not (mint.homing and mint.homing >= 1)
S_StartSound(s, sfx_kc65)
mint.combo = 0
mint.pout = 58
if (leveltime%2==0)
local combofail
combofail = {sfx_mnvoce,sfx_mnvoc2,sfx_mnvocc,sfx_mnvocd,sfx_mnvocj,sfx_mnvock,sfx_mnvocl}
local mrng = P_RandomRange(1, #combofail)
local combofail2 = combofail[mrng]
combofail2 = (mrng==#combofail) and combofail[1] or combofail[mrng+1]
Mint.Vocals(p,s,mint, combofail2, 200)
end
elseif P_IsObjectOnGround(s) and mint.combo==1
mint.combo = 0
end

if s.state==S_PLAY_ROLL and mint.realcharge==31 and (mint.flip < 16) and mint.b==1
or (mint.flip > 1) and (mint.flip < 5) and mint.b
and not P_IsObjectOnGround(s)
and not mint.sbs
mint.superburststomp = 2
mint.realcharge = 0
mint.zoomout = 10
mint.flip = 0
mint.sbs = true
s.state = S_PLAY_ROLL
end

if mint.burststomp
if (s.eflags & MFE_VERTICALFLIP)
s.spritexscale = FRACUNIT-FixedDiv(s.momz/96,s.scale)
s.spriteyscale = FRACUNIT+FixedDiv(s.momz/96,s.scale)
else
s.spritexscale = FRACUNIT+FixedDiv(s.momz/96,s.scale)
s.spriteyscale = FRACUNIT-FixedDiv(s.momz/96,s.scale)
end
elseif not mint.stretch
s.spritexscale = FRACUNIT
s.spriteyscale = FRACUNIT
end
if mint.superburststomp and P_IsObjectOnGround(s)
mint.zoomout = 1
mint.superburststomp = 0
end

if p.powers[pw_carry]==CR_MINECART and not (p.playerstate==PST_DEAD)
s.state = S_PLAY_MINTSIT
end
if not (s.state == S_PLAY_WALK) and p.powers[pw_carry]==CR_ROLLOUT
s.state = S_PLAY_WALK
end

if mint.homing and (mint.homing < 40) and P_IsObjectOnGround(s)
mint.homing = 0
mint.framejump = 0
mint.combo = 0
s.state = S_PLAY_SPRING
P_DoBurstStompGFX(s)
S_StartSound(s, sfx_s3k49)
P_SetObjectMomZ(s,8*FU)
P_InstaThrust(s, s.angle, 0*FU)
mint.zoomout = 1
end
if mint.homing and (s.momz*P_MobjFlip(s) < -100*s.scale) and not S_SoundPlaying(s, sfx_mdive)
S_StartSound(s, sfx_mdive)
end
if mint.homing and p.powers[pw_justsprung]
S_StartSound(s, sfx_mspng)
mint.twirl = 60
mint.homing = 0
p.pflags = $|PF_JUMPED
p.pflags = $1&~PF_THOKKED
end

if s and (s.eflags&MFE_JUSTHITFLOOR)
and P_IsObjectOnGround(s)
and not (p.playerstate==PST_DEAD)
and not P_CheckDeathPitCollide(s)
and not mint.burststomp
and not mint.homing
and not p.spectator
S_StartSoundAtVolume(s,sfx_mlnd,255)
P_DoMintDust(p)
s.spritexscale = FU+18500
s.spriteyscale = FU-1000
mint.stretch = {timer = 20}
if (p.speed < 15*FU)
and (p.cmd.forwardmove==0 and p.cmd.sidemove==0)
s.state = S_PLAY_MINTLANDALT
end;end
if s.state==S_PLAY_MINTLAND and not mint.spindash
s.spritexscale = FU+18500
s.spriteyscale = FU-10000
mint.stretch = {timer = 3}
p.powers[pw_nocontrol] = 1
end
if mint.spindash
s.state = S_PLAY_SPINDASH
p.pflags = $|PF_STARTDASH
p.pflags = $|PF_SPINNING
//s.spritexscale = FU+18500
s.spriteyscale = FU+13000
mint.stretch = {timer = 10}
end
if s.state==S_PLAY_MINTLAND and mint.b==1 and not mint.spindash
mint.spindash = 50
S_StartSoundAtVolume(s, sfx_spndsh, 255)
end
if mint.spindash and not mint.b
s.state = S_PLAY_ROLL
P_Thrust(s, s.angle, 30*FU)
S_StopSoundByID(s,sfx_spndsh)
S_StartSound(s,sfx_zoom)
P_DoMintEffect(p,SKINCOLOR_GREY)
p.pflags = $&~ PF_STARTDASH
s.spritexscale = FU+18500
s.spriteyscale = FU-10000
mint.stretch = {timer = 25}
mint.spindash = 0
end
if mint.spindash == 1
s.state = S_PLAY_WALK
p.pflags = $1&~PF_SPINNING
S_StartSound(s, sfx_s1b8)
mint.spindash = 0
end
if mint.spindash and not P_IsObjectOnGround(s)
s.state = S_PLAY_SPRING
p.pflags = $1&~PF_SPINNING
mint.spindash = 0
end

if pain and p.playerstate==PST_LIVE
and not mint.paincd
s.state = S_PLAY_PAIN
FactoryReset(p,s,mint)
Mint.STFU(p,s)
mint.paincd = 999
s.rollangle = 0
mint.combo = 0
mint.spinlaunchcharge = false
mint.realcharge = 0
local mintpain
mintpain = {sfx_mnvoc8,sfx_mnvoc9,sfx_mnvoc0,sfx_mnvocq}
local mrng = P_RandomRange(1, #mintpain)
local mintpain2 = mintpain[mrng]
mintpain2 = (mrng==#mintpain) and mintpain[1] or mintpain[mrng+1]
S_StopSoundByID(s, sfx_mnvoc4)
S_StopSoundByID(s, sfx_mnvoc5)
S_StopSoundByID(s, sfx_mnvoc6)
Mint.Vocals(p,s,mint, mintpain2)
P_InstaThrust(s, p.drawangle, -10*FU)
P_SetObjectMomZ(s, (s.eflags&MFE_UNDERWATER) and 6*FU or 9*FU)
end
if (p.powers[pw_flashing] > 95) and pain
and not (leveltime%5)
and not (mint.recovertime >= 5)
and not CBW_Battle
mint.recovertime = $+1
mint.burststomp = false
mint.spintrail,mint.twirl,mint.trick,mint.realcharge,mint.combo,mint.homing,mint.spinlaunchcharge,mint.pained = 0,0,0,0,0,0,false,false
elseif mint.recovertime and not pain
mint.recovertime = 0
end
if pain and mint.a and mint.recovertime==5
p.cmd.buttons = 0
p.powers[pw_nocontrol] = 0
P_DoJump(p, true)
mint.recovertime = 0
P_InstaThrust(s, p.drawangle, 0*FU)
S_StartSound(s,sfx_s3k42)
end
if P_IsObjectOnGround(s) and mint.paincd
mint.paincd = 0
end
if p.playerstate==PST_LIVE and P_PlayerTouchingSectorSpecial(p, 1, 3) and P_IsObjectOnGround(s) and not mint.nofear
or p.playerstate==PST_LIVE and (s.eflags&MFE_TOUCHLAVA) and not mint.nofear
S_StartSound(s, sfx_s3k48)
mint.flames = 90
end

if mint.spinlaunchcharge and (s.momz*P_MobjFlip(s) < 0*s.scale)
s.momz = $*35/37
end
if mint.spinlaunchcharge==true and (s.eflags&MFE_TOUCHWATER)
S_StartSound(s, sfx_splash)
P_SetObjectMomZ(s, 6*FU)
end
if mint.spinlaunchcharge==true
and p.powers[pw_justsprung]
S_StopSoundByID(s,sfx_mspnd)
mint.spinlaunchcharge = false
end

if p.exiting
mint.spinlaunchcharge,mint.burststomp = false,false
end

if (p.charflags&SF_SUPER) and not (monitorsplus and p.MP_super)
p.charflags = $ &~SF_SUPER
end

if s.standingslope and (p.speed >= 60*s.scale) and mint.b
local slopefx = P_SpawnGhostMobj(s)
slopefx.fuse = 3
slopefx.blendmode = AST_ADD
slopefx.color = s.color
slopefx.colorized = true
end
if p.powers[pw_justlaunched]==1 and (p.pflags&PF_STARTJUMP)
and (p.speed >= 55*s.scale)
and mint.b
P_DoMintDust(p)
P_SetObjectMomZ(s,25*FU,false)
S_StartSound(s, sfx_thok)
mint.spintrail = 30
s.state = S_PLAY_MINTDASH2
end

if maptol&TOL_NIGHTS and not p.exiting
S_ChangeMusic("MNTS", true, p)
end
if p.powers[pw_carry]==CR_NIGHTSMODE
FactoryReset(p,s,mint)
mint.freeroam = false
p.powers[pw_nights_superloop] = 106*TICRATE
p.powers[pw_nights_helper] = 106*TICRATE
end
/*
if p.powers[pw_carry]==CR_NIGHTSMODE and mint.a and mint.b==1
and not p.exiting
//and not mint.freeroam
S_StartSound(s, sfx_kc4d)
S_StartSound(s, sfx_kc5b)
S_StartSound(s, sfx_s3kbcs)
P_InstaThrust(s, p.drawangle, 0*FU)
p.powers[pw_carry] = 0
s.flags = $&~MF_NOGRAVITY
s.state = S_PLAY_FALL
s.rollangle = 0
p.powers[pw_nights_superloop],p.powers[pw_nights_helper] = 0,0
P_StartQuake(16*FU, 1*TICRATE*1/2)
mint.freeroam = true
end
if p.nightstime and mint.freeroam
and (leveltime%35==0)
p.nightstime = $-TICRATE*1
if (p.nightstime < 1) and mint.freeroam
p.exiting = 99
mint.freeroam = false
end;end*/

if mint.speedup
//Mint.CrossMobj(p,s,mint, nil,SKINCOLOR_RED,s.scale/4,AST_ADD)
local slopefx = P_SpawnGhostMobj(s)
slopefx.fuse = 3
slopefx.blendmode = AST_ADD
slopefx.color = SKINCOLOR_RED
slopefx.colorized = true
end
if mint.speedup==1
p.charflags = $&~SF_CANBUSTWALLS
end
if not (p.powers[pw_sneakers] or p.powers[pw_invulnerability])
and mint.gotthepower
mint.gotthepower = false
if not (maptol&TOL_NIGHTS)
P_RestoreMusic(p)
end;end
if mint.nofear
Mint.NoFear(p,s,mint)
end

if (p==consoleplayer and p.mintstory and p.mintstory.tree)
hud.disable("lives")
elseif ActiveMint(s) hud.enable("lives")
end

if s.state==S_PLAY_RUN and P_IsObjectOnGround(s)
and (s.frame==D or s.frame==H)
or s.state==S_PLAY_WALK and P_IsObjectOnGround(s)
and (s.frame==A or s.frame==E)
or s.state==S_PLAY_SKID and P_IsObjectOnGround(s)
local dust = P_SpawnMobj(s.x, s.y, s.z + ((s.eflags&MFE_VERTICALFLIP)/MFE_VERTICALFLIP * (s.height - mobjinfo[MT_SPINDUST].height)),MT_SPINDUST)
dust.angle = ANG60
P_InstaThrust(dust, p.drawangle, -8*FU)
dust.scale = s.scale
dust.destscale = 99<<16
dust.tics = 2
dust.flags2 = $|MF2_SHADOW
dust.blendmode = AST_TRANSLUCENT
dust.colorized = true
dust.color = SKINCOLOR_WHITE
if (s.eflags & MFE_UNDERWATER)
dust.state = S_SPINDUST_BUBBLE1
end;end

if s.state==S_PLAY_MINTDANCE and not mint.nofear
and not mint.dance
S_StartSound(s, sfx_cdfm37)
s.state = S_PLAY_MINTPOUT
end

if p.speed and s.state==S_PLAY_MINTTPOSE
or p.speed and s.state==S_PLAY_MINTPOUT
or p.speed and s.state==S_PLAY_MINTDANCE
or not P_IsObjectOnGround(s) and s.state==S_PLAY_MINTDANCE
or p.speed and s.state==S_PLAY_MINTSIT and not (p.powers[pw_carry]==CR_MINECART)
S_StartSoundAtVolume(s, sfx_s1b8, 138)
s.state = S_PLAY_WALK
mint.dance = false
mint.goforitjack = 0
end

if p.mintkick
s.state = S_PLAY_MINTKICK
p.mintkick = false
if not S_SoundPlaying(s, sfx_mkick)
S_StartSound(s, sfx_mkick)
end;end
if s.state==S_PLAY_MINTKICK or p.hugged
P_InstaThrust(s,s.angle,0*FU)
end
if not mint.stretch and p.playerstate==PST_DEAD
s.spritexscale = s.scale
s.spriteyscale = s.scale
end

if s.state==S_PLAY_GASP
p.pflags = $|PF_THOKKED
p.pflags = $1&~PF_JUMPED
if s.tics==1
s.state = S_PLAY_FALL
end;end

if (mint.nofear and maptol&TOL_MARIO) and s.state==S_PLAY_MINTDANCE
s.colorized = true
else s.colorized = false
end

if p.playerstate==PST_DEAD
and (s.eflags&MFE_UNDERWATER)
or p.playerstate==PST_DEAD
and p.powers[pw_spacetime]
P_InstaThrust(s, s.angle, 0*FU)
s.flags = $|MF_NOCLIPHEIGHT|MF_NOCLIP
P_SetObjectMomZ(s, -1*FU)
end
if p.playerstate==PST_DEAD
and (s.eflags&MFE_TOUCHLAVA)
if P_PlayerTouchingSectorSpecial(p, 1, 3) and P_IsObjectOnGround(s)
s.sprite2 = SPR2_LAVA
P_InstaThrust(s, s.angle, 0*FU)
s.flags = $|MF_NOCLIPHEIGHT|MF_NOCLIP
P_SetObjectMomZ(s, -FU/2)
mint.flames = 1
end;end
if p.playerstate==PST_DEAD
and P_CheckDeathPitCollide(s, true)
s.flags = $|MF_NOCLIPHEIGHT
P_SetObjectMomZ(s, -20*FU)
s.state = S_PLAY_PAIN
end
if p.playerstate==PST_DEAD
and p.rings
S_StartSoundAtVolume(s, sfx_s3kb9, 140)
P_PlayerRingBurst(p, p.rings)
p.rings = 0
P_PlayerWeaponPanelOrAmmoBurst(p)
//p.powers[pw_railring] = 0
end
if p.playerstate==PST_DEAD
and mint.speedup
mint.speedup = 0
COM_BufInsertText(p, "tunes -default")
P_RestoreMusic(p)
end
if p.playerstate==PST_DEAD
and mint.nofear
mint.nofear = 0
COM_BufInsertText(p, "tunes -default")
P_RestoreMusic(p)
end
if s.color==SKINCOLOR_MINT and p.playerstate==PST_LIVE
and not (mint.nofear and maptol&TOL_MARIO)
and not s.welshboosted
p.powers[pw_invulnerability] = 0
CONS_Printf(p, "\x82"+"ERROR\x80: TOO MUCH MINT. Please change your color.")
P_DamageMobj(s, nil, nil, 0, DMG_INSTAKILL)
P_BlackOw(p)
S_StartSound(s, sfx_mboom)
S_StartSound(s, sfx_kc3b)
S_StartSound(s, sfx_bkpoof)
S_StartSound(s, sfx_s3k4e)
P_StartQuake(6*FU, 9)
//s.sprite2 = SPR2_LAVA
Mint.STFU(p,s)
for a=1,64 do
local explode = P_SpawnMobj(s.x, s.y, s.z, MT_BOSSEXPLODE)
explode.momx = P_RandomRange(-32768, 32767) * 64
explode.momy = P_RandomRange(-32768, 32767) * 64
explode.momz = P_RandomFixed() * 32
end
if mint.spinlaunchcharge==true and (s.eflags&MFE_JUSTHITFLOOR)
s.state = S_PLAY_STND
mint.spinlaunchcharge = false
p.pflags = $1&~PF_SPINNING
end;end;end;end;end)

/*addHook("PlayerQuit", function(p, reason)
local mint = p.minttable
local s = p.realmo
if reason==KR_LEAVE
Mint.Vocals(p,s,mint, sfx_mnvoc3)
end;end)
*/

//Needed a seperate hook apparently
addHook("PreThinkFrame", do for p in players.iterate
local s = p.realmo
local mint = p.minttable
if s and s.valid and not ActiveMint(s)
if s.stretch
MintStretch(p,s)
end
local mus = S_MusicName()
if (mus=="MSHOES" or mus=="MSHOEB"
or mus=="MSHOEC"
or mus=="MNTS" or mus=="MCLEAR"
or mus=="M1UP" or mus=="MINV") and not (maptol&TOL_NIGHTS)
//COM_BufInsertText(p, "tunes -default")
P_RestoreMusic(p)
end
if p.didinvuln and p.didinvuln.valid
p.didinvuln.flags2 = $|MF2_DONTDRAW
end
if(s.state==S_PLAY_MINTLANDALT
or s.state==S_PLAY_MINTSIT
or s.state==S_PLAY_MINTPOUT
or s.state==S_PLAY_MINTDASH
or s.state==S_PLAY_MINTDASH2
or s.state==S_PLAY_MINTDANCE)
s.state = S_PLAY_FALL
end;end
/*if CBW_Battle
s.flags = $|MF_ENEMY
end*/
if mint and s.skin != "mint" and not mint.otherchar
FactoryReset(p,s,mint)
Mint.NotMint(p,s,mint)
p.mintstory = {complete = true}
if not (p==consoleplayer)
hud.enable("lives")
end
mint.otherchar = true
end;end;end)

//Needed a seperate hook apparently 2
addHook("PlayerThink",function(p)
if p.spectator return end
local s = p.realmo
local mint = p.minttable
if s and s.valid and ActiveMint(s) and mint
and p.playerstate==PST_LIVE
local mt2 = mint.target2
if mint.homing and (mint.homing < 40) and mint.target2
and (mint.target2.valid and mint.target2.health)
and not (mt2.player and CBW_Battle and CBW_Battle.MyTeam(p,mt2.player))
p.powers[pw_nocontrol] = 1
P_HomingAttack(s, mint.target2)
P_InstaThrust(s, R_PointToAngle2(s.x, s.y, mint.target2.x, mint.target2.y), R_PointToDist2(s.x, s.y, mint.target2.x, mint.target2.y)/4)
P_SetObjectMomZ(s, FixedMul(FixedMul(R_PointToDist2(s.x, s.y, mint.target2.x, mint.target2.y)/2, sin(R_PointToAngle2(0, (s.z - (s.height/3)), P_AproxDistance(s.x - mint.target2.x, s.y - mint.target2.y), mint.target2.z))) - s.momz, FU/2), true)
s.state = S_PLAY_ROLL
mint.spintrail = 1
end
if P_IsObjectOnGround(s) and p.speed > p.normalspeed
and (p.cmd.forwardmove or p.cmd.sidemove)
s.friction = FU
end;end;end)

COM_AddCommand("mint_cmd", function(p, arg)
local mint = p.minttable
local s = p.realmo
if p.exiting or not ActiveMint(s) return end
if arg==nil
CONS_Printf(p,"\n"+"Options: ["+"\x88"+"spinlaunch"+"\x80"+"|"+"\x85"+"burstdrop"+"\x80"+"|"+"\x82"+"voice"+"\x80"+"|"+"\x87"+"more"+"\x80"+"|"+"\x86"+"shields"+"\x80"+"|"+"\x83"+"airphys"+"\x80"+"] (e.g mint_cmd hello)")
S_StartSound(nil, sfx_ncspec, p)
elseif arg=="more"
CONS_Printf(p,"\n"+"More Options: ["+"\x85"+"combat"+"\x80"+"|"+"\x88"+"dance"+"\x80"+"|"+"\x89"+"pout"+"\x80"+"|"+"\x83"+"t-pose"+"\x80"+"|"+"\x8D"+"version"+"\x80"+"|"+"\x85"+"credits"+"\x80"+"]")
S_StartSound(nil, sfx_ncspec, p)
elseif arg=="spinlaunch"
CONS_Printf(p, "\n"+"JUMP: Spin Launch - The Spin Launch is Mint's primary ability, it is a charge-able double jump, but if you let go of JUMP immediately, you airdash instead.")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="burstdrop"
CONS_Printf(p, "\n"+"SPIN: Burst Drop - The Burst Drop is basically a faster Drop Dash, but if you hold JUMP before you land, you'll do a Burst Stomp.")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="voice" and p.mintvoice==2
COM_BufInsertText(p, "mintvoice 1")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="voice" and p.mintvoice==1
COM_BufInsertText(p, "mintvoice 2")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="airphys" and p.mintphys==2
COM_BufInsertText(p, "mintphys 1")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="airphys" and p.mintphys==1
COM_BufInsertText(p, "mintphys 2")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="version"
CONS_Printf(p, "\n"+"Current version: ["..Mint.Version.."]")
elseif arg=="shields"
CONS_Printf(p,"\n"+"Vanilla shields are binded to CUSTOM3.")
CONS_Printf(p,"\n"+"\x82"+"ATTRACTION\x80: lets you do a Homing Attack (SPIN) while AirDashing.")
CONS_Printf(p,"\x89"+"FORCE\x80: slows you down midair.")
CONS_Printf(p,"\x84"+"BUBBLE\x80: Burst Dropping on the ground does a bounce instead of the roll.")
CONS_Printf(p,"LIGHTNING: smites ANY enemy within range with CUSTOM3 midair, or shoots a devastating Hyper Beam holding SPIN while grounded!")
CONS_Printf(p,"\n"+"NOTE: both attacks remove your lightning shield upon enemy kill.")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="combat"
CONS_Printf(p,"\n"+"DODGE: Get hit while skidding to swiftly jump back.")
CONS_Printf(p,"\n"+"COMBO: Burst Dropping on enemies will let you do some sick tricks! The 3rd bounce deals 2x damage.")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="credits"
CONS_Printf(p, "\n"+"\x88"+"SSNeoMint\x80 - Lua, Sprites, GFX"+"\n")
CONS_Printf(p, "\x84"+"Jesus.B\x80 - Original Coder"+"\n")
CONS_Printf(p, "\x82"+"KevTSP\x80 - Early development help"+"\n")
CONS_Printf(p, "\x8F"+"DarkShade\x80 - CSS Art"+"\n")
CONS_Printf(p, "\x83"+"SpeedyM\x80 - Hyper Beam"+"\n")
S_StartSound(nil, sfx_s1a1, p)
elseif P_IsObjectOnGround(s) and (arg=="dance") and not p.speed
S_StartSound(nil, sfx_s1a1, p)
s.state = S_PLAY_MINTDANCE
mint.dance = true
elseif P_IsObjectOnGround(s) and (arg=="pout") and not p.speed
S_StartSound(nil, sfx_s1a1, p)
s.state = S_PLAY_MINTPOUT
elseif P_IsObjectOnGround(s) and (arg=="t-pose") and not p.speed
S_StartSound(nil, sfx_s1a1, p)
s.state = S_PLAY_MINTTPOSE
elseif arg=="re-"
CONS_Printf(p, "\n"+"re-")
S_StartSound(nil, sfx_s1a1, p)
elseif arg=="hello" or arg=="hi" or arg=="hey" or arg=="yo"
CONS_Printf(p, "\n"+"wassup B)")
S_StartSound(nil, sfx_s1a1, p)
else CONS_Printf(p, "\n"+"Couldn't execute. Either invalid or you need to stay still.")
S_StartSound(nil, sfx_adderr, p)
end;end)