
actor Doom_Archvile : ZBaseActor 19401
{
  Obituary "%o was exploded by an Arch-Vile."
  Health 700
  Radius 20
  Height 72
  mass 1000
  Speed 15
  SeeSound "vile/sight"
  PainSound "vile/pain"
  DeathSound "vile/death"
  ActiveSound "vile/active"
  MeleeSound "vile/stop"
  dropitem "HolodukeSpawner" 4
  dropitem "ChaingunAmmo" 22 50
  dropitem "Chaingun Cannon" 6
  dropitem "ScubaPickup" 1
  dropitem "SSG"  21
  dropitem "DukeArmor" 1
  painchance 16
  Painchance "Shrinker", 256
  painchance "BootStun", 256
  painchance "MicrowaveBlast", 256
  +BOSS
  +QUICKTORETALIATE 
  +NOTARGET
  MONSTER
  +FLOORCLIP
  Scale 1.0
  damagefactor "Shrinker", 1.0
  damagefactor "Expander", 0.5
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  damagefactor "Explosion", 0.5
  damagefactor "RocketExplosion", 0.5
  damagefactor "ShellExplosion", 0.7
  damagefactor "Fire", 0.5
  damagefactor "BulletFlame", 0.84
  Species "Archviles"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  MaxTargetRange 896
  States
  {
  Spawn:
    VILE A 0
    "####" "#" 0 Thing_ChangeTID(0,1000)
    VILE AA 10 A_Look
    Loop
  See:
    "####" "#" 0 A_SetHeightOffset(0)
    "####" "#" 0 A_RaiseDeadMonsters(500.0, "RaiseMonsters", "", 1, 192)
    VILE AABBCCDDEEFF 2 A_ChaseD3D
    Loop
  See2:
    "####" "#" 0 A_SetHeightOffset(0)
    VILE AABBCCDDEEFF 2 A_ChaseD3D
    goto See
  RaiseMonsters:
    "####" "#" 0 A_SetHeightOffset(-1)
    "####" "#" 0 A_TakeInventory("MasterShieldState")
    "####" "#" 0 A_CreateShield("Doom_ArchvileShield", 200, radius+10, height, 1, 0, 0, 0, 0, 0, -10000, -1, 0, 0)
    "####" "#" 0 A_FaceTarget
    VIL2 ABC 10 BRIGHT {A_RaiseDeadMonsters(500.0, "", "", 1, 128); if (CountInv("MasterShieldState")==2) {return;} A_SpawnItemEx("Doom_ArchvileFireShieldSpawner");}
    VIL2 ABCABC 10 BRIGHT {A_RaiseDeadMonsters(500.0, "", "See2", 1, 128); if (CountInv("MasterShieldState")==2) {return;} A_SpawnItemEx("Doom_ArchvileFireShieldSpawner");}
    VIL2 ABCABC 10 BRIGHT {A_RaiseDeadMonsters(500.0, "", "See2", 1, 128); if (CountInv("MasterShieldState")==2) {return;} A_SpawnItemEx("Doom_ArchvileFireShieldSpawner");}
    VIL2 A 5 BRIGHT {if (CountInv("MasterShieldState")==2) {return;} A_SpawnItemEx("Doom_ArchvileFireShieldSpawner");}
    VIL2 BC 5 BRIGHT
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    Goto See2
  Missile:
    "####" "#" 0 A_SetHeightOffset(-1)
    VILE G 0 BRIGHT A_VileStart
    "####" "#####" 0 A_SpawnItemEx("DukeBurningFast", Random[RIDMAP](-25,25), Random[RIDMAP](-25,25), 0, 0,0,0,0,0,192)
    VILE GGGGGGGGG 2 BRIGHT {A_FaceTarget; A_CustomMissile("FlameTrailsSmall1", 80, 35, random (0, 40), 2, random (0, 160)); A_CustomMissile("FlameTrailsSmall1", 80, -35, random (0, 40), 2, random (0, 160));}
    "####" "##########" 0 A_SpawnItemEx("DukeBurningFast", Random[RIDMAP](-50,50), Random[RIDMAP](-50,50), 0, 0,0,0,0,0,192)
    VILE H 2 BRIGHT {A_VileTarget; A_CustomMissile("FlameTrailsSmall1", 80, 35, random (0, 40), 2, random (0, 160)); A_CustomMissile("FlameTrailsSmall1", 80, -35, random (0, 40), 2, random (0, 160));}
    VILE HHHHHH 2 BRIGHT {A_FaceTarget; A_CustomMissile("FlameTrailsSmall1", 80, 35, random (0, 40), 2, random (0, 160)); A_CustomMissile("FlameTrailsSmall1", 80, -35, random (0, 40), 2, random (0, 160));}
    "####" "##########" 0 A_SpawnItemEx("DukeBurningFast", Random[RIDMAP](-75,75), Random[RIDMAP](-75,75), 0, 0,0,0,0,0,192)
    VILE IIIIII 2 BRIGHT {A_FaceTarget; A_CustomMissile("FlameTrailsSmall1", 80, 35, random (0, 40), 2, random (0, 160)); A_CustomMissile("FlameTrailsSmall1", 80, -35, random (0, 40), 2, random (0, 160));}
    VILE JJJ 2 BRIGHT A_FaceTarget
    "####" "#" 0 A_SetHeightOffset(-13)
    VILE K 5 BRIGHT A_FaceTarget
    VILE LM 5 BRIGHT A_FaceTarget
    "####" "#" 0 A_SetHeightOffset(-7)
    VILE N 5 BRIGHT A_FaceTarget
    "####" "#" 0 A_VileAttack("vile/stop", 10, 35, 70, 0.0, "BulletFlame", VAF_DMGTYPEAPPLYTODIRECT)
    VILE O 4 BRIGHT A_VileAttack("vile/stop", 10, 35, 70, 10.0, "Explosion", VAF_DMGTYPEAPPLYTODIRECT)
    VILE P 8 BRIGHT
    Goto See
  Pain:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_SetHeightOffset(-2)
    "####" "#" 0 A_Jump(128,"Pain2")
    VILE Q 3
    VILE Q 3 A_PlayVoiceSoundPitch("Pain")
    Goto See
  Pain2:
    VIL2 D 3
    VIL2 D 3 A_PlayVoiceSoundPitch("Pain")
    Goto See
  Pain.MicrowaveBlast:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
  PainMicrowaveBlastcont:
    "####" "#" 0 A_SetHeightOffset(-2)
    VILE Q 1
    "####" "#" 0 A_CheckThump("Pain")
    loop
  Death:
    VILE R 7 A_PlayVoiceSoundPitch("Death")
    VILE S 7
    VILE T 7 A_NoBlocking
    VILE UV 7
    VILE WXY 5
    VILE Z 1 {A_BossDeath; A_SpawnItemEx("DeadDoom_Archvile", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL|SXF_SETMASTER);}
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    TNT1 A -1
    stop
  Pain.Shrinker:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_PlaySound("shrinker/shrink")
    "####" "#" 0 A_InvulnerablePlus(1)
    VILE Q 5 A_PlayVoiceSoundPitch("Pain")
    "####" "#" 0 A_CustomMissile("ShrinkEffect",8,0,0)
  Shrink:
    VILE Q 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","D",0.3)
    "####" "#" 0 {A_ChangeFlag("COUNTKILL",0); A_Die("BossDeath");}
    stop
  XDeath:
  Death.BossStomp:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileHead1",TRUE, 1.0, 1.2)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5","Gib6")
    TNT1 A 1
    Stop
  Death.PlasmaGib:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_SpawnDebris("DukeGibs1NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NFP", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileHead1",TRUE, 1.0, 1.2)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5","Gib6")
    TNT1 A 1
    Stop
  Death.Explosion:
  Death.RocketExplosion:
  Death.RocketHeadshot:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 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_ArchvileHead1",TRUE, 1.0, 1.2)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5","Gib6")
    TNT1 A 1
    Stop
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_XScream
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(FAS_AltShotgunGibFireProb,3)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,2)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileHead1",TRUE, 1.0, 1.2)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileArm1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileLeg1",TRUE, 1.0, 1.0)
    "####" "#" 0 A_Jump(256,"Gib1","Gib2","Gib3","Gib4","Gib5","Gib6")
    TNT1 A 1
    Stop
  Gib1:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB1 E 1 A_SpawnItemEx("Gib1DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib2:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB2 E 1 A_SpawnItemEx("Gib2DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib3:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB3 E 1 A_SpawnItemEx("Gib3DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib4:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB4 E 1 A_SpawnItemEx("Gib4DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib5:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    GIB5 E 1 A_SpawnItemEx("Gib5DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  Gib6:
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SetScale(1.1, 1.1)
    VIGI C 5
    VIGI D 5
    VIGI E 5
    VIGI FGHI 5
    VIGI JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 35 A_Gravity
    VIGI JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 1 A_FadeOut(0.1)
    Stop
  Wound.Expander:
   "####" "#" 0 A_Die("Expander")
  Death.Expander:
    "####" "#" 0 A_ChangeFlag("DONTCORPSE",1)
    "####" "#" 0 A_PlaySound("expander/expand")
    "####" "#" 0 {A_UnsetShootable; A_UnsetSolid;}
  Expand:
    VILE Q 1 A_SetScale(ScaleX + 0.01, ScaleY + 0.01)
    "####" "#" 0 A_JumpIf(ScaleX < 1.5 && ScaleY < 1.5, "Expand")
    VILE QQQQQ 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_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)
    goto Death.Explosion
  Wound.Ice:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_Freeze("See")
    "####" "#" 0 {A_ChangeFlag("COUNTKILL",0); A_Die("BossDeath");}
    TNT1 A 1
    stop
  Deathceiling:
   "####" "#" 0 A_Die
    TNT1 A 1
  Death.BossDeath:
    "####" "#" 0 A_BossDeath
    TNT1 A 1
    Stop
  Death.Headshot:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_XScream
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileHead1",TRUE, 1.0, 1.2)
    VID2 A 21 A_NoBlocking
    VID2 B 14
    VID2 CDE 7
    VID2 G 1 {A_BossDeath; A_SpawnItemEx("DeadDoom_ArchvileBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL);}
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    stop
  Death.SSG:
    "####" "#" 0 A_DamageChildren (5000, "None", 0, "Doom_ArchvileShield", "None", AAPTR_NULL)
    "####" "#" 0 A_RemoveChildren(true, RMVF_EVERYTHING, "Doom_ArchvileShield")
    "####" "#" 0 A_JumpIf(d3d_extradeathgore==1, "Death")
    "####" "#" 0 A_JumpIfCloser(210, 1)
    Goto Death
    "####" "#" 0 A_XScream
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5NF", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileHead1",TRUE, 1.0, 1.2)
    "####" "#" 0 A_SpawnDebris("Doom_ArchvileArm1",TRUE, 1.0, 1.0)
    VID3 A 15 A_NoBlocking
    VID3 B 10
    VID3 C 5
    VID3 DEFGHIJK 5
    VID3 L 1 {A_BossDeath; A_SpawnItemEx("DeadDoom_ArchvileHalf", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL);}
    "####" "#" 0 A_SpawnItemEx("DukeRedBloodPool")
    stop
  Possessed:
    "####" "#" 0 A_ChangeFlag("NOPAIN", 1)
    VILE Z 7 {A_XScream; A_AdjustTics(1.0,1.0);}
//    VILE YXW 7
    VILE VU 7 {A_XScream; A_AdjustTics(1.0,1.0);}
    VILE T 7 A_AdjustTics(1.0,1.0)
    VILE S 7 A_AdjustTics(1.0,1.0)
    VILE R 7 A_AdjustTics(0,1.0)
    "####" "#" 0 A_ChangeFlag("NOPAIN", 0)
    goto See
  }
}

ACTOR Doom_ArchvileFire Replaces ArchvileFire
{
  +NOBLOCKMAP
  +NOGRAVITY
  Scale 0.8
  RenderStyle Add
  Alpha 0.5
  States
  {
  Spawn:
    TNT1 A 0
    FRB1 A 1 BRIGHT A_StartFire
    FRB1 BCDEFGH 1 BRIGHT A_Fire
    FRB1 I 1 BRIGHT A_FireCrackle
    FRB1 JKLMN 1 BRIGHT A_Fire
    FRB1 ABCDEFGHIJKLMN 1 BRIGHT A_Fire
    FRB1 ABCDEFGH 1 BRIGHT A_Fire
    FRB1 I 1 BRIGHT A_FireCrackle
    FRB1 JKLMN 1 BRIGHT A_Fire
    FRB1 ABCDEFGHIJKLMN 1 BRIGHT A_Fire
    Stop
  }
}

actor DeadDoom_Archvile : DeadDukeNukemQ 19402
{
  Radius 20
  Height 15
  scale 1.0
  States
  {
  Spawn:
    VILE Z -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadDoom_Archvile", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    VILE Z 5 A_GenericFreezeDeath
    VILE Z 1 A_FreezeDeathChunks
    wait
  Gib1:
  Gib2:
  Gib3:
  Gib4:
  Gib5:
    TNT1 A 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    TNT1 A 1 A_SpawnItemEx("Gib4DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  }
}

actor DeadDoom_ArchvileBehead : DeadDukeNukem
{
  Radius 20
  Height 14
  scale 1.0
  States
  {
  Spawn:
    VID2 G -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadDoom_ArchvileBehead", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    VID2 G 5 A_GenericFreezeDeath
    VID2 G 1 A_FreezeDeathChunks
    wait
  Gib1:
  Gib2:
  Gib3:
  Gib4:
  Gib5:
    TNT1 A 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    TNT1 A 1 A_SpawnItemEx("Gib4DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  }
}

actor DeadDoom_ArchvileHalf : DeadDukeNukem
{
  Radius 20
  Height 12
  scale 1.0
  States
  {
  Spawn:
    VID3 L -1
    Stop
  Death.Fire:
    "####" "#" 0 A_SetTranslation("Burned")
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx("DeadDoom_ArchvileHalf", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION|SXF_TRANSFERSTENCILCOL)
    TNT1 A 1
    Stop
  Ice:
    "####" "#" 0 Thing_ChangeTID(0,3500)
    VID3 L 5 A_GenericFreezeDeath
    VID3 L 1 A_FreezeDeathChunks
    wait
  Gib1:
  Gib2:
  Gib3:
  Gib4:
  Gib5:
    TNT1 A 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    TNT1 A 1 A_SpawnItemEx("Gib4DeathSkin", 0,0,0,0,0,0,0, SXF_TRANSFERTRANSLATION)
    Stop
  }
}

Actor Doom_ArchvileShield : AltShield1
{
  Scale 1.0
  States
  {
  Death:
    TNT1 A 1
    "####" "#" 1 A_SpawnItemEx("Doom_ArchvileFireShieldSpawnerEnd")
    "####" "#" 0 A_Warp(AAPTR_DEFAULT,0,0,10)
    "####" "#" 1
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    TNT1 A 0 A_PlaySound("metal/land",0)
    TNT1 A 0 Radius_Quake(2, 8, 0, 12, 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))
    TNT1 AAAA 1 {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))
    TNT1 AAAAAAAA 1 {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))
    Stop
  }
}

actor Doom_ArchvileFireShieldSpawner
{
  States
  {
  Spawn:
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,45,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,90,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,135,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,180,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,225,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,270,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,315,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShield", 0,0,360,CMF_AIMDIRECTION,0)
    TNT1 A 1
    stop
  }
}

ACTOR Doom_ArchvileFireShield
{
  Radius 8
  Height 8
  Speed 5
  +FOILINVUL
  Damage 1
  +RIPPER
  +THRUGHOST
  +STEPMISSILE
  +BLOODLESSIMPACT
  Projectile
  XScale 1.0
  YScale 1.5
  Alpha 0.25
  RenderStyle "Add"
  +FORCEYBILLBOARD
  SeeSound "vile/firecrkl"
  DamageType "DukeFire"
  States
  {
  Spawn: 
    TNT1 A 0
    TNT1 A random(1,5)
    RPGB B 2 Bright A_SpawnItem("RedFlareMedium")
    TNT1 A 0 Radius_Quake (1, random[RIDMONSTERAT](5,10), 0, 6, 0)
    RPGB C 2 Bright A_SpawnItem("RedFlareMedium",0,0)
    RPGB D 2 Bright
    RPGB EEEEEEEE 1 Bright A_Fadeout(0.15)
    Stop
  }
}

actor Doom_ArchvileFireShieldSpawnerEnd
{
  States
  {
  Spawn:
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,45,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,90,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,135,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,180,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,225,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,270,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,315,CMF_AIMDIRECTION,0)
    TNT1 A 0 A_Custommissile("Doom_ArchvileFireShieldEnd", 0,0,360,CMF_AIMDIRECTION,0)
    TNT1 A 1
    stop
  }
}

ACTOR Doom_ArchvileFireShieldEnd
{
  Radius 8
  Height 8
  Speed 15
  +THRUGHOST
  +STEPMISSILE
  +BLOODLESSIMPACT
  Projectile
  XScale 1.0
  YScale 1.5
  Alpha 0.15
  RenderStyle "Add"
  +FORCEYBILLBOARD
  +NOCLIP
  SeeSound "vile/stop"
  States
  {
  Spawn: 
    TNT1 A 0
    TNT1 A random(3,5)
    RPGB FGHIJK 1 Bright A_SpawnItem("RedFlareMedium")
    RPGB LMNOPQRSTU 1 Bright A_Fadeout(0.09)
    RPGB VVVVVVVV 1 Bright A_Fadeout(0.09)
    Stop
  }
}

actor Doom_ArchvileResurrectLight
{
  Scale 0.7
  Renderstyle Add
  Alpha 0.35
  +NOINTERACTION
  +CLIENTSIDEONLY
  +THRUGHOST
  States
  {
  Spawn:
    TNT1 A 0
    EXP2 EEFF 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 GG 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 HH 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 HHGG 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 FFEE 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    EXP2 EEFF 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 GG 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 HH 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 HHGG 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 FFEE 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    EXP2 EEFF 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 GG 1 Bright A_SpawnItem("RedFlare23Small",0,0)
    TNT1 A 0 A_SetTranslucent(alpha - 0.015)
    EXP2 HH 1 Bright
    stop
  }
}