ACTOR LesserCardinal : BaronOfHell
{ 
//$Category Monsters/DUST
//$Sprite CCYNA1
//$Title "Lesser Cardinal"
  Health 1800
  PainChance 45
  Scale 1.1
  DamageFactor "NobleComet", 0.0
  Species "Nobles"
  DropItem "BossLifeEssence" 200 25
  DropItem "BossArmorBonusMax" 200 1
  DropItem "DemonAmmoBox" 128 200
  DropItem "NewCellPack" 128
  DropItem "BFG10K " 60 
  DropItem "Demon Tech BFG10K" 30
  +DONTHARMSPECIES
  +DONTHARMCLASS
  +MISSILEMORE
  +FLOAT
  +NOGRAVITY
  Obituary "%o underestimated a Lesser Cardinal."
  HitObituary "%o underestimated a Lesser Cardinal."
  SeeSound "cydes/sight"
  PainSound "cydes/pain"
  DeathSound "cydes/death"
  ActiveSound "cbaron/active"
  MeleeSound "baron/melee"
  Tag "\c[d4]Lesser Cardinal\c-"
  //var int user_firespawn;
  var int user_rageloop;
  States 
  { 
  Spawn: 
	//TNT1 A 0 A_JumpIf(user_firespawn == 1,4)
	TNT1 A 0 NoDelay A_SpawnItemEx("LesserCardinalFireSpawner",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 0 A_PlaySound("monster/ambientfire",7,1.0,1)
	//TNT1 A 0 A_SetUserVar("user_firespawn",1)
  Idle:
    MCRD AB 2 A_Look
    Loop 
  See:
    MCRD AB 2 A_Chase
    Loop
  Missile:
    TNT1 A 0 A_Jump(100,"Rocket")
    TNT1 A 0 A_Jump(80,"BFG10K","Railgun","Homing","CometRain","MiniDTBFG")
  Comets:
	MCRD EF 7 A_FaceTarget 
	MCRD G 3 A_CustomMissile("Comet",46,0,0)		
	TNT1 A 0 A_CustomMissile("Comet",46,0,6)
	MCRD G 3 A_CustomMissile("Comet",46,0,-6)
	TNT1 A 0 A_Jump(64,"Rocket")
	Goto See
  Rocket:
    MCRD C 12 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalRocket",46,20,0,0)
    MCRD C 10
	TNT1 A 0 A_Jump(40,"Homing")
    Goto See
  Homing:
    MCRD C 12 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalHomingRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalHomingRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalHomingRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalHomingRocket",46,20,0,0)
    MCRD C 6 A_FaceTarget
    MCRD D 6 A_CustomMissile("LesserCardinalHomingRocket",46,20,0,0)
    MCRD C 10
	TNT1 A 0 A_Jump(40,"Rocket")
    Goto See
  BFG10K:
	TNT1 A 0 A_PlayWeaponSound("weapons/charge15k")
    MCRD CCCCC 5 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    MCRD D 3 A_CustomMissile("Cy10K",46,20,0,0)
    MCRD C 4 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    MCRD D 3 A_CustomMissile("Cy10K",46,20,0,0)
    MCRD C 4 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    MCRD D 3 A_CustomMissile("Cy10K",46,20,0,0)
    MCRD C 4 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    MCRD D 3 A_CustomMissile("Cy10K",46,20,0,0)
    MCRD C 4 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
    MCRD D 3 A_CustomMissile("Cy10K",46,20,0,0)
    MCRD C 16 A_PlaySound("weapons/bfg15kcooldown",CHAN_AUTO)
	TNT1 A 0 A_Jump(64,"Rocket")
	TNT1 A 0 A_Jump(32,"Railgun")
    Goto See
  Railgun:
	TNT1 A 0 A_PlaySound("weapons/rgcharge")
	MCRD CCCCC 5 A_FaceTarget
	MCRD D 5 A_CustomMissile("CydestroyerRail",46,20)
	MCRD C 20
	Goto See
  MiniDTBFG:
	TNT1 A 0 A_PlaySound("LesserCardinal/BFGCharge")
	MCRD CCCCCCC 5 A_FaceTarget
	TNT1 A 0 A_PlaySound("LesserCardinal/BFGFire")
	MCRD D 5 A_CustomMissile("LesserCardinalMiniDTBFG",46,20)
	MCRD C 30
	TNT1 A 0 A_Jump(64,"Railgun")
	Goto See
  CometRain:
	MCRD GF 10 A_FaceTarget 
	TNT1 A 0 A_CustomMissile("LesserRainCometSpawner2",46,0,-20)
	TNT1 A 0 A_CustomMissile("LesserRainCometSpawner2",46,0,20)
	MCRD E 20 A_CustomMissile("LesserRainCometSpawner2",46,0,0)
	TNT1 A 0 A_Jump(128,"Comets")
	Goto See
  Melee:
    MCRD EF 7 A_FaceTarget
    MCRD G 7 A_MeleeAttack
    Goto See
  Pain: 
	TNT1 A 0 A_Jump(16,"PainRage")
    MCRD H 4 A_Pain
	TNT1 A 0 A_Jump(100,"Missile")
    Goto See
  PainRage:
	TNT1 A 0 A_JumpIfCloser(800,1)
	Goto Pain+1
	MCRD H 20 Bright A_Pain
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 Radius_Quake(6,60,0,18,0)
	TNT1 A 0 A_GiveInventory("Health",250)
	TNT1 A 0 A_PlaySound("LesserCardinal/Laugh")
	TNT1 A 0 A_SetUserVar("user_rageloop",0)
  PainRageLoop:
	TNT1 A 0 A_JumpIf(user_rageloop >= 15,"PainRageEnd")	 
	TNT1 A 0 A_SetUserVar("user_rageloop",user_rageloop+1)
	TNT1 A 0 A_SpawnItem("LesserCardinalRageFlameSpawner",0,0,0,0)
	MCRD H 2 A_SpawnItemEx("LesserRainCometSpawner",Random(-800,800),Random(-800,800),0,0,0,0,SXF_NOCHECKPOSITION,0)
	Loop
  PainRageEnd:
	TNT1 A 0 A_UnSetInvulnerable
	MCRD H 6
	Goto See
  Ice:
	TNT1 A 0 A_RemoveChildren(1)
    MCRD H 5 A_GenericFreezeDeath
    MCRD H 1 A_FreezeDeathChunks
    Wait
  Death:
	TNT1 A 0
	TNT1 A 0 A_RemoveChildren(1)
	TNT1 A 0 A_StopSound(7)
    MCRD I 20 A_Scream
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))	
	MCRD JJJJ 2 A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	MCRD KKKK 2 A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))	
	MCRD LLLL 2 A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))	
	MCRD MMMM 2 A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
    MCRD N 4 A_NoBlocking
    MCRD O 3
	TNT1 A 0 A_BossDeath
    Stop
  Raise:
	Stop
    } 
}

ACTOR LesserCardinalRocket : CardinalRocket { Damagetype "NobleComet" }
ACTOR LesserCardinalHomingRocket : CardinalHomingRocket { Damagetype "NobleComet" }

ACTOR LesserCardinalMiniDTBFG : CardinalDTBFG10KBall
{
DamageType "NobleComet"
Obituary "%o underestimated a Lesser Cardinal." 
Scale 0.4
Damage 25
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySoundEx("LesserCardinal/BFGIdle","Voice",1)
    CRS1 ABCDABCD 1 Bright A_SpawnItemEx("ProjectileTrailParticleOrange2",Random(-12,12),Random(-12,12),Random(12,22),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
    TNT1 A 0 A_CustomMissile("LesserCardinalBFGProjectileAttack",Random(-10,10),0,0,CMF_TRACKOWNER)
    Loop  
Death:
    TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 Radius_Quake(5,60,0,10,0)
	TNT1 A 0 A_Explode(40,200)
	CRS1 A 6 Bright A_SpawnItemEx("BFGShockwaveRed", 0, 0, 15, 0, 0, 0, 0, 128)
	TNT1 A 0 A_Explode(40,200)
	CRS1 B 6 Bright A_SpawnItemEx("BFGShockwaveRed", 0, 0, 15, 0, 0, 0, 0, 128)
	TNT1 A 0 A_Explode(40,200)
	CRS1 C 6 Bright A_SpawnItemEx("BFGShockwaveRed", 0, 0, 15, 0, 0, 0, 0, 128)
	TNT1 A 0 A_Explode(40,200)
	CRS1 D 6 Bright A_SpawnItemEx("BFGShockwaveRed", 0, 0, 15, 0, 0, 0, 0, 128)
	TNT1 A 0 A_Explode(240,240)
	TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 Radius_Quake(20,12,0,12,0)
	TNT1 A 0 A_PlaySound("weapons/bfg95explode")
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom14", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_SetScale(1.0)
    CFE1 ABCDEF 4 Bright
    Stop
    }
}

ACTOR LesserCardinalBFGProjectileAttack
{
Obituary "%o underestimated a Lesser Cardinal."
MissileType "LesserCardinalLightningProjectile"
MissileHeight -2
Projectile
+LOOKALLAROUND
+ISMONSTER
+QUICKTORETALIATE
+NOTARGET
+NOCLIP
States
{
Spawn:
    TNT1 A 0
	TNT1 A 1 A_Look
	Stop
See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(700,"Attack")
	Stop
Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 1 A_MissileAttack
	Goto Death	
Death:
	TNT1 A 20
	Stop
	}
}

ACTOR LesserCardinalLightningProjectile
{
Radius 6
Height 6
Speed 35
FastSpeed 40
Damage 6
DamageType "NobleComet"
SeeSound "LegArchon/BallZap"
DeathSound "LegArchon/BallHit"
RenderStyle Add
Alpha 0.8
Projectile
States
{
Spawn:
	DLIT ABCABC 2 Bright A_SpawnItemEx("LiteTrail")
Death:
	DLIT DEFGHIJKLMNO 1 Bright
	Stop
	}
}

ACTOR LesserRainCometSpawner : RainCometSpawner
{
States
{
Spawn:
	TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_Wander
	CMRA ABCDEFGHIJABCDEFGHIJ 2 Bright A_Wander
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
FadeOut:
	CMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.06)
    Goto FadeOut
	}
}

ACTOR LesserRainComet : RainComet { Damagetype "NobleComet" }

Actor LesserRainCometSpawner2 : RainCometSpawner
{
  Speed 15
  ReactionTime 200
  States
  {
  Spawn:
	TNT1 A 0 A_Countdown
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("LesserRainComet",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	Loop
  Death:
	CMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.06)
	Loop
  }
}

ACTOR LesserCardinalFireSpawner
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +ISMONSTER
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 2 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 0 A_SpawnItemEx("LesserCardinalFireEx",random(-12,12),random(-12,12),random(30,60),0,0,random(-4,-6),0,128,0)	
    TNT1 AAAA 0 A_SpawnItemEx("LesserCardinalFire",random(-18,18),random(-18,18),random(25,60),0,0,random(-6,-8),0,128,0)
    Loop
  Toaster:
    TNT1 A 2 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 0, "Spawn")
	Loop
  }
}

ACTOR LesserCardinalRageFlameSpawner : RedParticleSpawner
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SpawnItemEx("CardinalFire",random(-12,12),random(-12,12),random(20,40),0,0,random(3,6),0,128,0)
	TNT1 A 1
    Stop
  }
}

ACTOR LesserCardinalFireEx : CardinalFireEx
{
Scale 0.5
}

ACTOR LesserCardinalFire
{
+CLIENTSIDEONLY
+FORCEXYBILLBOARD
+CLIENTSIDEONLY
RenderStyle Add
Scale 0.3
States
{
Spawn:
FIR1 ABCDEFGHIJKL 1 Bright A_FadeOut
Stop
}
}