actor PainElemental_2 : PainElemental
{
  Game Doom
  Obituary "a pain elemental somehow killed %o from afar."
  HitObituary "%o became dinner for a pain elemental."
  Health 400
  Radius 31
  Height 56
  Mass 400
  Speed 8
  PainChance 128
  PainChance "Dragon", 64
  PainChance "DragonF", 64
  PainChance "Dragonsplosion", 64
  PainChance "RGAFire", 64
  PainChance "Knife", 255
  PainChance "Explosion", 255
  PainChance "ExplosionF", 255
  PainChance "ExplosionC", 255
  PainChance "NormalExplode", 255
  PainChance "Stun", 255
  PainChance "Stun2", 255
  PainChance "Stun3", 255
  DamageFactor "Sniper", 2.0
  SeeSound "pain/sight"
  PainSound "pain/pain"
  DeathSound "pain/death"
  ActiveSound "pain/active"
  AttackSound "demon/melee"
  Species "Pez"
  MONSTER
  +FLOAT
  +NOGRAVITY
  +DONTFALL
  +NOICEDEATH
  +DONTGIB
  Tag "Pain Elemental"
  DamageFactor "RGABullet", 1.3
  DamageFactor "Shotgungib", 1.0
  DamageFactor "Shotgun", 1.0
  DamageFactor "Dragon", 1.2
  DamageFactor "DragonF", 1.2
  DamageFactor "Dragonsplosion", 1.0
  DamageFactor "Rifle", 1.45
  DamageFactor "Sniper", 1.6
  DamageFactor "Knife", 2.15
  DamageFactor "LMG", 1.8
  DamageFactor "BigPistol", 1.9
  DamageFactor "Cyber", 1.9
  DamageFactor "Stun", 1.2
  DamageFactor "Stun2", 1.2
  DamageFactor "Stun3", 1.2
  DamageFactor "BarrelBoom", 2.0
  DamageFactor "ScriptedMarine", 0.6
  DamageFactor "Step", 10.0
  DamageFactor "Revive", 0.0
  DamageFactor "Explosion", 1.7
  DamageFactor "ExplosionF", 1.7
  DamageFactor "ExplosionC", 1.7
  DamageFactor "NormalExplode", 1.1
  States
  {
  Spawn:
    PAIN A 0
    PAIN A 0 A_CheckFlag("Friendly","Idle")
    PAIN A 0 Thing_SetSpecial(0,226,613,0,random(17,34))
  Idle:
    PAIN A 10 A_Look
    Loop
  See2:
    PAIN C 0 A_JumpIfInventory("BlindCheck",2,"SeeBlind")
    PAIN CC 3 A_Wander
  See:
    PAIN A 0 A_JumpIfInventory("BlindCheck",2,"SeeBlind")
    PAIN A 0 A_ScaleVelocity(0.9)
    PAIN AABBCCAAB 3 A_Chase("","Missile")
    PAIN B 0 A_ScaleVelocity(0.9)
    PAIN BCCAABB 3 A_Chase("","Missile")
    PAIN CC 3 A_Chase
    goto See+1
  SeeBlind:
	PAIN A 0 A_Jump(128,"SeeBlind2")
    PAIN AA 3 A_Wander
	PAIN B 0 A_Jump(224,2)
    PAIN B 0 A_Pain
    PAIN B 3 A_Wander
    PAIN B 0 A_JumpIfInventory("BlindCheck",2,1)
    goto See+1
    PAIN BCC 3 A_Wander
    goto See
  SeeBlind2:
    PAIN A 0 A_Jump(256,1,2)
    PAIN AA 3
	PAIN A 0 A_Jump(224,2)
    PAIN A 0 A_Pain
    PAIN A 3
    PAIN A 0 A_JumpIfInventory("BlindCheck",2,1)
    goto See+1
    PAIN A 0 A_Jump(256,1,2,3)
    PAIN AAA 3
    goto See
  Melee:
    PAIN D 5 A_FaceTarget
    PAIN E 5 A_CustomMeleeAttack(25)
    PAIN F 5
    goto See
  Missile:
    PAIN D 0 A_CheckFlag("Boss","MissileBoss")
    PAIN D 0 A_Jump(96,2)
    PAIN D 0 A_JumpIfInTargetInventory("PowerInvisibility",1,"Abort")
    PAIN DE 5 A_FaceTarget
    PAIN F 5 BRIGHT A_FaceTarget
    PAIN F 0 BRIGHT A_Jump(18,2)
    PAIN F 0 BRIGHT A_PainAttack("LostSoul_2_Spawned")
    goto See
    PAIN F 0 BRIGHT A_PainAttack("DamnedSoul_Spawned")
    goto See
  MissileBoss:
    PAIN DE 7 A_FaceTarget
    PAIN F 4 BRIGHT A_FaceTarget
    PAIN F 0 BRIGHT A_Jump(18,7)
    PAIN F 3 BRIGHT A_PainAttack("LostSoul_2_Spawned_2")
    PAIN F 0 BRIGHT A_DualPainAttack("LostSoul_2_Spawned_2")
    PAIN AABB 3 A_Wander
    goto See2
    PAIN F 3 BRIGHT A_PainAttack("DamnedSoul_Spawned_2")
    PAIN F 0 BRIGHT A_DualPainAttack("DamnedSoul_Spawned_2")
    PAIN AABB 3 A_Wander
    goto See2
  Abort:
    PAIN DDEEEE 5 A_FaceTarget
    PAIN EEDDDD 5
	goto See2
  Pain.Stun3:
    PAIN G 0 ACS_NamedExecuteAlways("RefStun",0,2,0,0)
	goto Pain
  Pain.Stun2:
    PAIN G 0 ACS_NamedExecuteAlways("RefStun",0,1,0,0)
	goto Pain
  Pain.Stun:
    PAIN G 0 ACS_NamedExecuteAlways("RefStun",0,0,0,0)
	goto Pain
  Pain.NormalExplode:
  Pain.Sniper:
  Pain.ExplosionF:
  Pain.ExplosionC:
  Pain.Explosion:
    PAIN G 6
    PAIN G 9 A_Pain
    goto See
  Pain:
    PAIN G 6
    PAIN G 6 A_Pain
    goto See
  Death.Ice:
  Death:
  XDeath:
    PAIN H 8 BRIGHT A_NoGravity
    PAIN I 8 BRIGHT A_Scream
    TNT1 A 0 A_Stop
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_Jump(72,2)
    TNT1 AAAA 0 A_SpawnItemEx("HealthBonus_3",0,0,0,random(-2,2),random(-2,2),random(2,5),0,0,0)
    TNT1 A 0 A_CheckFlag("Boss",3)
    TNT1 A 0 A_SpawnItemEx("ExplosionMain2",0,0,28,0,0,0,0,128,0)
    TNT1 A 21 A_PainDie("LostSoul_2_Spawned")
    Stop
    TNT1 A 0 A_Stop
    TNT1 A 6 A_SpawnItemEx("ExplosionMain",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain2",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain2",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A -1 A_SpawnItemEx("ExplosionMain3",0,0,28,0,0,0,0,128,0)
    Stop
    //TNT1 A 21 A_PainAttack("DamnedSoul_Spawned")
    //Stop
	Raise:
	Stop
  }
}

actor DamnedElemental : PainElemental_2
{
  Obituary "a damned elemental slew %o. somehow."
  HitObituary "%o was food for a damned elemental."
  Health 500
  BloodColor "Blue"
  Tag "Damned Elemental"
  States
  {
  Spawn:
    KPEL A 0
    KPEL A 0 A_CheckFlag("Friendly","Idle")
    KPEL A 0 Thing_SetSpecial(0,226,613,0,random(20,40))
  Idle:
    KPEL A 10 A_Look
    Loop
  See2:
    KPEL C 0 A_JumpIfInventory("BlindCheck",2,"SeeBlind")
    KPEL CC 3 A_Wander
  See:
    KPEL A 0 A_JumpIfInventory("BlindCheck",2,"SeeBlind")
    KPEL A 0 A_ScaleVelocity(0.9)
    KPEL AABBCCAAB 3 A_Chase("","Missile")
    KPEL B 0 A_ScaleVelocity(0.9)
    KPEL BCCAABB 3 A_Chase("","Missile")
    KPEL CC 3 A_Chase
    goto See+1
  SeeBlind:
	KPEL A 0 A_Jump(128,"SeeBlind2")
    KPEL AA 3 A_Wander
	KPEL B 0 A_Jump(224,2)
    KPEL B 0 A_Pain
    KPEL B 3 A_Wander
    KPEL B 0 A_JumpIfInventory("BlindCheck",2,1)
    goto See+1
    KPEL BCC 3 A_Wander
    goto See
  SeeBlind2:
    KPEL A 0 A_Jump(256,1,2)
    KPEL AA 3
	KPEL A 0 A_Jump(224,2)
    KPEL A 0 A_Pain
    KPEL A 3
    KPEL A 0 A_JumpIfInventory("BlindCheck",2,1)
    goto See+1
    KPEL A 0 A_Jump(256,1,2,3)
    KPEL AAA 3
    goto See
  Melee:
    KPEL D 5 A_FaceTarget
    KPEL E 5 A_CustomMeleeAttack(24)
    KPEL F 5
    goto See
  Missile:
    KPEL D 0 A_CheckFlag("Boss","MissileBoss")
    KPEL D 0 A_Jump(96,2)
    KPEL D 0 A_JumpIfInTargetInventory("PowerInvisibility",1,"Abort")
    KPEL DE 5 A_FaceTarget
    KPEL F 5 BRIGHT A_FaceTarget
	KPEL F 0 BRIGHT A_Jump(44,2)
    KPEL F 0 BRIGHT A_PainAttack("DamnedSoul_Spawned")
    goto See2
    KPEL F 0 BRIGHT A_PainAttack("LostSoul_2_Spawned")
    goto See2
  MissileBoss:
    KPEL DE 7 A_FaceTarget
    KPEL F 4 BRIGHT A_FaceTarget
	KPEL F 0 BRIGHT A_Jump(44,7)
    KPEL F 3 BRIGHT A_PainAttack("DamnedSoul_Spawned_2")
    KPEL F 0 BRIGHT A_DualPainAttack("DamnedSoul_Spawned_2")
    KPEL AABB 3 A_Wander
    goto See2
    KPEL F 3 BRIGHT A_PainAttack("LostSoul_2_Spawned_2")
    KPEL F 0 BRIGHT A_DualPainAttack("LostSoul_2_Spawned_2")
    KPEL AABB 3 A_Wander
    goto See2
  Abort:
    KPEL DDEEEE 5 A_FaceTarget
    KPEL EEDDDD 5
    KPEL AABB 3 A_Wander
	goto See2
  Pain.Stun3:
    KPEL G 0 ACS_NamedExecuteAlways("RefStun",0,2,0,0)
	goto Pain
  Pain.Stun2:
    KPEL G 0 ACS_NamedExecuteAlways("RefStun",0,1,0,0)
	goto Pain
  Pain.Stun:
    KPEL G 0 ACS_NamedExecuteAlways("RefStun",0,0,0,0)
	goto Pain
  Pain.NormalExplode:
  Pain.Sniper:
  Pain.ExplosionF:
  Pain.ExplosionC:
  Pain.Explosion:
    KPEL G 6
    KPEL G 9 A_Pain
    goto See
  Pain:
    KPEL G 6
    KPEL G 6 A_Pain
    goto See
  Death.Ice:
  Death:
  XDeath:
    KPEL H 0 BRIGHT A_SetDamageType("NormalExplode")
    KPEL H 8 BRIGHT A_NoGravity
    KPEL I 8 BRIGHT A_Scream
    TNT1 A 0 A_NoBlocking
    TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ImpactSpark2", random(-32,32), random(-32,32), random(-16,24), random(-5,5), random(-5,5), random(-3,4), 0, 128, 0)
    TNT1 AAAAA 0 A_SpawnItemEx("HealthBonus_3",0,0,0,random(-2,2),random(-2,2),random(2,5),0,0,0)
    TNT1 A 0 A_Explode(80,150)
    TNT1 A 0 A_Stop
    TNT1 A 0 A_CheckFlag("Boss",5)
    TNT1 AA 0 A_SpawnItemEx("ExplosionMain",0,0,28,0,0,0,0,128,0)
    TNT1 A 4 Radius_Quake(2,15,0,8,0)
    TNT1 A 35 A_PainDie("DamnedSoul_Spawned")
    Stop
    TNT1 A 0 A_Stop
    TNT1 A 6 A_SpawnItemEx("ExplosionMain",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain2",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A 6 A_SpawnItemEx("ExplosionMain2",0,0,28,0,0,0,0,128,0)
	TNT1 A 0 A_Jump(256,1,2,3)
	TNT1 AAA 3
    TNT1 A -1 A_SpawnItemEx("ExplosionMain3",0,0,28,0,0,0,0,128,0)
    Stop
  }
}