Actor D3Wraith 10077
{
  //$Title "DOOM 3 Wraith"
  //$Category XV117Monsters
	Game Doom
	monster
  HitObituary "%o was slashed by a Wraith"
  Health 200
  Radius 22
  Height 56
  Mass 200
  Speed 12
  PainChance 64
  MeleeDamage 6
  PainChance "Saw", 200
	PainChance "Cut", 200
	PainChance "Kick", 255
	PainChance "SSG", 255
	PainChance "CauseWaterSplash", 0
	PainChance "CauseObjectsToSplash", 0
    damagefactor "Crush", 10.0
	damagefactor "GibRemoving", 0.0
    damagefactor "Kick", 0.5
	damagefactor "Fatality", 1.0
    damagefactor "SuperPunch", 0.8
    damagefactor "SuperKick", 0.9
	damagefactor "Saw", 2.0
	damagefactor "Avoid", 0.0
	damagefactor "TeleportRemover", 0.0
	DamageFactor "Bullet", 1.25
	DamageFactor "MachineGunBulletPuff", 1.25
	DamageFactor "ExtremeBulletPuff", 1.25
	damagefactor "ShotgunPuff", 1.25
	damagefactor "Shotgun", 0.9
	damagefactor "SSG", 5.0
	damagefactor "Explosive", 3.0
	damagefactor "ExplosiveImpact", 2.5
	damagefactor "Plasma", 2.0
	damageFactor "Desintegrate", 5.0
	damagefactor "Shrapnel", 2.0
  SeeSound "D3Wraith/Sight"
  PainSound "D3Wraith/Pain"
  DeathSound "D3Wraith/Death"
  ActiveSound "D3Wraith/Active" //Wraith doesn't play any active sounds, in Doom 3, but here they are anyway
  MeleeSound "Imp/Melee"
  Tag "Wraith"
  Monster
  +FloorClip
  States
  {
  Spawn:
    3WRT A 1
    3WRT A 0 A_JumpIf(Args[0] > 0, "Spawn2")
    3WRT A 0 A_JumpIfInventory("WraithTeleporting", 1, "StopTeleport")
    3WRT A 1 A_Look
    Loop
  Spawn2:
    3WRT A 0 A_JumpIfInventory("WraithTeleporting", 1, "StopTeleport")
    3WRT A 1 A_LookEx(8, 0, 0, 0, 0, "Teleport")
    Loop
StopTeleport:
    3WRT A 0 A_SpawnItem("TeleportFog")
    3WRT A 0 A_ChangeFlag("Invulnerable", 0)
    3WRT A 0 A_SetShootable
    3WRT A 0 A_ChangeFlag("NonShootable", 0)
    3WRT A 0 A_ChangeFlag("Shootable", 1)
    3WRT A 0 A_ChangeFlag("NoTeleport", 0)
    3WRT A 0 A_ChangeFlag("NoRadiusDMG", 0)
    3WRT A 0 A_TakeInventory("WraithTeleporting", 1)
    Goto Spawn
  See:
    3WRT B 2 A_Chase("", "", 0)
    3WRT BBCCCDDDEEE 2 A_Chase
    3WRT B 0 A_JumpIf(Args[1] > 0, 1)
    Goto See+1
    3WRT B 0 A_Jump(16, "Missile")
    Goto See+1
  Melee:
    3WRT A 0 A_JumpIfInventory("WraithTeleporting", 1, 5)
    3WRT A 6 A_FaceTarget
    3WRT F 5 A_FaceTarget
    3WRT G 0 A_PlayWeaponSound("D3Wraith/Attack")
    3WRT G 8 A_MeleeAttack
    goto see
    3WRT A 0 A_SpawnItem("TeleportFog")
    3WRT A 0 A_ChangeFlag("Invulnerable", 0)
    3WRT A 0 A_SetShootable
    3WRT A 0 A_ChangeFlag("NonShootable", 0)
    3WRT A 0 A_ChangeFlag("Shootable", 1)
    3WRT A 0 A_ChangeFlag("NoTeleport", 0)
    3WRT A 0 A_ChangeFlag("NoRadiusDMG", 0)
    3WRT A 0 A_ChangeFlag("DropOff", 0)
    3WRT A 0 A_TakeInventory("WraithTeleporting", 1)
    3WRT F 5 A_FaceTarget
    3WRT G 0 A_PlayWeaponSound("D3Wraith/Attack")
    3WRT G 8 A_MeleeAttack
    Goto See
  Missile:
    3WRT A 0 A_JumpIfCloser(128, 2)
    3WRT A 0 A_JumpIfCloser(1024, 2)
    3WRT A 0
    Goto See
    3WRT A 0 A_Jump(128, "Teleport")
    Goto See
  Teleport:
    3WRT AAA 6 A_FaceTarget
    TNT1 A 0 A_GiveInventory("WraithTeleporting", 1)
    TNT1 A 0 A_SpawnItem("TeleportFog")
    TNT1 A 0 A_ChangeFlag("Invulnerable", 1)
    TNT1 A 0 A_ChangeFlag("NonShootable", 1)
    TNT1 A 0 A_ChangeFlag("NoTeleport", 1)
    TNT1 A 0 A_ChangeFlag("NoRadiusDMG", 1)
    TNT1 A 0 A_ChangeFlag("DropOff", 1)
    TNT1 A 0 A_UnSetShootable
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(1, 0, 0, 0)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_ExtChase(1, 0, 0, 0)
    TNT1 A 1 A_ExtChase(1, 0, 0, 0)
    3WRT A 0 A_SpawnItem("TeleportFog")
    3WRT A 0 A_ChangeFlag("Invulnerable", 0)
    3WRT A 0 A_SetShootable
    3WRT A 0 A_ChangeFlag("NonShootable", 0)
    3WRT A 0 A_ChangeFlag("Shootable", 1)
    3WRT A 0 A_ChangeFlag("NoTeleport", 0)
    3WRT A 0 A_ChangeFlag("NoRadiusDMG", 0)
    3WRT A 0 A_ChangeFlag("DropOff", 0)
    3WRT A 0 A_TakeInventory("WraithTeleporting", 1)
    3WRT AA 6 A_FaceTarget
    Goto See
  Pain:
    3WRT A 4
    3WRT A 4 A_Pain
    Goto See
  Death:
  TNT1 A 0 A_SpawnItemEx("BloodSplasher2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		 TNT1 AA 0 A_CustomMissile ("SuperGoreSPawner", 60, 0, random (0, 360), 2, random (0, 160))
		 TNT1 AA 0 A_CustomMissile ("UltraGoreSPawner", 60, 0, random (0, 360), 2, random (0, 160))
		 TNT1 AA 0 A_CustomMissile ("XDeath3", random (45, 55), random (5, -5), random (160, 200), 2, random (-10, 10))
		 TNT1 AA 0 A_CustomMissile ("XDeath2", random (45, 55), random (5, -5), random (160, 200), 2, random (-10, 10))
        TNT1 A 0 A_CustomMissile ("MuchBlood", 60, 0, random (0, 360), 2, random (0, 160))
		TNT1 A 0 A_CustomMissile ("Brutal_LiquidBlood", 50, 0, random (0, 360), 2, random (30, 90))
		TNT1 AA 0 A_CustomMissile ("Brutal_LiquidBlood", 50, 0, random (0, 360), 2, random (0, 180))
		TNT1 AA 0 A_CustomMissile ("Brutal_LiquidBlood", 40, 0, random (0, 360), 2, random (0, 180))
		TNT1 AA 0 A_CustomMissile ("Brutal_LiquidBlood", 30, 0, random (0, 360), 2, random (0, 180))
		TNT1 AAAAA 0 A_CustomMissile ("BloodmistXXBig", 30, 0, random (0, 360), 2, random (70, 90))
		 TNT1 A 0 A_SpawnItem ("Brutal_BloodSpot")
		TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
    3WRT H 8
    3WRT I 8 A_Scream
    3WRT J 6
    3WRT K 6 A_NoBlocking
    3WRT L -1

	Death.Railgun:
	Death.Blast:
	Death.SuperPunch:
	Death.ExtremePunches:
	Death.SSG:
	XDeath:
		TNT1 A 0 A_XScream
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_FaceTarget
		TNT1 AAA 0 A_CustomMissile ("XDeath1", 42, 0, random (0, 190), 2, random (10, 60))
		TNT1 AAA 0 A_CustomMissile ("XDeath3", 42, 0, random (0, 190), 2, random (10, 60))
		TNT1 A 0 A_CustomMissile ("XDeath2", 42, 0, random (0, 190), 2, random (10, 60))
		TNT1 A 0 A_CustomMissile ("XDeath4", 42, 0, random (0, 190), 2, random (10, 60))
		Stop
	Dead.ExplosiveImpact:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem ("GrowingBloodPool")
		TNT1 A 0 A_SpawnItem ("ThisImpGotFuckedHard")
		TNT1 A 0 A_SpawnItem ("Ploft")
		TNT1 AAAA 0 A_SpawnItem ("Blood")
		TNT1 A -1
		Stop

	Death.Plasma: 
	Death.Plasma2:
	PBR1 A 6 A_Scream
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("Ashes1", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("Ashes2", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 AAAA 0 A_CustomMissile ("BluePlasmaFireNonStatic", 32, 0, random (0, 360), 2, random (0, 180))
	PBR1 B 6 A_NoBlocking
	PBR1 CDEFGH 6 A_CustomMissile ("Blood", 10, 0, random (0, 360), 2, random (0, 160))
	PBR1 HHHHHHHHHHHHHHHHHHHHHH 8 A_CustomMissile ("PlasmaSmoke", 10, 0, random (0, 360), 2, random (0, 160))
	PBR1 H -1
	Stop
	
	Death.SuperPlasma:
        TNT1 A 0
        TNT1 A 0 A_XScream
        TNT1 A 0 A_NoBlocking
		XBRN AA 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
        TNT1 AAAA 0 A_CustomMissile ("Brutal_Blood", 30, 0, random (0, 360), 2, random (0, 160))

	    TNT1 A 0 A_CustomMissile ("XDeathBurnedArm", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedLeg", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedSkull", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat2", 32, 0, random (0, 360), 2, random (0, 160))
	    TNT1 A 0 A_CustomMissile ("XDeathBurnedMeat3", 32, 0, random (0, 360), 2, random (0, 160))

		XBRN BB 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
        TNT1 A 0 A_CustomMissile ("Brutal_Blood", 30, 0, random (0, 360), 2, random (0, 160))
		XBRN CC 2 BRIGHT A_SpawnItem("BlueFlare",0,43)
		TNT1 AAAAA 0 A_CustomMissile ("PlasmaParticleX", 48, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAA 0 A_CustomMissile ("BigPlasmaParticleX", 42, 0, random (0, 360), 2, random (0, 360))
        TNT1 A 0
        Stop

    Stop
  Raise:
    TROO LKJIH 8
    Goto See
  }
}

Actor WraithTeleporting : Inventory
{
  Inventory.MaxAmount 1
}