
ACTOR RLCacodemonBase : RLMonster
{
  Health 400
  GibHealth -60
  Radius 31
  Height 56
  Speed 8
  Mass 400
  Bloodcolor "Blue"
  
  PainChance 128
  
  DamageFactor "Maser", 1.2 // Final Doomer Damagetype
  DamageFactor "Antiair", 3.0 // LegenDoom Damagetype
  
  SeeSound "caco/sight"
  PainSound "cacodemon/pain"
  DeathSound "caco/death"
  ActiveSound "caco/active"
  
  +FLOAT
  +NOGRAVITY
  +DONTCORPSE
  +BLOODSPLATTER
  -FLOORCLIP
  -CANUSEWALLS
  -CANPUSHWALLS
  
  Obituary "%o was blasted by a Cacodemon."
  HitObituary "%o was consumed by a Cacodemon."
  Species "RLCacodemon"
  Tag "Cacodemon"

	//Guncaster extras
   
	//Resists & Weaknesses
	DamageFactor Lightning, 0.8
	DamageFactor BlueLightning, 0.8
	DamageFactor CloseCombat, 1.25
	DamageFactor Shoelaces, 1.25
	DamageFactor SuperCloseCombat, 1.25
	DamageFactor SuperShoelaces, 1.25
	DamageFactor SuperMidasCloseCombat, 1.25
	DamageFactor SuperMidasShoelaces, 1.25
	DamageFactor Manuel, 1.25
	DamageFactor Crow, 1.25
	DamageFactor Crow2, 1.25
 
	//Chance Effects
	PainChance Crow, 2
	PainChance Crow2, 2
	PainChance Lightning, 64
	PainChance LightningBlue, 12
	PainChance Manuel, 192
	PainChance Fire, 128
  States
  {
	// Cacodemons hate hell nobles, any infighting that starts between them will be to the death.
  MissileHatredList:
    "####" "#" 0 A_JumpIf(CheckClass("HellKnight", AAPTR_TARGET, TRUE), "MissileHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("BaronOfHell", AAPTR_TARGET, TRUE), "MissileHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLHellKnightBase", AAPTR_TARGET, TRUE), "MissileHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLBaronOfHellBase", AAPTR_TARGET, TRUE), "MissileHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLBruiserBrother", AAPTR_TARGET, TRUE), "MissileHatredOn")
    "####" "#" 0 A_JumpIfInventory ("RLHatredToken", 1, "MissileHatredOff")
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
  MeleeHatredList:
    "####" "#" 0 A_JumpIf(CheckClass("HellKnight", AAPTR_TARGET, TRUE), "MeleeHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("BaronOfHell", AAPTR_TARGET, TRUE), "MeleeHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLHellKnightBase", AAPTR_TARGET, TRUE), "MeleeHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLBaronOfHellBase", AAPTR_TARGET, TRUE), "MeleeHatredOn")
    "####" "#" 0 A_JumpIf(CheckClass("RLBruiserBrother", AAPTR_TARGET, TRUE), "MeleeHatredOn")
    "####" "#" 0 A_JumpIfInventory ("RLHatredToken", 1, "MeleeHatredOff")
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
	
//==============================================================================
//					--	GunCaster Compatibility Stuff  --
//==============================================================================
// Override death states to drop the larger mana items in Guncaster
  Death:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
	"####" "#" 0 A_DropItem("MajorManaPod",-1,224)
    "####" "#" 0 A_JumpIf(1, "DeathMain")
    Goto DeathMain
  XDeath:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
	"####" "#" 0 A_DropItem("MajorManaPod",-1,224)
    "####" "#" 0 A_JumpIf(1, "XDeathMain")
    Goto XDeathMain
	
	GenericFreezeMana:
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MajorManaPod",-1,54)
		"####" "#" 0 A_JumpIf(1,"GenericFreezeDeathMain")
		Goto GenericFreezeDeathMain	

//------------------------------------------------------------------------------

	Death.MidasCloseCombat:
	Death.MidasShoelaces:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_JumpIfInTargetInventory("Mana",0,2)
		TNT1 A 0 A_DropItem("MajorManaPod",-1,54)
		TNT1 A 0 A_Pain
		TNT1 A 0 A_PlaySound("Midas/Touched")
		TNT1 A 0 A_JumpIf(1, "MidasFrame1")
		Goto MidasFrame1
		
	//Scourgebreath
	Death.Breath:
		"####" "#" 0 A_StopSound(5)
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MajorManaPod",-1,54)
		"####" "#" 0 A_JumpIf(1,"DeathBreathContinue")
		Goto DeathBreathContinue
		
			//Corpseblast
	CorpseBlastA:
		"####" "#" 0 A_SpawnItemEx("CacodemonBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		Stop
	CorpseBlastB:
		"####" "#" 0 A_SpawnItemEx("CacodemonBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_TakeInventory("CorpseTrigger2",1)
		"####" "#" 0 A_JumpIf(1,"DeathEnd")
		Goto DeathEnd
	CorpseBlastC:
		"####" "#" 0 A_SpawnItemEx("CacodemonBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_TakeInventory("CorpseTrigger2",1)
		"####" "#" 0 A_JumpIf(1,"XDeathEnd")
		Goto XDeathEnd
  }
}
