ACTOR LostSoulClass : PlayerPawn
{
  health 100
  gibhealth 99999 //added - actor can not be gibbed
  radius 14
  height 44
  mass 50
  speed 0.6
  painchance 128
  Player.DisplayName "Lost Soul"
  Player.MaxHealth 100
  Player.SoundClass "MLostSoul"
  
  Player.MorphWeapon "MLostSoulWeap"
  Player.WeaponSlot 1, MLostSoulWeap
  Player.JumpZ 0
  Player.ViewHeight 20
  Player.AttackZOffset 5
  RenderStyle SoulTrans
  
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.5
  DamageFactor "MarineRLDamage", 0.5
  DamageFactor "BFGSplash", 0.5
  DamageFactor "MarineRail", 0.35
  
  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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  +DONTFALL
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
	SKUL AB 10 bright 
    loop
  See:
    SKUL A 0
    SKUL A 1 A_Jump (240,2) //0
	SKUL A 0 A_PlaySoundEx ("skull/active","body")
    SKUL AB 6 bright
    goto Spawn
  Missile:
    SKUL C 4 bright
    SKUL D 4 bright
    SKUL CCDD 2 bright
	SKUL C 3
    goto Spawn
  Melee:
    SKUL C 4 bright
    SKUL D 4 bright
    SKUL CCDD 2 bright
	SKUL C 3
    goto Spawn
  Death:
    TNT1 A 0 A_GiveToTarget ("MarineExp",3)
    SKUL F 6 bright A_NoGravity
    SKUL G 6 bright A_PlaySoundEx ("skull/death","body")
    SKUL H 6 bright Thing_changeTid(144,0)
    SKUL I 6 bright A_NoBlocking
    SKUL JK 6 bright
	TNT1 A 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    TNT1 A 1 A_HideThing
	TNT1 A -1 //added
	stop
  }
}


ACTOR MLostSoulWeap : Weapon
{
  OBITUARY "%o was spooked by %k."
  weapon.kickback 30
  +WEAPON.NOALERT
  +Ammo_Optional
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  Select:
	TNT1 A 1 A_Raise
    loop
  Ready:
    TNT1 A 6 A_WeaponReady
    //TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    //TNT1 A 2 A_WeaponReady
    //TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
	TNT1 A 0 HealThing(1)	
    Loop
  DeSelect:
    TNT1 A 1 A_Lower
    Loop
  Fire:
    TNT1 A 1 A_JumpIfCloser (80,"Melee")
	TNT1 A 1 A_Recoil (-5)
	TNT1 A 1 A_JumpIfCloser (80,"Melee")
    TNT1 A 1 A_Recoil (-5)
	TNT1 A 1 A_JumpIfCloser (80,"Melee")
    TNT1 A 1 A_Recoil (-5)
	TNT1 A 1 A_JumpIfCloser (80,"Melee")
    Goto Ready
  Melee:
   TNT1 A 1 A_PlaySoundEx ("skull/melee","Body")
   TNT1 A 1 A_CustomPunch (3,0,1,"FBulletPuff")
   TNT1 A 1 A_CustomPunch (2,0,1,"FBulletPuff")
   TNT1 A 1 A_CustomPunch (1,0,1,"FBulletPuff")
   TNT1 A 16
   Goto Ready
  AltFire:
    TNT1 A 5 ACS_ExecuteAlways (419,0,18)
	goto ready	
  }
}