
// ------------------------------------------------------------
//   Cacodemon
// ------------------------------------------------------------

ACTOR BakaTail
{
	PROJECTILE
	+EXTREMEDEATH
	+forcexybillboard
	Radius 5
	Height 6
	Speed 12
	Damage 2
	RenderStyle Add
	Scale 0.6
	Alpha 0.4
	States
	{
		Spawn:
			BAL2 CD 2 BRIGHT
			BAL2 CDE 4 BRIGHT A_FadeOut(0.1)
		Death:
			BAL2 CDE 1 BRIGHT A_FadeOut(0.1)
			Stop
	}
}

ACTOR BakaBall
{
	PROJECTILE
	+EXTREMEDEATH
	+forcexybillboard
	Decal "DoomImpScorch"
	Radius 5
	Height 6
	Speed 18
	Damage 5
	RenderStyle Add
	Alpha 0.9
	SeeSound "baka/attack"
	DeathSound "baka/shotx"
	States
	{
		Spawn:
			BAL2 ABAB 1 BRIGHT
		See:
			BAL2 A 0 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 14,0,0, 162,32)
			BAL2 A 0 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 14,0,0, -162,32)
			BAL2 AB 1 BRIGHT A_BishopMissileWeave
			Loop
		Death:
			BAL2 CDE 4 BRIGHT
			Stop
	}
}

ACTOR FastBakaBall : BakaBall
{
	Decal "DoomImpScorch"
	Speed 32
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound ("baka/attack")
		Spawn2:
			BAL2 A 1 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 19,0,0, 162,32)
			BAL2 B 1 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 19,0,0, -162,32)
			TNT1 A 0 ThrustThing (random(0,255), 1, 0, 0)
			TNT1 A 0 ThrustThingZ (0, 1, random(0,1), 1)
			Loop
		Death:
			BAL2 CDE 4 BRIGHT
			Stop
	}
}

ACTOR BakaSlave
{
	PROJECTILE
	+forcexybillboard
	Decal "BakaScorch"
	Radius 8
	Height 13
	Speed 36
	Damage 9
	Scale 1.6
	RenderStyle Add
	Translation "112:127=16:47"
	SeeSound "baka/attack"
	DeathSound "bakaslave/death"
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound ("baka/attack")
			BAL7 ABAB 1 BRIGHT
		See:
			TNT1 A 0 BRIGHT A_SpawnItemEx("BakaSlaveTail", -4,0,4, 30,0,velz, 0,32)
			TNT1 A 0 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 21,0,velz, 158,32)
			BAL7 A 1 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 21,0,velz, -158,32)
			TNT1 A 0 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 21,0,velz, 146,32)
			BAL7 B 1 BRIGHT A_SpawnItemEx("BakaTail", 0,0,2, 21,0,velz, -146,32)
			TNT1 A 0 A_JumpIf (z-floorz<14, 1)
			Loop
			TNT1 A 0 ThrustThingZ (0, 3, 0, 1)
			Loop
		Death:
			TNT1 AAA 0 A_SpawnItemEx ("HDSmoke", random(-6,6), random(-6,6), random(-3,12), 0,0,0, 0,160)
			MISL B 4 BRIGHT A_Explode(76, 282, 1)
			TNT1 AAAAAAA 0 A_SpawnItemEx ("BigWallChunk", random(-2,2),random(-2,2),random(-2,2), random(-4,4), random(-4,4), random(2,6), random(0,360),160)
			MISL C 4 BRIGHT A_Quake (3, 35, 0, 300)
			MISL CDD 2 BRIGHT A_FadeOut (0.2)
			Stop
	}
}
ACTOR BakaSlaveTail : BakaTail
{
	Translation "112:127=16:47"
	+forcexybillboard
	alpha 0.3
	scale 1.2
	+ripper
	+bloodlessimpact
	States
	{
		Spawn:
			BAL7 A 1 BRIGHT
			BAL7 BABABAB 1 BRIGHT A_FadeIn (0.1)
			BAL7 ABABAB 2 BRIGHT
			BAL7 ABABABABAB 2 BRIGHT A_FadeOut(0.1)
			Stop
	}
}

ACTOR BakaSlavePreshot
{
	PROJECTILE
	+EXTREMEDEATH
	+nointeraction
	Radius 5
	Height 6
	Speed 2
	Damage 8
	RenderStyle Add
	Alpha 0.6
	Scale 1.8
	SeeSound "bakaslave/attack"
	DeathSound "bakaslave/death"
	States
	{
		Spawn:
			TNT1 A 2
			TNT1 A 2
			BAL2 A 2 BRIGHT
			TNT1 A 2
			BAL2 B 2 BRIGHT
			TNT1 A 2
			stop
			BAL2 A 2 BRIGHT
			TNT1 A 2
			BAL2 B 2 BRIGHT
			TNT1 A 2
			BAL2 A 2 BRIGHT
			TNT1 A 2
			BAL2 B 2 BRIGHT
			TNT1 A 2
			BAL2 A 2 BRIGHT
			TNT1 A 2
			BAL2 B 2 BRIGHT
			TNT1 A 2
			BAL2 A 2 BRIGHT
	}
}
ACTOR BakaSlavePreshot2 : BakaSlavePreshot
{
	States
	{
		Spawn:
			TNT1 A 6
			TNT1 A 0 A_Scream
			TNT1 A 0 BRIGHT A_Explode(40, 128, 0)
			BAL2 CCDE 4 bright A_SpawnItemEx ("FastBakaBall", 0,0,random(28,0), velx*16+random(-4,4),vely*16+random(-4,4),velz*16+random(-1,1), 0,40)
			TNT1 A 0 A_SpawnItemEx ("BakaSlave", 0,0,0, velx*18,vely*18,velz*18, 0,40)
		Fade:
			BAL2 E 2 bright A_FadeOut (0.1)
			loop
	}
}


ACTOR Bakademon : Cacodemon replaces Cacodemon
{
	+MISSILEMORE
	+MISSILEEVENMORE
	+DONTHURTSPECIES
	+PUSHABLE
	Painchance 90
	deathheight 29
	damagefactor "SmallArms0", 0.8
	damagefactor "SmallArms1", 0.9
	Obituary "%o was inverted by a cacodemon."
	States
	{
	Spawn:
		HEAD A 0 A_LowGravity
		HEAD A 2 A_Look
		Goto Spawn+1
	See:
		HEAD A 0 A_NoGravity
		HEAD A 4 A_Chase
		HEAD A 0 HealThing(random(0,5))
		TNT1 A 0 A_JumpIfTargetInLOS ("See")
	Roam:
		TNT1 A 0 A_Jump (216, 1)
		goto See+1
		TNT1 A 0 A_JumpIfTargetInLOS ("See")
		HEAD A 6 A_Wander
		HEAD A 0 HealThing(random(2,10))
		Loop
	Missile:
		HEAD B 8 A_FaceTarget
		HEAD B 0 A_JumpIfCloser(560, 2)
		HEAD B 0 A_Jump(128, 59)

		HEAD B 0 A_Jump (32, 39)
		HEAD B 0 A_Jump (127, 20)

		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, -6)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, 0)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, 6)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		Goto See+1

		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, 6)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, 0)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, -6)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		Goto See+1

		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, (random(1,6)-random(1,6)))
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, (random(1,6)-random(1,6)))
		HEAD C 4
		HEAD B 2
		HEAD A 6
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 8 BRIGHT A_CustomMissile ("BakaBall", 32, 0, 0)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		Goto See+1

		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 6 A_FaceTarget
		HEAD C 0 A_Stop
		HEAD C 0 //A_ChangeFlag("nodamage",1)
		HEAD C 0 A_ChangeFlag("nopain",1)
		TNT1 A 0 //A_ChangeFlag("pushable",0)
		HEAD D 6 BRIGHT A_CustomMissile ("BakaSlavePreshot", 32, 0, 0)
		HEAD D 4 BRIGHT A_CustomMissile ("BakaSlavePreshot", 32, 0, 0)
		HEAD DDDDDDDDDDDD 4 BRIGHT A_CustomMissile ("BakaSlavePreshot", 32, 0, 0)
		HEAD D 3 BRIGHT A_CustomMissile ("BakaSlavePreshot2", 32, 0, 0)
		HEAD D 3
		HEAD C 4
		HEAD C 0 //A_ChangeFlag("nodamage",0)
		HEAD C 0 A_ChangeFlag("nopain",0)
		TNT1 A 0 //A_ChangeFlag("pushable",1)
		HEAD B 2
		HEAD A 6
		Goto See+1
	Melee:
		HEAD B 2 A_FaceTarget
		HEAD C 4
		HEAD D 2 A_CustomMissile ("BakaTail", 32, 0, 0)
		HEAD D 0 A_CustomMissile ("BakaTail", 32, 0, 6)
		HEAD D 8 BRIGHT A_CustomMissile ("BakaTail", 32, 0, -6)
		HEAD C 4
		HEAD B 2
		HEAD A 6
		Goto See+1
	Death:
		TNT1 A 0 A_GivetoTarget("HDKillCount",1)
		TNT1 A 0 ACS_ExecuteAlways(558,0,0,1,22)
		TNT1 A 0 A_SpawnItemEx ("tempshieldblue", 0,0,0, velx,vely,velz, 0,40)
		HEAD G 8 A_Scream
		HEAD H 8 A_NoBlocking
		HEAD I 8 A_SpawnItemEx ("tempshield2blue", 0,0,0, velx,vely,velz, 0,40)
		HEAD JK 8
		HEAD L -1
		stop
	}
}
