
actor Doom_PainElemental : ZBaseActor 19400
{
  Health 500
  Radius 31
  Height 56
  mass 5000
  Speed 9
  SeeSound "pain/sight"
  PainSound "pain/pain"
  DeathSound "pain/death"
  ActiveSound "pain/active"
  dropitem "HolodukeSpawner" 7
  dropitem "ChaingunAmmo" 38 50
  dropitem "Chaingun Cannon" 10
  dropitem "ScubaPickup" 1
  dropitem "SSG" 38
  dropitem "DukeArmor" 2
  PainChance 64
  Painchance "Shrinker", 256
  painchance "BootStun", 256
  painchance "MicrowaveBlast", 256
  MONSTER
  +FLOORCLIP
  Scale 1.0
  +FLOATBOB
  +FLOAT
  +NOGRAVITY
  +SPAWNFLOAT
  +MISSILEMORE
  +BOSS
  FloatBobStrength 0.5
  gravity 0.40
  damagefactor "Expander", 0.5
  damagefactor "Explosion", 0.5
  damagefactor "RocketExplosion", 0.5
  damagefactor "ShellExplosion", 0.7
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  damagefactor "Fire", 0.5
  damagefactor "BulletFlame", 0.84
  Species "PainElementalLostSouls"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  +FORCEXYBILLBOARD
  Accuracy 12
  States
  {
  Spawn:
    PAIN A 0
    "####" "#" 0 ThrustThingZ(0, 50, 0, 1)
    "####" "#" 1
    "####" "#" 0 A_Stop
  Idle:
    "####" "#" 0 Thing_ChangeTID(0,1000)
    PAIN A 10 A_Look
    Loop
  See:
    "####" "#" 0 A_Jump(128,2)
    "####" "#" 0 A_Stop
    PAIN A 2 A_Chase
    PAIN A 2 A_Chase("", "", CHF_NOPLAYACTIVE)
    PAIN B 2 A_Chase("", "", CHF_NOPLAYACTIVE)
    PAIN BCC 2 A_Chase
    Loop
  Missile:
    "####" "#" 0 A_JumpIfCloser(80,"Missile3")
    "####" "#" 0 A_Jump(128,"Missile3")
  Missile2:
    "####" "#" 0 A_CheckChildren(10, "Missile3cont")
    PAIN D 7 A_FaceTarget
    PAIN E 7 A_FaceTarget
    PAIN F 5 BRIGHT A_FaceTarget
    "####" "########" 0 A_CustomMissile("FlameTrails1", random[RIDFX](-5, 37), random[RIDFX](-20, 20), random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90))
    PAIN F 5 BRIGHT A_SpawnChildren("Doom_PainElementalLostSoul",0,0,10,0,5,10,250)
    PAIN ED 7
    goto See
  Missile3:
    "####" "#" 0 A_JumpIfCloser(500,2)
    "####" "#" 0 A_Jump(256,"Missile2")
  Missile3cont:
    PAIN E 10 A_FaceTarget
    PAIN F 8 BRIGHT A_CustomMissile("FireFlyBigFireBall",25,0,Random[RIDMONSTERAT](-5,5))
    PAIN E 10 A_CPosRefire
    "####" "#" 0 A_Jump(128,"See")
    goto Missile3+3
  Pain:
    "####" "#" 0 A_Jump(128,"Pain2")
    PAIN G 3
    PAIN G 3 A_PlayVoiceSoundPitch("Pain")
    Goto See
  Pain2:
    PAIN N 3
    PAIN N 3 A_PlayVoiceSoundPitch("Pain")
    Goto See
  Pain.MicrowaveBlast:
    PAIN G 1
    "####" "#" 0 A_CheckThump("Pain")
    loop
  Pain.Shrinker:
    "####" "#" 0 A_PlaySound("shrinker/shrink")
    "####" "#" 0 A_NoGravity
    "####" "#" 0 A_InvulnerablePlus(1)
    PAIN G 5 A_PlayVoiceSoundPitch("Pain")
    "####" "#" 0 A_CustomMissile("ShrinkEffect",8,0,0)
  Shrink:
    PAIN G 2 {A_SetScale(ScaleX - 0.04, ScaleY - 0.04); A_SpawnItemEx("ShrunkBlur",0,0,0,0,0,0,angle,SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERSCALE|SXF_TRANSFERTRANSLATION|SXF_NOCHECKPOSITION|SXF_ABSOLUTEANGLE);}
    "####" "#" 0 A_JumpIf(ScaleX > 0.2 && ScaleY > 0.2, "Shrink")
    "####" "#" 0 A_Shrink("A","B","C","A",0.3)
    "####" "#" 0 {A_ChangeFlag("COUNTKILL",0); A_Die("BossDeath");}
    stop
  Wound.Expander:
   "####" "#" 0 A_Die("Expander")
  Death.Expander:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_PlaySound("expander/expand")
    "####" "#" 0 A_NoGravity
    "####" "#" 0 {A_UnsetShootable; A_UnsetSolid;}
  Expand:
    PAIN G 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.5 && ScaleY < 1.5, "Expand")
    PAIN GGGGG 1
    "####" "#" 0 A_SetScale(1.0, 1.0)
    "####" "#" 0 A_PlayVoiceSoundPitch("Death","",4)
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_PainElementalMeat1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_PainElementalMeat2",TRUE, 1.0, 1.0)
    stop
  Wound.Ice:
    "####" "#" 0 A_Freeze("See")
    "####" "#" 0 {A_ChangeFlag("COUNTKILL",0); A_Die("BossDeath");}
    TNT1 A 1
    stop
  Death.PlasmaGib:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
    goto Death+13
  Death:
  XDeath:
  Death.BossStomp:
  Death.Explosion:
  Death.RocketExplosion:
  Death.RocketHeadshot:
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    PAIN HHHH 2 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    PAIN I 2 BRIGHT {A_PlayVoiceSoundPitch("Death","",4); A_SpawnItem("RedFlareMedium",0,0);}
    PAIN III 2 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    PAIN JJJJ 2 BRIGHT A_SpawnItem("RedFlareMedium",0,0)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_XScream
    "####" "#" 0 A_Gravity
    "####" "#" 0 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_PainElementalMeat1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_PainElementalMeat2",TRUE, 1.0, 1.0)
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    PAIN K 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    PAIN K 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    PAIN K 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    PAIN K 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    "####" "###" 0 A_CustomMissile ("ShrinkerAttackSmoke", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), 2, random[RIDFX](0, 160))
    "####" "##########" 0 A_CustomMissile("FlameTrails1", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90))
    "####" "#" 0 A_SpawnChildren("Doom_PainElementalLostSoul",0,0,5,angle + 90,1,0,0)
    "####" "#" 0 A_SpawnChildren("Doom_PainElementalLostSoul",0,0,5,angle + 180,1,0,0)
    "####" "#" 0 A_SpawnChildren("Doom_PainElementalLostSoul",0,0,5,angle + 270,1,0,0)
    PAIN L 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    PAIN L 1 bright {A_SpawnItem("RedFlareMedium",0,0); A_FadeOut(0.075);}
    PAIN L 1 bright A_FadeOut(0.075)
    PAIN L 1 bright A_FadeOut(0.075)
    PAIN M 1 bright A_FadeOut(0.075)
    PAIN M 1 bright A_FadeOut(0.075)
    PAIN M 1 bright A_FadeOut(0.075)
    PAIN M 1 bright A_FadeOut(0.075)
    "####" "###" 0 A_CustomMissile ("ShrinkerAttackSmoke", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), 2, random[RIDFX](0, 160))
  Deathceiling:
   "####" "#" 0 A_Die
    TNT1 A 1
    stop
  Death.BossDeath:
    "####" "#" 0 A_BossDeath
    TNT1 A 1
    Stop
  }
}