freeslot(
	"MT_MINUSCLASSIC",
	"S_DIGGER_STND",
	"S_DIGGER_DIGGING",
	"S_DIGGER_UP",
	"S_DIGGER_DOWN",
	"SPR_MNU2"
)
//original code by "S" for Minvis the Prototype.
//Modified into 2.0 Minus by Glaber
mobjinfo[MT_MINUSCLASSIC] = {
	//$Name "Old Minus"
	//$Sprite MNU2A1
	//$Category Retro Enemies
	doomednum = 2026,
	spawnstate = S_DIGGER_STND,
	spawnhealth = 1,
	attacksound = sfx_s3k82,
	seestate = S_DIGGER_DIGGING,
	painsound = sfx_None,
	painstate = S_DIGGER_DOWN,
	deathstate = S_XPLD_FLICKY,
	deathsound =  sfx_pop,
	reactiontime = 32*TICRATE,
	activesound = sfx_mindig,
	speed = 12,
	radius = 24*FRACUNIT,
	height = 32*FRACUNIT,
	flags = MF_ENEMY|MF_SHOOTABLE|MF_SPECIAL
}


states[S_DIGGER_STND] = {SPR_NULL, A, 1, A_Look, 1, 0, S_DIGGER_STND}
states[S_DIGGER_DIGGING] = {SPR_MNU2, Q, 1, function(mo)
	mo.flags = $&~(MF_SPECIAL|MF_SHOOTABLE)
	if not (mo.target)
		A_Look(mo, 1)
	else
			mo.flags = $|MF_NOCLIPTHING
			A_Chase(mo, 3)
			mo.flags = $&~MF_NOCLIPTHING
			A_GhostMe(mo)
			if (P_AproxDistance(mo.target.x-mo.x, mo.target.y-mo.y) < mo.radius)
			--and (abs(mo.target.z - mo.z) < mo.height)
				mo.state = S_DIGGER_UP
				A_PlayAttackSound(mo)
				mo.momz = P_MobjFlip(mo)*10*FRACUNIT
				mo.flags = $|(MF_SPECIAL|MF_SHOOTABLE)				
			end
		if leveltime % 15 == 0
			A_PlayActiveSound(mo)
		end
	end
end, 0, 0, S_DIGGER_DIGGING}		
states[S_DIGGER_UP] = {SPR_MNU2, A|FF_ANIMATE, -1, nil, 7, 1, S_DIGGER_DOWN}
states[S_DIGGER_DOWN] = {SPR_MNU2, I|FF_ANIMATE, -1, nil, 7, 1, S_DIGGER_DIGGING}

addHook("MobjThinker", function(mo)
	if not (mo and mo.valid) then return end
	if mo.state == S_DIGGER_UP	
		if (mo.eflags & MFE_VERTICALFLIP)
			if mo.z-mo.momz <= mo.floorz+mo.height
				A_FlipGravity(mo)
				//mo.state = S_DIGGER_DOWN
			end
	end
		if (P_MobjFlip(mo)*mo.momz < 0)
			mo.state = S_DIGGER_DOWN
		end
	end
	if mo.state == S_DIGGER_DOWN
		if P_IsObjectOnGround(mo)
			A_PlayAttackSound(mo)
			mo.state = S_DIGGER_DIGGING
		end
	end
end, MT_MINUSCLASSIC)
