//Used slots

freeslot(
	"S_BUZZBULLET1",
	"S_BUZZBULLET2",
	"SPR_BZFL",
	"SPR_BZAM",
	"SPR_BZAL",
	"SPR_BZCH",
	"SPR_BZNF",
	"MT_BUZZBOMBER",
	"MT_BUZZBULLET",
	"S_BUZZBOMBER1",
	"S_BUZZBOMBER2",	
	"S_BUZZBOMBER3",	
	"S_BUZZBOMBER4",	
	"S_BUZZBOMBERIDLE1",
	"S_BUZZBOMBERIDLE2",
	"S_BUZZBOMBERIDLE3",
	"S_BUZZBOMBERIDLE4",
	"S_BUZZBOMBER_RANGECHECK",
	"S_BUZZBOMBERFLAP1",
	"S_BUZZBOMBERFLAP2",
	"S_BUZZBOMBERFLAP3",
	"S_BUZZBOMBERFLAP4",
	"S_BUZZBOMBER_AIM1",
	"S_BUZZBOMBER_AIM2",
	"S_BUZZBOMBER_AIM3",
	"S_BUZZBOMBER_AIM4",
	"S_BUZZBOMBER_AIMLOOP1",
	"S_BUZZBOMBER_AIMLOOP2",
	"S_BUZZBOMBER_AIMLOOP3",
	"S_BUZZBOMBER_AIMLOOP4",
	"S_BUZZBOMBER_AIMLOOPREPEAT",
	"S_BUZZBOMBER_AIMCHARGE1",
	"S_BUZZBOMBER_AIMCHARGE2",
	"S_BUZZBOMBER_AIMCHARGE3",
	"S_BUZZBOMBER_AIMCHARGE4",
	"S_BUZZBOMBER_SHOOT",
	"S_BUZZBOMBER_SHOT1",
	"S_BUZZBOMBER_SHOT2",
	"S_BUZZBOMBER_SHOT3",
	"S_BUZZBOMBER_SHOT4",
	"S_BUZZBOMBER_PREPARE1",
	"S_BUZZBOMBER_PREPARE2",
	"S_BUZZBOMBER_PREPARE3",
	"S_BUZZBOMBER_PREPARE4",
	"S_BUZZBOMBERSETOFF1",
	"S_BUZZBOMBERSETOFF2",
	"S_BUZZBOMBERSETOFF3",
	"S_BUZZBOMBERSETOFF4",
	"S_BUZZBOMBERSETOFFREPEAT",
	"S_BUZZBOMBER_FLEE1",
	"S_BUZZBOMBER_FLEE2",
	"S_BUZZBOMBER_FLEE3",
	"S_BUZZBOMBER_FLEE4",
	"S_BUZZBOMBER_FLEEREPEAT",
	"S_BUZZBOMBER_TURN1",
	"S_BUZZBOMBER_TURN2",
	"S_BUZZBOMBER_TURN3",
	"S_BUZZBOMBER_TURN4",
	"S_BUZZBOMBER_TURN5",
	"S_BUZZBOMBER_TURN6"
)

//Buzz Bomber mobjinfo

mobjinfo[MT_BUZZBOMBER] = {
//$Category Genesis Badniks
//$Name Buzz Bomber
//$Sprite BZFLA2A8
	doomednum = 2476,
	spawnstate = S_BUZZBOMBERIDLE1,
	spawnhealth = 1,
	seestate = S_BUZZBOMBER1,
	seesound = sfx_none,
	reactiontime = 32,
	deathstate = S_XPLD_FLICKY,
	deathsound = sfx_pop,
	speed = 4,
	radius = 25*FRACUNIT,
	height = 50*FRACUNIT,
	mass = 100,
	flags = MF_ENEMY|MF_SHOOTABLE|MF_SPECIAL|MF_NOGRAVITY
}


states[S_BUZZBOMBERIDLE1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	action = A_Look,
	var1 = (2048<<16)+0,
	var2 = 0,
	nextstate = S_BUZZBOMBERIDLE2
}

states[S_BUZZBOMBERIDLE2] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	action = A_Look,
	var1 = (2048<<16)+0,
	var2 = 20,
	nextstate = S_BUZZBOMBERIDLE3
}

states[S_BUZZBOMBERIDLE3] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	action = A_Look,
	var1 = (2048<<16)+0,
	var2 = 0,
	nextstate = S_BUZZBOMBERIDLE4
}

states[S_BUZZBOMBERIDLE4] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 2,
	action = A_Look,
	var1 = (2048<<16)+0,
	var2 = 0,
	nextstate = S_BUZZBOMBERIDLE1
}

states[S_BUZZBOMBER_RANGECHECK] = {
	sprite = SPR_BZAM,
	frame = A,
	tics = 2,
	action = A_CheckTrueRange,
	var1 = (0<<16)+512,
	var2 = S_BUZZBOMBER_AIM1,
	nextstate = S_BUZZBOMBERIDLE1
}

states[S_BUZZBOMBER1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	action = A_DualAction,
	var1 = S_BUZZBOMBER_RANGECHECK,
	var2 = S_BUZZBOMBERFLAP1,
	nextstate = S_BUZZBOMBER2
}

states[S_BUZZBOMBER2] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	action = A_DualAction,
	var1 = S_BUZZBOMBER_RANGECHECK,
	var2 = S_BUZZBOMBERFLAP2,
	nextstate = S_BUZZBOMBER3
}

states[S_BUZZBOMBER3] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	action = A_DualAction,
	var1 = S_BUZZBOMBER_RANGECHECK,
	var2 = S_BUZZBOMBERFLAP3,
	nextstate = S_BUZZBOMBER4
}

states[S_BUZZBOMBER4] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 2,
	action = A_DualAction,
	var1 = S_BUZZBOMBER_RANGECHECK,
	var2 = S_BUZZBOMBERFLAP4,
	nextstate = S_BUZZBOMBER1
}

states[S_BUZZBOMBERFLAP1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBERFLAP2
}

states[S_BUZZBOMBERFLAP2] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBERFLAP3
}

states[S_BUZZBOMBERFLAP3] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBERFLAP4
}

states[S_BUZZBOMBERFLAP4] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBERFLAP1
}

states[S_BUZZBOMBER_AIM1] = {
	sprite = SPR_BZAM,
	frame = A,
	tics = 2,
	action = A_ForceStop,
	nextstate = S_BUZZBOMBER_AIM2
}

states[S_BUZZBOMBER_AIM2] = {
	sprite = SPR_BZAM,
	frame = B,
	tics = 2,
	action = A_ForceStop,
	nextstate = S_BUZZBOMBER_AIM3
}

states[S_BUZZBOMBER_AIM3] = {
	sprite = SPR_BZAM,
	frame = C,
	tics = 2,
	action = A_ForceStop,
	nextstate = S_BUZZBOMBER_AIM4
}

states[S_BUZZBOMBER_AIM4] = {
	sprite = SPR_BZAM,
	frame = D,
	tics = 2,
	action = A_ForceStop,
	nextstate = S_BUZZBOMBER_AIMLOOP1
}

states[S_BUZZBOMBER_AIMLOOP1] = {
	sprite = SPR_BZAL,
	frame = A,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMLOOP2
}

states[S_BUZZBOMBER_AIMLOOP2] = {
	sprite = SPR_BZAL,
	frame = B,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMLOOP3
}

states[S_BUZZBOMBER_AIMLOOP3] = {
	sprite = SPR_BZAL,
	frame = C,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMLOOP4
}

states[S_BUZZBOMBER_AIMLOOP4] = {
	sprite = SPR_BZAL,
	frame = D,
	tics = 1,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMLOOPREPEAT
}

states[S_BUZZBOMBER_AIMLOOPREPEAT] = {
	sprite = SPR_BZAL,
	frame = D,
	tics = 1,
	action = A_Repeat,
	var1 = 2,
	var2 = S_BUZZBOMBER_AIMLOOP1,
	nextstate = S_BUZZBOMBER_AIMCHARGE1
}

states[S_BUZZBOMBER_AIMCHARGE1] = {
	sprite = SPR_BZCH,
	frame = A,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMCHARGE2
}

states[S_BUZZBOMBER_AIMCHARGE2] = {
	sprite = SPR_BZCH,
	frame = B,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMCHARGE3
}

states[S_BUZZBOMBER_AIMCHARGE3] = {
	sprite = SPR_BZCH,
	frame = C,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_AIMCHARGE4
}

states[S_BUZZBOMBER_AIMCHARGE4] = {
	sprite = SPR_BZCH,
	frame = D,
	tics = 2,
	action = A_Repeat,
	var1 = 2,
	var2 = S_BUZZBOMBER_AIMCHARGE1,
	nextstate = S_BUZZBOMBER_SHOOT
}

states[S_BUZZBOMBER_SHOOT] = {
	sprite = SPR_BZCH,
	frame = A,
	tics = 1,
	action = A_FireShot,
	var1 = MT_BUZZBULLET,
	var2 = -70,
	nextstate = S_BUZZBOMBER_SHOT1
}

states[S_BUZZBOMBER_SHOT1] = {
	sprite = SPR_BZCH,
	frame = A,
	tics = 1,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_SHOT2
}

states[S_BUZZBOMBER_SHOT2] = {
	sprite = SPR_BZCH,
	frame = B,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_SHOT3
}

states[S_BUZZBOMBER_SHOT3] = {
	sprite = SPR_BZCH,
	frame = C,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_SHOT4
}

states[S_BUZZBOMBER_SHOT4] = {
	sprite = SPR_BZCH,
	frame = D,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_PREPARE1
}

states[S_BUZZBOMBER_SHOT4] = {
	sprite = SPR_BZCH,
	frame = D,
	tics = 2,
	action = A_FaceTarget,
	nextstate = S_BUZZBOMBER_PREPARE1
}

states[S_BUZZBOMBER_PREPARE1] = {
	sprite = SPR_BZNF,
	frame = A,
	tics = 2,
	nextstate = S_BUZZBOMBER_PREPARE2
}

states[S_BUZZBOMBER_PREPARE2] = {
	sprite = SPR_BZNF,
	frame = B,
	tics = 2,
	nextstate = S_BUZZBOMBER_PREPARE3
}

states[S_BUZZBOMBER_PREPARE3] = {
	sprite = SPR_BZNF,
	frame = C,
	tics = 2,
	nextstate = S_BUZZBOMBER_PREPARE4
}

states[S_BUZZBOMBER_PREPARE4] = {
	sprite = SPR_BZNF,
	frame = D,
	tics = 2,
	nextstate = S_BUZZBOMBERSETOFF1
}

states[S_BUZZBOMBERSETOFF1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	nextstate = S_BUZZBOMBERSETOFF2
}

states[S_BUZZBOMBERSETOFF2] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	nextstate = S_BUZZBOMBERSETOFF3
}

states[S_BUZZBOMBERSETOFF3] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	nextstate = S_BUZZBOMBERSETOFF4
}

states[S_BUZZBOMBERSETOFF4] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 1,
	nextstate = S_BUZZBOMBERSETOFFREPEAT
}

states[S_BUZZBOMBERSETOFFREPEAT] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 1,
	action = A_Repeat,
	var1 = 2,
	var2 = S_BUZZBOMBERSETOFF1,
	nextstate = S_BUZZBOMBER_FLEE1
}

states[S_BUZZBOMBER_FLEE1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBER_FLEE2
}

states[S_BUZZBOMBER_FLEE2] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBER_FLEE3
}

states[S_BUZZBOMBER_FLEE3] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBER_FLEE4
}

states[S_BUZZBOMBER_FLEE4] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 1,
	action = A_Thrust,
	var1 = 35,
	var2 = 1,
	nextstate = S_BUZZBOMBER_FLEEREPEAT
}

states[S_BUZZBOMBER_FLEEREPEAT] = {
	sprite = SPR_BZFL,
	frame = D,
	tics = 1,
	action = A_Repeat,
	var1 = 7,
	var2 = S_BUZZBOMBER_FLEE1,
	nextstate = S_BUZZBOMBER_TURN1
}

states[S_BUZZBOMBER_TURN1] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 1,
	action = A_ChangeAngleRelative,
	var1 = 45,
	var2 = 45,
	nextstate = S_BUZZBOMBER_TURN2
}

states[S_BUZZBOMBER_TURN2] = {
	sprite = SPR_BZFL,
	frame = A,
	tics = 2,
	action = A_Thrust,
	var1 = 25,
	var2 = 1,
	nextstate = S_BUZZBOMBER_TURN3
}

states[S_BUZZBOMBER_TURN3] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 1,
	action = A_ChangeAngleRelative,
	var1 = 45,
	var2 = 45,
	nextstate = S_BUZZBOMBER_TURN4
}

states[S_BUZZBOMBER_TURN4] = {
	sprite = SPR_BZFL,
	frame = B,
	tics = 2,
	action = A_Thrust,
	var1 = 15,
	var2 = 1,
	nextstate = S_BUZZBOMBER_TURN5
}

states[S_BUZZBOMBER_TURN5] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 1,
	action = A_ChangeAngleRelative,
	var1 = 45,
	var2 = 45,
	nextstate = S_BUZZBOMBER_TURN6
}

states[S_BUZZBOMBER_TURN6] = {
	sprite = SPR_BZFL,
	frame = C,
	tics = 2,
	action = A_Thrust,
	var1 = 25,
	var2 = 1,
	nextstate = S_BUZZBOMBER1
}