ACTOR CacoSP : RandomSpawner Replaces Cacodemon
{
	DropItem "MiniCaco", 255, 1
	DropItem "NormalCaco", 255, 50
	DropItem "Nada", 255, 2
}

ACTOR MiniCaco : Cacodemon 
{
	Health 150
	Radius 22
	Height 42
	Mass 400
	Speed 8
	Scale 0.8
	Gravity 0.1
	PainChance 128
	Monster
	+FLOAT +NOGRAVITY +FORCEXYBILLBOARD
	States
	{
Spawn:
		HEAD A 10 A_Look
	Loop
See:
		HEAD A 3 A_Chase
	Loop
Missile:
		fast a 0 A_Jump(50,"MultiMissile")
		HEAD B 5 A_FaceTarget
		HEAD C 5 A_FaceTarget
		tnt1 aaaaa 0 a_headattack
		HEAD D 5 BRIGHT A_HeadAttack
	Goto See
MultiMissile:
		HEAD B 10 A_FaceTarget
		HEAD C 15 A_FaceTarget
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		HEAD D 8
		HEAD CCCBB 2
	Goto See
		
Pain:
		boss a 0 a_facetarget
		boss a 0 a_recoil(2)
		boss a 0 a_changeflag(FLOAT,0)
		boss a 0 a_changeflag(NOGRAVITY,0)
		HEAD E 3
		HEAD E 3 A_Pain
		HEAD F 6
		boss a 0 a_changeflag(FLOAT,1)
		boss a 0 a_changeflag(NOGRAVITY,1)
	Goto See
Death:
		boss a 0 a_changeflag(FLOAT,0)
		boss a 0 a_changeflag(NOGRAVITY,0)
		HEAD G 8 A_NoBlocking
		HEAD H 8 A_Scream
		BOSS A 0 A_CheckFloor("NormalDeath")
lup:
		boss a 0 A_ChangeVelocity(0,0,-2)
		HEAD IIIIIIIIIIIIIIIIII 4 A_CheckFloor("Falo")
Falo:
		boss a 0 A_ChangeVelocity(0,0,3)
		BOSS a 0 a_changeflag(FORCEXYBILLBOARD,0)
		HEAD J 4
		boss a 0 A_ChangeVelocity(0,0,-7)
		HEAD KL 5
		boss a 0 a_setscale(0.8,0.6)
		HEAD L -1 A_SetFloorClip
	Stop
		
NormalDeath:
		HEAD IJ 8
		HEAD KL 8
		boss a 0 a_setscale(0.8,0.6)
		HEAD L -1 A_SetFloorClip
	Stop
		
Raise:
		HEAD L 8 A_UnSetFloorClip
		HEAD KJIHG 8
	Goto See
	}
}

ACTOR NormalCaco : Cacodemon
{
	Health 300
	Radius 27
	Height 54
	Mass 400
	Speed 8
	Gravity 0.1
	PainChance 128
	Monster
	+FLOAT +NOGRAVITY +FORCEXYBILLBOARD
	States
	{
Spawn:
		HEAD A 10 A_Look
	Loop
See:
		HEAD A 3 A_Chase
	Loop
Missile:
		fast a 0 A_Jump(50,"MultiMissile")
		HEAD B 5 A_FaceTarget
		HEAD C 5 A_FaceTarget
		HEAD D 5 BRIGHT A_HeadAttack
	Goto See
MultiMissile:
		HEAD B 10 A_FaceTarget
		HEAD C 15 A_FaceTarget
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		boss a 0 A_FACETARGET
		HEAD D 3 BRIGHT A_HeadAttack
		HEAD D 8
		HEAD CCCBB 2
	Goto See
		
Pain:
		boss a 0 a_facetarget
		boss a 0 a_recoil(2)
		boss a 0 a_changeflag(FLOAT,0)
		boss a 0 a_changeflag(NOGRAVITY,0)
		HEAD E 3
		HEAD E 3 A_Pain
		HEAD F 6
		boss a 0 a_changeflag(FLOAT,1)
		boss a 0 a_changeflag(NOGRAVITY,1)
	Goto See
Death:
		boss a 0 a_facetarget
		boss a 0 a_recoil(2)
		boss a 0 a_changeflag(FLOAT,0)
		boss a 0 a_changeflag(NOGRAVITY,0)
		HEAD G 8 A_NoBlocking
		HEAD H 8 A_Scream
		boss a 0 A_CheckFloor("NormalDeath")
lup:
		boss a 0 A_ChangeVelocity(0,0,-2)
		HEAD IIIIIIIIIIIIIIIIII 4 A_CheckFloor("Falo")
Falo:
		boss a 0 A_ChangeVelocity(0,0,3)
		BOSS a 0 a_changeflag(FORCEXYBILLBOARD,0)
		HEAD J 4
		boss a 0 A_ChangeVelocity(0,0,-7)
		HEAD KL 5
		boss a 0 a_setscale(1,0.8)
		HEAD L -1 A_SetFloorClip
	Stop
		
NormalDeath:
		HEAD IJ 8
		HEAD KL 8
		boss a 0 a_setscale(1,0.8)
		HEAD L -1 A_SetFloorClip
	Stop
		
Raise:
		HEAD L 8 A_UnSetFloorClip
		HEAD KJIHG 8
	Goto See
	}
}

ACTOR CacodemonBall2 : CacodemonBall REPLACES CacodemonBall
{
	Game Doom
	SpawnID 126
	Radius 8
	Height 10
	Speed 30
	FastSpeed 40
	Damage 5
	Scale 1.1
	Projectile 
	+RANDOMIZE
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 1
	Var Int user_stickx;
	Var Int user_sticky;
	Var Int user_stickz;
	Var int user_weave[4];
	SeeSound "caco/attack"
	DeathSound "caco/shotx"
	States
	{
	Spawn:
	boss a 0
	boss a 0 A_SetUserArray(user_weave,0,Random(-1,1))
		boss a 0 A_SetUserArray(user_weave,1,Random(-1,1))
		boss a 0 A_SetUserArray(user_weave,2,Random(-2,2))
		boss a 0 A_SetUserArray(user_weave,3,Random(-2,2))
		
		CUANDOSEVE:
		BAL2 A 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 A 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 A 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 A 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		
		
		BAL2 B 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 B 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 B 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		BAL2 B 1 Bright A_SeekerMissile(12,12)
		TNT1 AA 0 A_Weave(user_weave[0],user_weave[1],user_weave[2],user_weave[3])
		Loop
	Death:
		BAL2 CDE 6 BRIGHT
		Stop
	}
}










