ACTOR SpectreClass : PlayerPawn
{
  health 150
  painchance 180
  speed 1
  radius 30
  height 56
  mass 400
  Player.DisplayName "Spectre"
  Player.MaxHealth 150
  Player.SoundClass "Mdemon"
  Player.JumpZ 10
  Player.ViewHeight 30
  Player.MorphWeapon "SpectreMouth"
  Player.WeaponSlot 1, SpectreMouth 
  
  DamageFactor "MarineDamage", 0.9
  DamageFactor "MarineRLDamage", 0.9
  DamageFactor "CybRLDamage", 0.2
  DamageFactor "ImpBallDamage", 0
  DamageFactor "CacoDamage", 0
  DamageFactor "SkelDamage", 0
  DamageFactor "FatsoDamage", 0
  DamageFactor "KnightDamage", 0
  DamageFactor "ArachDamage", 0
  DamageFactor "viledamage", 0
  DamageFactor "Control", 0
  DamageFactor "ZombiesDamage", 0
  DamageFactor "Slime", 0
  
  RenderStyle OptFuzzy
  Alpha 0.5
  -PICKUP
  +NOSKIN
  +SHADOW
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    SARG AB 10 
    loop
  See:
    SARG A 0
    SARG A 0 A_Jump (240,2)
    SARG A 0 A_PlaySoundEx ("demon/active","body")
    SARG ABCD 4
    loop
  Missile:
    SARG EFG 8
    goto Spawn
  Death:
    SARG I 8 A_GiveToTarget ("MarineExp",2)
    SARG J 8 A_PlaySoundEx ("demon/death","body")
    SARG K 4
    SARG L 4 A_NoBlocking
    SARG M 4
    TNT1 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    SARG N 1 A_CheckSight("Removecorpse")
    loop	
  XDeath:
    SARG O 8 A_GiveToTarget ("MarineExp",3)
    SARG P 8 A_XScream
    SARG Q 4 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    SARG RSTU 4 
  XDeathWait:	
    SARG V 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop
  }
}

ACTOR SpectreMouth : Weapon
{
  obituary "%o was bit by %k."
  weapon.kickback 60
  +ammo_optional
  +WEAPON.NOALERT
  +WEAPON.DONTBOB
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DEMH A 1 A_Raise
    Goto Ready
  Ready:
    DEMH A 2 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    DEMH A 1 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	DEMH A 0 HealThing(1)
	DEMH A 0 A_SpawnItemEx ("MSpectreTraceRun",-20,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	goto ready 
  DeSelect:
    DEMH A -1
    Loop
  Fire:
    DEMH A 0 A_JumpIfInventory ("Mskull",0,"AdFire")
    DEMH A 0 A_PlaySoundEx ("demon/melee","Weapon")
	DEMH A 8 A_CustomPunch (5,0,0,"FBulletPuff",60)
	DEMH A 7 A_CustomPunch (4,0,0,"FBulletPuff",60)
    DEMH A 6 A_CustomPunch (3,0,0,"FBulletPuff",60)	
    Goto Ready
  AdFire:
    DEMH A 0 A_PlaySoundEx ("demon/melee","Weapon")
	DEMH A 7 A_CustomPunch (8,0,0,"FBulletPuff",60)
	DEMH A 6 A_CustomPunch (7,0,0,"FBulletPuff",60)
    DEMH A 5 A_CustomPunch (6,0,0,"FBulletPuff",60)	
    Goto Ready
  AltFire:
    DEMH A 5 ACS_ExecuteAlways (419,0,11)
	goto ready	
  }
}

actor MSpectreTraceRun
{
  +NOBLOCKMAP
  +NOGRAVITY
  +NOTELEPORT
  RenderStyle OptFuzzy
  Alpha 0.5

  States
  {	
  Spawn:
    SARG AB 2
    stop
  }
}

