//brute projectile//
freeslot(
"MT_BRUTEPROJECTILE",
"S_BRUTEPROJECTILESHOT",
"SPR_MPRJ")

mobjinfo[MT_BRUTEPROJECTILE] = {
	doomednum = 3000,
	radius = 16*FRACUNIT,
	height = 16*FRACUNIT,
	speed = 40*FRACUNIT,
	spawnstate = S_BRUTEPROJECTILESHOT,
	seesound = sfx_none,
	attacksound	= sfx_none,
	reactiontime = 8,
	spawnhealth = 1,
	painchance = 200,
	mass = 100,
	damage = 1,
	dispoffset = 0,
	flags = MF_NOBLOCKMAP|MF_MISSILE|MF_NOGRAVITY
}

states[S_BRUTEPROJECTILESHOT] = {
	sprite = SPR_MPRJ, frame = FF_ANIMATE|FF_FULLBRIGHT|A, var1 = 14, var2 = 1, tics = 14, nextstate = S_BRUTEPROJECTILESHOT}

-- -- Brute Crawla -- --
freeslot(
"MT_BRUTECRAWLA", "MT_BRUTECRAWLA2", 
"S_BRUTELOOK", "S_BRUTEMOVE", "S_BRUTEPAIN", "S_BRUTESTATIONED", "S_BRUTEATTACK",
"SPR_BRSS", "SPR_BRS2",
"sfx_clank","sfx_ready")

sfxinfo[sfx_clank] = {
	singular = true,
	priority = 64,
	flags = SF_X4AWAYSOUND|SF_X8AWAYSOUND
}

sfxinfo[sfx_ready] = {
	singular = true,
	priority = 64,
	flags = SF_X4AWAYSOUND|SF_X8AWAYSOUND
}

mobjinfo[MT_BRUTECRAWLA] = {
	--$Category Broadside Cliffs
	--$Name Brute Crawla
	--$Sprite BRSSA1
	doomednum = 2303,
	radius = 30*FRACUNIT,
	height = 60*FRACUNIT,
	spawnstate = S_BRUTELOOK,
	spawnhealth = 2,
	reactiontime = 20,
	seestate = S_BRUTEMOVE,
	painstate = S_BRUTEPAIN,
	painsound = sfx_dmpain,
	deathstate = S_XPLD_FLICKY,
	deathsound = sfx_pop,
	mass = 20*FRACUNIT,
	speed = 5,
	flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE
}

// -- states -- //
states[S_BRUTELOOK] = {
	sprite = SPR_BRSS, frame = A, tics = 5, action = A_Look, var1 = 0+3750<<16, var2 = 1, nextstate = S_BRUTELOOK}

states[S_BRUTEMOVE] = {
	sprite = SPR_BRSS, frame = FF_ANIMATE|B, var1 = 10, var2 = 1, tics = 10, nextstate = S_BRUTEMOVE}

states[S_BRUTEPAIN] = {
	sprite = SPR_BRSS, frame = A, action = A_Pain, tics = 15, nextstate = S_BRUTELOOK}

// -- thinkers -- //	
addHook("MobjThinker", function(mob)
	if mob.state == S_BRUTELOOK then
		return
	end
	
	local brute_difference = abs(mob.target.z-mob.z)/FRACUNIT
	local brute_param = mob.spawnpoint.extrainfo
	
	if brute_param == 2 then
		if (mob.state == S_BRUTEMOVE and brute_difference < 128) then
			A_Chase(mob,3)
		end
	else
		if (mob.state == S_BRUTEMOVE and brute_difference < 256) then
			A_Chase(mob,3)
		end
	end
end
,MT_BRUTECRAWLA)

mobjinfo[MT_BRUTECRAWLA2] = {
	--$Category Broadside Cliffs
	--$Name Brute Crawla(alt)
	--$Sprite BRS2A1
	doomednum = 3001,
	radius = 30*FRACUNIT,
	height = 60*FRACUNIT,
	spawnstate = S_BRUTESTATIONED,
	spawnhealth = 1,
	reactiontime = 20,
	seestate = S_BRUTEATTACK,
	painchance = 1024,
	deathstate = S_XPLD_FLICKY,
	raisestate = MT_BRUTEPROJECTILE,
	deathsound = sfx_pop,
	mass = 20*FRACUNIT,
	speed = 2,
	flags = MF_ENEMY|MF_SPECIAL|MF_SHOOTABLE
}

//--states--//
states[S_BRUTESTATIONED] = {
	sprite = SPR_BRS2, frame = A, tics = 5, action = A_Look, var1 = 0+3750<<16, var2 = 1, nextstate = S_BRUTESTATIONED}

states[S_BRUTEATTACK] = {
	sprite = SPR_BRS2, frame = A, tics = 140, nextstate = S_BRUTESTATIONED}

//--thinkers--//
addHook("MobjThinker", function(mob)
	if mob.state == S_BRUTESTATIONED then
		return
	end
	
	local brute2_difference = abs(mob.target.z-mob.z)/FRACUNIT
	
	if mob.tics == 140 then
		if brute2_difference < 256 then
			S_StartSound(nil,sfx_ready)
			mob.speed = 0
		end
			
	elseif mob.tics > 100 then
		mob.speed = 2
		
	elseif mob.tics == 100 then
		if brute2_difference < 256 then
			A_ShootBullet(mob)
			S_StartSound(nil,sfx_clank)
		end
			
	else
		A_Chase(mob,1)
	end
end
,MT_BRUTECRAWLA2)