freeslot(
	"MT_MBUZZSAW",
	"MT_PBUZZSAW",
	"S_MSAW1",
	"S_MSAW2",
	"S_MSAW3",
	"S_MSAW4",
	"S_MSAW5",
	"S_MSAW6",
	"S_MSAW7",
	"S_MSAW8",
	"S_MSAW9",
	"S_MSAW10",
	"S_MSAW11",
	"S_MSAW12",
	"S_MSAW13",
	"S_MSAW14",
	"S_MSAW15",
	"S_MSAW16",
	"S_MSAW17",
	"S_MSAW18",
	"S_MSAW19",
	"S_MSAW20",
	"S_MSAW21",
	"S_MSAW22",
	"S_MSAW23",
	"S_MSAW24",
	"S_MSAW25",
	"S_MSAW26",
	"S_MSAW27",
	"S_MSAW28",
	"S_MSAW29",
	"S_MSAW30",
	"S_MSAW31",
	"S_MSAW32",
	"S_MSAW33",
	"S_MSAW34",
	"S_MSAW35",
	"S_MSAW36",
	"S_MSAW37",
	"S_MSAW38",
	"S_MSAW39",
	"S_MSAW40",
	"S_PSAW1",
	"S_PSAW2",
	"S_PSAW3",
	"S_PSAW4",
	"S_PSAW5",
	"S_PSAW6",
	"S_PSAW7",
	"S_PSAW8",
	"S_PSAW9",
	"S_PSAW10",
	"S_PSAW11",
	"S_PSAW12",
	"S_PSAW13",
	"S_PSAW14",
	"S_PSAW15",
	"S_PSAW16",
	"S_PSAW17",
	"S_PSAW18",
	"S_PSAW19",
	"S_PSAW20",
	"S_PSAW21",
	"S_PSAW22",
	"S_PSAW23",
	"S_PSAW24",
	"S_PSAW25",
	"S_PSAW26",
	"S_PSAW27",
	"S_PSAW28",
	"S_PSAW29",
	"S_PSAW30",
	"S_PSAW31",
	"S_PSAW32",
	"S_PSAW33",
	"S_PSAW34",
	"S_PSAW35",
	"S_PSAW36",
	"S_PSAW37",
	"S_PSAW38",
	"S_PSAW39",
	"S_PSAW40",
	"SPR_MSAW",
	"SPR_PSAW",
	"sfx_FUTURE",
	"sfx_PAST",
	"sfx_BUZZ"
)


mobjinfo[MT_MBUZZSAW] = {
//$Category Metallic Madness
//$Name Buzzsaw (Present)
//$Sprite MSAWA0
	doomednum = 2050,
	spawnstate = S_MSAW1,
	seestate = S_MSAW1,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 12*FRACUNIT,
	height = 40*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOCLIP|MF_PAPERCOLLISION|MF_PAIN
}

states[S_MSAW1] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW2}
states[S_MSAW2] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW3}
states[S_MSAW3] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW4}
states[S_MSAW4] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW5}
states[S_MSAW5] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW6}
states[S_MSAW6] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW7}
states[S_MSAW7] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW8}
states[S_MSAW8] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW9}
states[S_MSAW9] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW10}
states[S_MSAW10] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW11}
states[S_MSAW11] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW12}
states[S_MSAW12] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW13}
states[S_MSAW13] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW14}
states[S_MSAW14] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW15}
states[S_MSAW15] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW16}
states[S_MSAW16] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW17}
states[S_MSAW17] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW18}
states[S_MSAW18] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW19}
states[S_MSAW19] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW20}
states[S_MSAW20] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW21}
states[S_MSAW21] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW22}
states[S_MSAW22] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW23}
states[S_MSAW23] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW24}
states[S_MSAW24] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW25}
states[S_MSAW25] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW26}
states[S_MSAW26] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW27}
states[S_MSAW27] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW28}
states[S_MSAW28] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW29}
states[S_MSAW29] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW30}
states[S_MSAW30] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW31}
states[S_MSAW31] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW32}
states[S_MSAW32] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW33}
states[S_MSAW33] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW34}
states[S_MSAW34] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW35}
states[S_MSAW35] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW36}
states[S_MSAW36] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW37}
states[S_MSAW37] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW38}
states[S_MSAW38] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW39}
states[S_MSAW39] = {SPR_MSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_MSAW40}
states[S_MSAW40] = {SPR_MSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_MSAW1}

addHook("MobjThinker", function(mobj)
	P_SetObjectMomZ(mobj, 0*FRACUNIT)
	mobj.scale = 2*FRACUNIT
	S_StartSound(mobj, sfx_buzz, nil)
	if mobj.state <= S_MSAW20
		P_InstaThrust(mobj, mobj.angle,8*FRACUNIT)
	end
	if mobj.state > S_MSAW20
		P_InstaThrust(mobj, mobj.angle,-8*FRACUNIT)
	end
end,MT_MBUZZSAW
)

mobjinfo[MT_PBUZZSAW] = {
//$Category Metallic Madness
//$Name Buzzsaw (Past)
//$Sprite PSAWA0
	doomednum = 2051,
	spawnstate = S_PSAW1,
	seestate = S_PSAW1,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 12*FRACUNIT,
	height = 40*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOCLIP|MF_PAPERCOLLISION|MF_PAIN
}

states[S_PSAW1] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW2}
states[S_PSAW2] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW3}
states[S_PSAW3] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW4}
states[S_PSAW4] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW5}
states[S_PSAW5] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW6}
states[S_PSAW6] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW7}
states[S_PSAW7] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW8}
states[S_PSAW8] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW9}
states[S_PSAW9] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW10}
states[S_PSAW10] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW11}
states[S_PSAW11] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW12}
states[S_PSAW12] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW13}
states[S_PSAW13] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW14}
states[S_PSAW14] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW15}
states[S_PSAW15] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW16}
states[S_PSAW16] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW17}
states[S_PSAW17] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW18}
states[S_PSAW18] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW19}
states[S_PSAW19] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW20}
states[S_PSAW20] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW21}
states[S_PSAW21] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW22}
states[S_PSAW22] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW23}
states[S_PSAW23] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW24}
states[S_PSAW24] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW25}
states[S_PSAW25] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW26}
states[S_PSAW26] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW27}
states[S_PSAW27] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW28}
states[S_PSAW28] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW29}
states[S_PSAW29] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW30}
states[S_PSAW30] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW31}
states[S_PSAW31] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW32}
states[S_PSAW32] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW33}
states[S_PSAW33] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW34}
states[S_PSAW34] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW35}
states[S_PSAW35] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW36}
states[S_PSAW36] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW37}
states[S_PSAW37] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW38}
states[S_PSAW38] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW39}
states[S_PSAW39] = {SPR_PSAW,  FF_PAPERSPRITE|A, 2, A_None, 0, 0, S_PSAW40}
states[S_PSAW40] = {SPR_PSAW,  FF_PAPERSPRITE|B, 2, A_None, 0, 0, S_PSAW1}

addHook("MobjThinker", function(mobj)
	P_SetObjectMomZ(mobj, 0*FRACUNIT)
	mobj.scale = 2*FRACUNIT
	S_StartSound(mobj, sfx_buzz, nil)
	if mobj.state <= S_PSAW20
		P_InstaThrust(mobj, mobj.angle,8*FRACUNIT)
	end
	if mobj.state > S_PSAW20
		P_InstaThrust(mobj, mobj.angle,-8*FRACUNIT)
	end
end,MT_PBUZZSAW
)