actor ImprovedWidowMaker : Guardian //especially if you make this one spawn, who wants a widowmaker with an improved minigun?
{
  Health 2000
  Speed 13
  PainChance 50
  +DONTHARMCLASS
  +DONTHARMSPECIES
  +MISSILEMORE
  +MISSILEEVENMORE
  +AVOIDMELEE
  +QUICKTORETALIATE
  +NODROPOFF
  +THRUSPECIES
  Radius 22
  Height 60
  Species "Skeletons"
  DropItem "ImprovedMinigun" 64
  DropItem "BossLifeEssence" 150
  DropItem "BossArmorBonusMax" 150
  dropitem "BackPack" 30
  SeeSound "widowmaker/sight"
  ActiveSound "widowmaker/act"
  PainSound "widowmaker/pain"
  DeathSound "widowmaker/death"
  Obituary "%o was penetrated by an Improved Widowmaker."
  Tag "Improved Widowmaker"
  States
  {
  Spawn:
    IMDK C 10 A_Look
    Loop
  See:
    TNT1 A 0 A_SpawnItem("BonyStep",0,0,0,0)
    IMDK AAABBB 2 A_Chase
    TNT1 A 0 A_SpawnItem("BonyStep",0,0,0,0)
    IMDK CCCDDD 2 A_Chase
    Loop
  Melee:
    "####" "#" 0 A_FaceTarget
	"####" "#" 0 A_PlaySound("player/normjump")
    "####" "#" 8 A_Recoil(25)
	"####" "#" 0 A_PlaySound("plyrland")
    Goto Normal
  Pause:
	IMDK E 10
	Goto See
  Missile:
    TNT1 A 0 A_Jump(128,"SeekMissile","SeekMissile2")
  Normal:
    TNT1 A 0 A_PlaySound("weapons/expmgunspinstart",7)
    IMDK E 15 A_FaceTarget
	TNT1 A 0 A_PlaySound("weapons/expmgunspin",8)
	TNT1 A 0 A_CustomMissile("MonsterExplosiveTracer2",Random(30,34),0,Random(5,-5),0)
    TNT1 AA 0 A_SpawnItemEx("RifleCasing", 12, 6, 28, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
	TNT1 A 0 A_PlaySound("hitler/fire",CHAN_WEAPON,1.0,0)
    IMDK F 2 Bright A_CustomBulletAttack(4.3,2.6,1,20,"ExosBulletPuff")
    IMDK E 1 A_FaceTarget
	TNT1 A 0 A_CustomMissile("MonsterExplosiveTracer2",Random(30,34),0,Random(5,-5),0)
    TNT1 AA 0 A_SpawnItemEx("RifleCasing", 12, 6, 30, Random(2, 6), 0, Random(1, 3), Random(-80, -90), 128)
	TNT1 A 0 A_PlaySound("hitler/fire",CHAN_WEAPON,1.0,0)
    IMDK F 2 Bright A_CustomBulletAttack(4.3,2.6,1,20,"ExosBulletPuff")
    IMDK E 1 A_FaceTarget
	TNT1 A 0 A_Jump(11,"Pause","SeekMissile")
	TNT1 A 0 A_StopSound(8)
    TNT1 A 0 A_CPosRefire
    Goto Normal+3
  SeekMissile:
    IMDK EEEEEEEE 3 A_FaceTarget
	IMDK F 4 Bright A_CustomMissile("M2HellStormBomb",40,0,0)
	IMDK E 3 Bright
	Goto see
  SeekMissile2:
    IMDK G 0 A_JumpIf(ceilingz-floorz<=175,"SeekMissile")
    IMDK G 1 A_FaceTarget
	IMDK G 5 
	IMDK G 1 A_FaceTarget
	IMDK G 3 A_PlaySound("widowmaker/beep")
	IMDK G 1 A_FaceTarget
	IMDK G 3 A_PlaySound("widowmaker/beep")
	IMDK G 1 A_FaceTarget
	IMDK G 3 A_PlaySound("widowmaker/beep")
	IMDK G 1 A_FaceTarget
	TNT1 A 0 A_PlaySound("widowmaker/launch")
    IMDK H 4 Bright
	IMDK H 0 Bright A_CustomMissile("widowmakerMiniRockets",55,40,-25,90) 
	IMDK H 0 Bright A_CustomMissile("widowmakerMiniRockets",55,25,0,90) 
	IMDK H 0 Bright A_CustomMissile("widowmakerMiniRockets",55,10,25,90) 
    IMDK H 2 Bright A_FaceTarget
	IMDK G 2
    Goto See
  Pain:
    TNT1 A 0 A_Jump(80,"PainMissile")
    IMDK I 5
    IMDK I 5 A_Pain
    Goto See
   PainMissile:
    IMDK I 5
    IMDK I 5 A_Pain
    Goto Missile
  XDeath:
  Death:
    IMDK I 7 A_Scream 
	IMDK I 2 Bright 
	TNT1 A 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))	
	IMDK IIJJJ 1 Bright A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 A 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))	
	IMDK JJJKK 1 Bright A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 A 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))	
	IMDK KKLLL 1 Bright A_CustomMissile("Kaboom17", Random(10,50), 0, random(0,360), 2, random(0,360))
	TNT1 A 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))
    IMDK M 6 A_NoBlocking
    IMDK N -1
    Stop
  Raise:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    IMDK NMLKJI 6
    Stop
	}   
}

Actor ImprovedWidowmakerSpawner
{
  States
  {
  Spawn:
	TNT1 AAAAAAAAAAAAAA 0 NoDelay A_SpawnItemEx("ImprovedWidowmakerSpawner2",random(-250,250),random(-250,250),0,0,0,0,0,SXF_NOCHECKPOSITION,0,tid)
	Stop
  }
}

Actor ImprovedWidowmakerSpawner2
{
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A random(0,10)
	TNT1 A 0 A_SpawnItemEx("TeleportFog")
	TNT1 A 0 A_SpawnItemEx("ImprovedWidowmaker",0,0,0,0,0,0,random(0,360),0,0,tid)
	Stop
	}
}