ACTOR CranusExplosion
{
	+NOBLOCKMAP
	-SOLID
	+NOGRAVITY
	Renderstyle Add
	Alpha 0.9
	Scale 0.5
	+CLIENTSIDEONLY
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySoundEx("flamenade/boom","Weapon")
		TNT1 A 0 Radius_Quake (1, 15, 0, 6, 0)
		TNT1 A 0 A_Explode(50,96)
		// Left horn
		TNT1 A 0 A_SpawnItemEx("CranusHorn",random(-1,1),random(-5,-3),10,random(-0.5,0.5),random(-10,-5),random(5,10))
		// Right horn
		TNT1 A 0 A_SpawnItemEx("CranusHorn",random(-1,1),random(3,5),10,random(-0.5,0.5),random(5,10),random(5,10))
		// Left head
		TNT1 A 0 A_SpawnItemEx("CranusSide",random(-1,1),random(-3,-1),10,random(-0.5,0.5),random(-10,-5),random(1,3))
		// Right head
		TNT1 A 0 A_SpawnItemEx("CranusSide",random(-1,1),random(1,3),10,random(-0.5,0.5),random(5,10),random(1,3))
		// Embers
		TNT1 AAAAAAAAAA 0 A_SpawnItemEx("CasingSpark",random(-5,5),random(-5,5),random(-5,5),random(-15,15),random(-15,15),random(-15,15))
		// Small smoke
		TNT1 AAAAA 0 A_SpawnItemEx("CasingSmoke",random(-5,5),random(-5,5),random(-5,5),random(-5,5),random(-5,5),random(-5,5))
		// Large smoke
		TNT1 AAAAA 0 A_SpawnItemEx("QExplosionSmoke",random(-2,2),random(-2,2),random(-2,2),random(-3,3),random(-3,3),random(-3,3))
		// Jaw
		TNT1 AAA 0 A_SpawnItemEx("Head_Jaw",random(-2,2),random(-2,2),random(-2,2),random(-5,5),random(-5,5),random(-5,-3))
		CRXP ABCDEFGHIJK 1 bright
		Stop
	}
}

ACTOR CranusHorn
{
	BounceType "Doom"
	BounceFactor 0.6
	WallBounceFactor 0.6
	BounceSound "skull/hitquiet"
	Projectile
	-NOGRAVITY
	-SOLID
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	+MISSILE
	States
	{
	Spawn:
	CHON ABCDEFGHIJKLMNOPQR 1
	Loop
	Death:
	CHON AAA 300
	CHON AAAAAAAAAA 1 A_FadeOut(0.1)
	Stop
	}
}

ACTOR CranusSide
{
	BounceType "Doom"
	BounceFactor 0.6
	WallBounceFactor 0.6
	BounceSound "skull/hitquiet"
	Projectile
	-NOGRAVITY
	-SOLID
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	+MISSILE
	States
	{
	Spawn:
	CBIT ABCDEFGHIJKLMNOPQR 1
	Loop
	Death:
	CBIT AAA 300
	CBIT AAAAAAAAAA 1 A_FadeOut(0.1)
	Stop
	}
}

ACTOR ChargeLimit : Inventory
{
	Inventory.MaxAmount 20
}

ACTOR Cranus
{
  Health 80
  Radius 16
  Height 56
  Mass 50
  Speed 2
  Damage 1
  PainChance 256
  Monster
  +FLOAT
  +FLOATBOB
  +NOGRAVITY
  +DONTFALL
  +NOBLOOD
  AttackSound "cranus/charge"
  PainSound "cranus/pain"
  DeathSound "cranus/death"
  ActiveSound "cranus/idle"
  RenderStyle Normal
  Obituary "%o was taken down by a Cranus."
  States
  {
  Spawn:
	CRAN A 0	
	ZDOG A 0 A_GiveInventory("IgnoreHeadshot", 1)
  Wandering:
	// HATE A PLAYER!
	TNT1 A 0 ACS_NamedExecuteAlways("HatePlayer",0,0,0,0)
	CRAN A 0 A_Look
    CRAN A 4 A_Wander
    Loop
  See:
	CRAN A 0 A_TakeInventory("ChargeLimit",99)
    CRAN AAAA 1 A_Chase
    Loop
  Missile:
	CRAN A 0 A_Jump(255,"SingleBall","TripleBall","Charge")
	Goto SingleBall
  Charge:
	CRAN A 0 A_Jump(64,"SingleBall")
	CRAN A 3 A_FaceTarget
	CRAN B 0 A_GiveInventory("ChargeLimit",1)
	CRAN B 0 A_JumpIfInventory("ChargeLimit",20,"See")
	CRAN B 0 A_SkullAttack//(40)
	CRAN B 1
	CRAN B 0 A_SkullAttack//(40)
	CRAN B 1
	Goto Charge+2
  SingleBall:
	CRAN A 2 A_FaceTarget
	CRAN B 0 A_CustomMissile("CranusBall",-15)
	CRAN B 6 A_FaceTarget
    CRAN A 2 A_FaceTarget
    Goto See
  TripleBall:
	CRAN A 2 A_FaceTarget
	CRAN B 0 A_CustomMissile("CranusBall",-15)
	CRAN B 3 A_FaceTarget
	CRAN B 0 A_CustomMissile("CranusBall",-15)
	CRAN B 3 A_FaceTarget
	CRAN B 0 A_CustomMissile("CranusBall",-15)
	CRAN B 3 A_FaceTarget
    CRAN A 2 A_FaceTarget
    Goto See
  Pain:
	CRAN C 0 A_Pain
	CRAN C 0 A_PlaySoundEx("skull/hit","Weapon")
    CRAN C 3 Bright
    Goto See
  Death:
    BSZM M 0 ACS_NamedExecuteAlways("ZombieDeath",0,1,50,100)
	CRAN C 2 A_Scream
	CRAN D 2 bright
	CRAN D 0 A_SpawnItemEx("CranusExplosion",0,0,0)
	Stop
  }
}

ACTOR CranusBall
{
  Radius 13
  Height 8
  Speed 25
  Damage 2
  Projectile
  +RANDOMIZE
  RenderStyle Add
  Alpha 0.9
  SeeSound "cranus/spit"
  DeathSound "cranus/boom"
  Obituary "%o was torched by a Cranus." 
  States
  {
  Spawn:
	CRFX CCDD 1 bright A_SpawnItemEx("CranusBallFX",0,0,0)
	Loop
  Death:
	CRFX C 0 A_SpawnItemEx("CranusBallExplodeFX",0,0,0)
    Stop
  }
}

ACTOR CranusBallExplodeFX
{
	+NOBLOCKMAP
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Scale 0.3
	Alpha 0.9
	States
	{
		Spawn:
		TNT1 AAAA 0 A_SpawnItemEx("CasingSpark",random(-1,1),random(-1,1),random(-1,1),random(-5,5),random(-5,5),random(-5,5))
		TNT1 AAAA 0 A_SpawnItemEx("CasingSpark",random(-1,1),random(-1,1),random(-1,1),random(-10,10),random(-10,10),random(-10,10))
		TNT1 AA 0 A_SpawnItemEx("QExplosionSmoke",random(-2,2),random(-2,2),random(-2,2),random(-4,4),random(-4,4),random(-4,-2))
		TNT1 AA 0 A_SpawnItemEx("QExplosionSmoke",random(-2,2),random(-2,2),random(-2,2),random(-4,4),random(-4,4),random(2,4))
		EXP5 ABCDEFGHIJK 1 bright
		Stop
	}
}

ACTOR CranusBallFX
{
	+NOBLOCKMAP
	+NOINTERACTION
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	TNT1 A 0
	//TNT1 A 0 A_SpawnItemEx("QExplosionSmoke",random(-0.5,0.5),random(-0.5,0.5),0,random(-1,1),random(-1,1),random(3,6))
	TNT1 AA 0 A_SpawnItemEx("CasingSmoke",random(-1,1),random(-1,1),random(-1,1),random(-3,-1),random(-1,1),random(2,5))
	TNT1 AAAA 0 A_SpawnItemEx("CasingSpark",random(-1,1),random(-1,1),random(-1,1),random(-3,-1),random(-2,2),random(-2,2))
	TNT1 AA 0 bright A_SpawnItemEx("TinyCranusFX",random(-1,1),random(-1,1),random(-1,1),0,random(-3,3),random(-3,3))
    Stop
	}
}

ACTOR TinyCranusFX
{
	+CLIENTSIDEONLY
	-SOLID
	+THRUACTORS
	Gravity 0.5
	Renderstyle Add
	Alpha 0.8
	Scale 0.2
	States
	{
	Spawn:
	CRFX CDCDCDCDCDCDCDCDCDCD 1 bright A_FadeOut(0.05)
	Stop
	}
}