
ACTOR RLCyberdemonBase : RLMonster
{
  Health 4000
  Radius 40
  Height 110
  Speed 20
  Mass 10000
  BloodType "RLNashGore_BossBlood", "RLMNullActor", "RLNashGore_SlashBlood"
  
  MinMissileChance 10
  PainThreshold 60
  PainChance 150
  PainChance "Lith_Energy", 2 // Lithium compatibility
  MeleeRange 120
  
  DamageType "Melee"
  PainType "BluntMelee"
  DeathType "BluntMelee"
  
  RadiusDamageFactor 0.2 // Bosses take only 20% radius damage
  DamageFactor "Melee", 1.5
  DamageFactor "Radiation", 0
  DamageFactor "Holy", 2
  DamageFactor "Unholy", 0.25
  DamageFactor "Heroic", 3.0 // LegenDoom Damagetype
  DamageFactor "C4Explosive", 10.0 // Final Doomer Damagetype
  
  SeeSound "cyber/sight"
  PainSound "cyberdemon/pain"
  DeathSound "cyber/death"
  ActiveSound "cyber/active"
  
  +BOSS
  +MISSILEMORE
  +MISSILEEVENMORE
  +FLOORCLIP
  +DONTMORPH
  +BOSSDEATH
  +NOICEDEATH
  +NOFEAR
  +EXTREMEDEATH
  +BLOODSPLATTER
  
  Obituary "%o was pasted across the walls by a Cyberdemon."
  HitObituary "%o was crushed into paste by a Cyberdemon."
  Species "RLCyberdemon"
  Tag "Cyberdemon"
  
  // Guncaster extras
   
  // Resists & Weaknesses
	DamageFactor CloseCombat, 0.75
	DamageFactor Shoelaces, 0.75
	DamageFactor SuperCloseCombat, 0.75
	DamageFactor SuperShoelaces, 0.75
	DamageFactor SuperMidasCloseCombat, 0.75
	DamageFactor SuperMidasShoelaces, 0.75
	DamageFactor Lightning, 1.25
	DamageFactor Annihilation, 1.25
	DamageFactor BlueTiberium, 0.8
	DamageFactor Tiberium, 0.8
	DamageFactor Crow, 0.6
	DamageFactor Crow2, 0.6
	DamageFactor Matriarch, 0.9
	DamageFactor LightningBlue, 1.0
	
	// Chance Effects
	PainChance Crow, 1
	PainChance Crow2, 1
	PainChance Lightning, 72
	PainChance LightningBlue, 4
	PainChance Manuel, 20
	PainChance Fire, 20
	
  var int user_cyberdemonbombtimer;
  States
  {
  MissileFriendlyCheck:
    "####" "#" 0 A_CheckFlag ("FRIENDLY", "MissileSpecialAttackCheck")
    "####" "#" 0 A_CheckFlag ("FRIENDLY", "MissileSpecialAttackCheck", AAPTR_TARGET)
    "####" "#" 0 A_JumpIf(CheckClass("Cyberdemon", AAPTR_TARGET, TRUE), "FriendlyTarget")
    "####" "#" 0 A_JumpIf(CheckClass("RLCyberdemonBase", AAPTR_TARGET, TRUE), "FriendlyTarget")
    "####" "#" 0 A_JumpIf(1, "MissileSpecialAttackCheck")
	Goto MissileSpecialAttackCheck
  MeleeFriendlyCheck:
    "####" "#" 0 A_CheckFlag ("FRIENDLY", "MeleeSpecialAttackCheck")
    "####" "#" 0 A_CheckFlag ("FRIENDLY", "MeleeSpecialAttackCheck", AAPTR_TARGET)
    "####" "#" 0 A_JumpIf(CheckClass("Cyberdemon", AAPTR_TARGET, TRUE), "FriendlyTarget")
    "####" "#" 0 A_JumpIf(CheckClass("RLCyberdemonBase", AAPTR_TARGET, TRUE), "FriendlyTarget")
    "####" "#" 0 A_JumpIf(1, "MeleeSpecialAttackCheck")
	Goto MeleeSpecialAttackCheck
	
  XDeath.MeleeKick:
  XDeath.Melee:
  Death.MeleeKick:
  Death.Melee: // Commando's Berserker ability activates here when you kill bosses in melee
    TNT1 A 0 A_GiveToTarget ("RLBerserkerBloodlustBossBonusCheck", 1)
	Goto Death
	
  TeleportEscape: // Summoned DRPG monsters will teleport out if you kill them with the console
    TNT1 A 0 A_BossDeath
    TNT1 A 0 A_SpawnItemEx ("TeleportFog", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
//==============================================================================
//					--	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_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_DropItem("MajorManaPod",-1,224)
    "####" "#" 0 A_JumpIf(1, "XDeathMain")
    Goto XDeathMain

	
	GenericFreezeMana:
		"####" "######" 0 A_DropItem("MajorManaPod",-1,224)
		"####" "#" 0 A_BossDeath
		"####" "#" 0 A_JumpIf(1,"GenericFreezeDeathMain")
		Goto GenericFreezeDeathMain
	
//------------------------------------------------------------------------------

	Death.MidasCloseCombat:
	Death.MidasShoelaces:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_NoBlocking
		"####" "######" 0 A_DropItem("MajorManaPod",-1,224)
		TNT1 A 0 A_Pain
		TNT1 A 0 A_PlaySound("Midas/Touched")
		TNT1 A 0 A_BossDeath
		TNT1 A 0 A_JumpIf(1, "MidasFrame1")
		Goto MidasFrame1
		
	//Scourgebreath
	Death.Breath:
		"####" "#" 0 A_StopSound(5)
		"####" "######" 0 A_DropItem("MajorManaPod",-1,224)
		"####" "#" 0 A_BossDeath
		"####" "#" 0 A_JumpIf(1,"DeathBreathContinue")
		Goto DeathBreathContinue
		
  //Fire
	Death.Meteorfist:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_ChangeVelocity(frandom(-15.0,-20.0),0,frandom(10.0,15.0),CVF_RELATIVE)
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
	Death.Lightning:
	Death.LightningBlue:
	Death.Fire:
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
		
			//Corpseblast
	CorpseBlastA:
		"####" "#" 0 A_SpawnItemEx("CyberdemonBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		Stop
	CorpseBlastB:
		"####" "#" 0 A_SpawnItemEx("CyberdemonBlast",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("CyberdemonBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_TakeInventory("CorpseTrigger2",1)
		"####" "#" 0 A_JumpIf(1,"XDeathEnd")
		Goto XDeathEnd
  }
}
