//Freeslots
freeslot("S_VMKNUCKLESDIGDOWN","S_VMKNUCKLESDIGUP","S_VMKNUXDIG","MT_VMKROCKBLAST")

states[S_VMKNUCKLESDIGDOWN] = {
	sprite = SPR_PLAY,
	frame = SPR2_FLT_|FF_ANIMATE,
	tics = -1,
	var1 = 4,
	var2 = 1,
	nextstate = S_VMKNUCKLESDIGDOWN
}

states[S_VMKNUCKLESDIGUP] = {
	sprite = SPR_PLAY,
	frame = SPR2_TWIN|FF_ANIMATE,
	tics = 24,
	var1 = 4,
	var2 = 1,
	nextstate = S_PLAY_FALL
}

states[S_VMKNUXDIG] = {
	sprite = SPR_MNUD,
	frame = FF_ANIMATE,
	tics = -1,
	var1 = 5,
	var2 = 2,
	nextstate = S_VMKNUXDIG
}

mobjinfo[MT_VMKROCKBLAST] = {
	spawnstate = S_ROCKCRUMBLEA,
	spawnhealth = 1000,
	radius = 8*FRACUNIT,
	height = 16*FRACUNIT,
	mass = 0,
	damage = 0,
	name = "rock blast",
	flags = MF_MISSILE|MF_BOUNCE|MF_GRENADEBOUNCE
}

//Punch by Jesus.B
addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and not player.exiting
and P_IsObjectOnGround(player.mo)
and not (P_PlayerInPain(player) or (player.playerstate == PST_DEAD))
and player.mo.state != S_PLAY_MELEE
and player.mo.state != S_PLAY_MELEE_FINISH
and player.cmd.buttons & BT_CUSTOM1
and not player.vmkc1
and not player.vmdropdash

player.mo.state = S_PLAY_MELEE
player.powers[pw_strong] = $|STR_ANIM|STR_PUNCH|STR_SPRING
player.cmd.forwardmove = 60
P_Thrust(player.mo,player.mo.angle,25*FRACUNIT)
P_SetObjectMomZ(player.mo,2*FRACUNIT,true)
S_StartSound(player.mo,sfx_s3k42)
end
end)

//Dig by Jesus.B

local function mkrockblast(player)
	for i = 1, 17
		local rock = P_SpawnPlayerMissile(player.mo, MT_VMKROCKBLAST, MF2_SCATTER)
		rock.tics = 100
		rock.frame = A
		P_InstaThrust(rock, i*ANGLE_22h, 5*player.mo.scale)
		rock.momz = 16*P_MobjFlip(player.mo)*player.mo.scale
		rock.eflags = player.mo.eflags & MFE_VERTICALFLIP
	end
end

addHook ("PlayerThink",function(player)
if player.knuxvmdigcd == nil then player.knuxvmdigcd = 4 return end
if player.mo.skin == "vmknux"
and not player.exiting
and P_IsObjectOnGround(player.mo)
and not (P_PlayerInPain(player) or (player.playerstate == PST_DEAD))
and (player.cmd.buttons & BT_CUSTOM2)
and not player.weapondelay
and not player.vmdig
and player.mo.state != S_PLAY_MELEE
and player.mo.state != S_PLAY_MELEE_FINISH
and player.mo.state != S_PLAY_SUPER_TRANS1
and player.mo.state != S_PLAY_SUPER_TRANS2
and player.mo.state != S_PLAY_SUPER_TRANS3
and player.mo.state != S_PLAY_SUPER_TRANS4
and player.mo.state != S_PLAY_SUPER_TRANS5
and player.mo.state != S_PLAY_SUPER_TRANS6
and not player.powers[pw_carry]
and not player.vmkdigcd
and not player.actionstate
and not player.hampunch
and not (player.pflags & PF_SLIDING)
and not player.guard
and not player.airdodge
and not player.vmdropdash

player.vmdig = true
player.weapondelay = TICRATE*5
S_StartSound(player.mo,sfx_s3kccs)
player.pflags = $ & ~PF_SPINNING
player.pflags = $ & ~PF_STARTDASH
player.mo.state = S_VMKNUXDIG
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and not player.exiting
and not P_IsObjectOnGround(player.mo)
and not (P_PlayerInPain(player) or (player.playerstate == PST_DEAD))
and (player.cmd.buttons & BT_CUSTOM2)
and not player.weapondelay
and not player.vmdigland
and not (player.pflags & PF_THOKKED)
and player.mo.state != S_PLAY_CLIMB
and player.mo.state != S_PLAY_CLING
and player.mo.state != S_PLAY_RIDE
and player.mo.state != S_PLAY_SUPER_TRANS1
and player.mo.state != S_PLAY_SUPER_TRANS2
and player.mo.state != S_PLAY_SUPER_TRANS3
and player.mo.state != S_PLAY_SUPER_TRANS4
and player.mo.state != S_PLAY_SUPER_TRANS5
and player.mo.state != S_PLAY_SUPER_TRANS6
and not player.vmkdigcd
and not player.actionstate
and not player.hampunch
and not player.guard
and not player.airdodge
and not player.powers[pw_carry]
and not player.vmdropdash

player.vmdigland = true
P_SetObjectMomZ(player.mo,-20*FRACUNIT,true)
S_StartSound(player.mo, sfx_zoom)
player.pflags = $ & ~PF_JUMPED
player.mo.state = S_VMKNUCKLESDIGDOWN
player.pflags = $ & ~PF_GLIDING
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and not player.exiting
and P_IsObjectOnGround(player.mo)
and player.vmdigland == true
and not player.vmdig

player.vmdigland = false
player.vmdig = true
player.weapondelay = TICRATE*5
S_StartSound(player.mo,sfx_s3kccs)
player.pflags = $ & ~PF_SPINNING
player.pflags = $ & ~PF_STARTDASH
player.mo.state = S_VMKNUXDIG
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and player.weapondelay

player.jumpfactor = 0*FRACUNIT
player.charability2 = CA2_NONE
player.charflags = $ | SF_NOSKID
player.normalspeed = 24*FRACUNIT
player.mo.flags = $|MF_NOCLIPTHING
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and not player.weapondelay
and not (player.pflags & PF_THOKKED)

player.mo.state = S_PLAY_SPRING
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.pflags = $|PF_JUMPED
P_SetObjectMomZ(player.mo,8*FRACUNIT,true)
player.pflags = $|PF_THOKKED
S_StartSound(player.mo,sfx_s3k82)
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
player.vmkdigcd = true
player.pflags = $|PF_NOJUMPDAMAGE
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and player.weapondelay
and player.cmd.buttons & BT_JUMP
and not (player.pflags & PF_THOKKED)
and not player.vmkjump

player.mo.state = S_VMKNUCKLESDIGUP
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.pflags = $|PF_JUMPED
P_SetObjectMomZ(player.mo,8*FRACUNIT,true)
player.weapondelay = TICRATE*0
player.pflags = $|PF_THOKKED
S_StartSound(player.mo,sfx_s3k82)
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
mkrockblast(player)
player.pflags = $|PF_NOJUMPDAMAGE
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and player.weapondelay
and player.cmd.buttons & BT_SPIN
and not (player.pflags & PF_THOKKED)
and not player.vmkjump

player.mo.state = S_VMKNUCKLESDIGUP
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.pflags = $|PF_JUMPED
P_SetObjectMomZ(player.mo,8*FRACUNIT,true)
player.weapondelay = TICRATE*0
player.pflags = $|PF_THOKKED
S_StartSound(player.mo,sfx_s3k82)
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
player.pflags = $|PF_NOJUMPDAMAGE
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and player.weapondelay
and not P_IsObjectOnGround(player.mo)
and not P_PlayerInPain(player)
and player.playerstate == PST_LIVE

player.mo.state = S_VMKNUCKLESDIGUP
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.pflags = $|PF_JUMPED
player.pflags = $|PF_NOJUMPDAMAGE
P_SetObjectMomZ(player.mo,8*FRACUNIT,true)
player.weapondelay = TICRATE*0
player.pflags = $|PF_THOKKED
S_StartSound(player.mo,sfx_s3k82)
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig == true
and player.weapondelay
and player.powers[pw_carry]

player.mo.state = S_VMKNUCKLESDIGUP
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.pflags = $|PF_JUMPED
P_SetObjectMomZ(player.mo,8*FRACUNIT,true)
player.weapondelay = TICRATE*0
player.pflags = $|PF_THOKKED
S_StartSound(player.mo,sfx_s3k82)
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.mo.eflags & MFE_SPRUNG
and player.vmdigland == true

player.mo.state = S_PLAY_SPRING
player.vmdig = false
player.vmdigland = false
player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.weapondelay = TICRATE*0
player.pflags = $|PF_THOKKED
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.mo.flags = $ & ~MF_NOCLIPTHING
player.vmkdigcd = true
P_SetObjectMomZ(player.mo,2*FRACUNIT,true)
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdigland == true
and P_PlayerInPain(player)

player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdigland == true
and player.playerstate == PST_DEAD

player.jumpfactor = skins[player.mo.skin].jumpfactor
player.normalspeed = skins[player.mo.skin].normalspeed
player.vmdig = false
player.vmdigland = false
player.charability2 = CA2_SPINDASH
player.charflags = $ & ~SF_NOSKID
player.vmkdigcd = true
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmdig

player.height = 8*FRACUNIT
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and not player.vmdig

player.height = 48*FRACUNIT
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmkdigcd
and not (leveltime%35)

player.knuxvmdigcd = $-1
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.vmkdigcd
and player.knuxvmdigcd <= 0

player.knuxvmdigcd = 4
player.vmkdigcd = false
S_StartSound(player.mo, sfx_s3k8c)
end
end)

addHook("MobjDamage", function(target, inflictor, source, damage, damagetype)
	if target.player and target.player.vmdig and target.skin == "vmknux"
		return true
	end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and (player.mo.state == S_VMKNUCKLESDIGDOWN)

player.powers[pw_strong] = $|STR_ANIM|STR_STOMP|STR_HEAVY|STR_FLOOR
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and (player.mo.state == S_VMKNUCKLESDIGUP)

player.powers[pw_strong] = $|STR_ANIM|STR_UPPER|STR_CEILING
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.cmd.buttons & BT_JUMP

player.vmkjump = true
else
player.vmkjump = false
end
end)

//Rising Drill
addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and not (player.pflags & PF_THOKKED) and not (player.pflags & PF_GLIDING) and not (player.pflags & PF_SLIDING)
and (player.cmd.buttons & BT_CUSTOM1)
and not player.vmdig and not player.vmdigland
and player.mo.state != S_PLAY_MELEE and player.mo.state != S_PLAY_MELEE_FINISH
and player.mo.state != S_PLAY_CLIMB and player.mo.state != S_PLAY_CLING
and player.mo.state != S_PLAY_SUPER_TRANS1
and player.mo.state != S_PLAY_SUPER_TRANS2
and player.mo.state != S_PLAY_SUPER_TRANS3
and player.mo.state != S_PLAY_SUPER_TRANS4
and player.mo.state != S_PLAY_SUPER_TRANS5
and player.mo.state != S_PLAY_SUPER_TRANS6
and not player.guard and not player.airdodge
and not P_IsObjectOnGround(player.mo) and not player.powers[pw_carry]
and not P_PlayerInPain(player) and player.playerstate != PST_DEAD
and not player.vmdropdash and not player.vmkc1

player.mo.state = S_VMKNUCKLESDIGUP
P_SetObjectMomZ(player.mo,15*FRACUNIT,false)
player.pflags = $|PF_THOKKED
player.pflags = $|PF_NOJUMPDAMAGE
player.pflags = $|PF_JUMPED
S_StartSound(player.mo,sfx_s3k42)
end
end)

addHook ("PlayerThink",function(player)
if player.mo.skin == "vmknux"
and player.cmd.buttons & BT_CUSTOM1

player.vmkc1 = true
else
player.vmkc1 = false
end
end)