
actor DooMImpClass : PlayerPawn
{
  health 60
  radius 20
  height 54
  mass 80
  speed 0.35
  painchance 140
  Player.MaxHealth 60
  Player.ViewHeight 45
  Player.JumpZ 5
  Player.MorphWeapon "ImpBaller"
  Player.WeaponSlot 1, ImpBaller
  Player.DisplayName "DoomImp"
  Player.SoundClass "MImpale"
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  
  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
  -FRIENDLY
  +NOTARGET
  +NOSKIN
  +NOPAIN
  -PICKUP
  states
  {
  Spawn:
      TROO A 10 
	  TROO B 10 
      loop
  See:
      TROO A 0
      TROO A 0 A_Jump (240,2)
	  TROO A 0 A_PlaySoundEx ("imp/active","body")
      TROO ABCD 6 
      Loop
  Missile:
      TROO EF 8
	  TROO G 6
	  goto Spawn
  Melee:
      TROO G 6
      goto See
  Death:
    TROO I 8 A_GiveToTarget ("MarineExp",3)
    TROO J 8 A_PlaySoundEx ("imp/death","Body")
    TROO K 6
    TROO L 6 A_NoBlocking
	TROO L 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    DeathWait:
    TROO M 1 A_CheckSight("Removecorpse")
    loop
  XDeath:
    TROO N 5 A_GiveToTarget ("MarineExp",3)
    TROO O 5 A_XScream
    TROO P 5 
    TROO Q 5 A_NoBlocking
	TROO Q 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TROO RST 5
  XDeathWait:	
    TROO U 1 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
	 TNT1 A 0 Thing_Remove (0)
	stop	
  }
}

ACTOR ImpBaller : Weapon
{
  obituary "%o was burned by %k."
  hitobituary "%o was slashed by %k."
  weapon.kickback 60
  attacksound "imp/melee"
  weapon.ammouse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON

  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    CLAW A 1 A_Raise
    Goto Ready
  Ready:
    CLAW A 6 A_WeaponReady
    NULL A 0 A_JumpIfInventory ("Mskull",0,1)
    Loop
	NULL A 0 HealThing(1)
	goto ready 
  DeSelect:
    CLAW A 1 A_Lower
    Loop
  Fire:
    CLAW A 0 A_JumpIfCloser (60,"Melee")
	CLAW B 5 bright
    CLAW C 5 bright
	CLAW D 5 bright A_FireCustomMissile ("PDoomImpBall",0,0,5,10)
	CLAW E 3
    Goto Ready
  Melee:
    CLAW A 5
	CLAW B 6 A_CustomPunch (8,0,1,"FBulletPuff")
    CLAW E 6
	goto Ready	
  AltFire:
    CLAW A 5 ACS_ExecuteAlways (419,0,2)
	Goto Ready
  }
}

actor PDoomImpBall : DoomImpBall
{
damage 6
speed 30
DamageType "ImpBallDamage"
}

// DarkImp Class

actor DarkImpClass : PlayerPawn
{
  health 120
  radius 20
  height 54
  mass 80
  speed 0.45
  painchance 140
  Player.MaxHealth 120
  Player.ViewHeight 45
  Player.JumpZ 5
  Player.MorphWeapon "DarkImpHand"
  Player.WeaponSlot 1, DarkImpHand
  Player.DisplayName "DarkImp"
  Player.SoundClass "MsDarkImp"
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  
  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
  -FRIENDLY
  +NOTARGET
  +NOSKIN
  +NOPAIN
  -PICKUP
  states
  {
  Spawn:
      DRKI AB 10 
      loop
  See:
      DRKI A 0
      DRKI A 0 A_Jump (240,2)
	  DRKI A 0 A_PlaySoundEx ("darkimp/active","body")
      DRKI ABCD 6 
      Loop
  Missile:
	  DRKI EF 4
	  DRKI G 5 bright
	  goto Spawn
  Melee:
      DRKI G 6
      goto See
  Death:
      DRKI I 8 A_GiveToTarget ("MarineExp",4)
      DRKI J 8 A_PlaySoundEx ("darkimp/death","Body")
      DRKI K 6
      DRKI L 6 A_NoBlocking
	  DRKI L 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
      DRKI M 1 A_CheckSight("Removecorpse")
      loop
  XDeath:
      DRKI N 5 A_GiveToTarget ("MarineExp",4)
      DRKI O 5 A_XScream
      DRKI P 5 
      DRKI Q 5 A_NoBlocking
	  DRKI Q 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
      DRKI RST 5
  XDeathWait:	
      DRKI U 1 A_CheckSight("Removecorpse")
      loop
  Removecorpse:
	  TNT1 A 0 Thing_Remove (0)
	  stop	
  }
}

ACTOR DarkImpHand : Weapon
{
  obituary "%o was burned by %k."
  hitobituary "%o was slashed by %k."
  weapon.kickback 60
  attacksound "imp/melee"
  weapon.ammouse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON

  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DCLW A 1 A_Raise
    Goto Ready
  Ready:
    DCLW A 6 A_WeaponReady
    NULL A 0 A_JumpIfInventory ("Mskull",0,1)
    Loop
	NULL A 0 HealThing(1)
	goto ready 
  DeSelect:
    DCLW A 1 A_Lower
    Loop
  Fire:
    DCLW A 0 A_JumpIfCloser (60,"Melee")
	DCLW B 4
	DCLW C 4
	DCLW D 4 bright A_FireCustomMissile ("MPDarkSeeker",0,0,5,10)
    Goto Ready
  Melee:
    DCLW A 5
	DCLW B 6 A_CustomPunch (8,0,1,"FBulletPuff")
    DCLW E 6
	goto Ready	
  AltFire:
    DCLW A 5 ACS_ExecuteAlways (419,0,20)
	Goto Ready
  }
}

actor MPDarkSeeker : MDarkSeeker
{
    Speed 16
}

// Shadow 

actor ShadowClass : PlayerPawn
{
  health 160
  radius 20
  height 54
  mass 100
  speed 1.2
  painchance 200
  Player.MaxHealth 100
  Player.ViewHeight 40
  Player.JumpZ 10
  Player.MorphWeapon "ShadowHand"
  Player.WeaponSlot 1, ShadowHand
  Player.DisplayName "Shadow"
  Player.SoundClass "Sshadow"
  RenderStyle "Translucent"
  Alpha 0.7
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  
  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
  -FRIENDLY
  +NOTARGET
  +NOSKIN
  +NOPAIN
  -PICKUP
  states
  {
  Spawn:
      SHDW E 5
      loop
  See:
      SHDW A 0
      SHDW A 0 A_Jump (240,2)
	  SHDW A 0 A_PlaySoundEx ("Shadow/active","body")
      SHDW A 3 A_SpawnItemEx("ShadowGhostA",-20, 0, 0, 0, 0, 0, 0, 128)
	  SHDW B 3 A_SpawnItemEx("ShadowGhostB",-20, 0, 0, 0, 0, 0, 0, 128)
	  SHDW C 3 A_SpawnItemEx("ShadowGhostC",-20, 0, 0, 0, 0, 0, 0, 128)
	  SHDW D 3 A_SpawnItemEx("ShadowGhostD",-20, 0, 0, 0, 0, 0, 0, 128)
      Loop
  Missile:
      SHDW EF 6
	  SHDW G 8
	  goto Spawn
  Melee:
      SHDW E 6
      SHDW G 8
      goto See
  Death:
	SHDW I 6 A_PlaySoundEx ("Shadow/death","Body")
	SHDW I 0 A_GiveToTarget ("MarineExp",5)
	SHDW J 5 A_NoBlocking
	SHDW K 5 A_SpawnItemEx("Shadowtorso", 0, 0, 0, 1, 0, 0, 0, 128)
	SHDW L 5 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	SHDW MNO 6 
	DeathWait:
    SHDW P 1 A_CheckSight("Removecorpse")
    loop	
  XDeath:
	SHDX A 8 A_GiveToTarget ("MarineExp",5)
	SHDX B 6 A_XScream
	SHDX C 6 
	SHDX D 6 A_NoBlocking
	SHDX E 6 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	SHDX F 6
	XDeathWait:	
    SHDX G 1 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
	stop	
  }
}

ACTOR ShadowHand : Weapon
{
  obituary "%o was assassinated by %k."
  hitobituary "%o was assassinated by %k."
  weapon.kickback 60
  attacksound "imp/melee"
  weapon.ammouse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON

  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DCLW A 1 A_Raise
    Goto Ready
  Ready:
    DCLW A 6 A_WeaponReady
    NULL A 0 A_JumpIfInventory ("Mskull",0,1)
    Loop
	NULL A 0 HealThing(1)
	goto ready 
  DeSelect:
    DCLW A 1 A_Lower
    Loop
  Fire:
    DCLW A 0 A_JumpIfCloser (60,"Melee")
	DCLW A 0 A_JumpIfInventory ("Mskull",0,"Fire2")
	DCLW B 7 
    SCLW C 6 A_FireCustomMissile ("PShadowBall",0,0,0,8)
	SCLW D 6 A_FireCustomMissile ("PShadowBall",0,0,0,8)
	DCLW E 8
    Goto Ready
  Fire2:
	DCLW B 8
    SCLW C 6 A_FireCustomMissile ("PShadowBall",0,0,0,8)
	SCLW C 6 A_FireCustomMissile ("PShadowBall",0,0,0,8)
	SCLW D 6 A_FireCustomMissile ("PShadowBall",0,0,0,8)
	DCLW E 8
    Goto Ready	
  Melee:
    DCLW A 3
	DCLW B 3 A_CustomPunch (7,0,1,"FBulletPuff")
    DCLW E 3
	goto Ready	
  AltFire:
    DCLW A 5 ACS_ExecuteAlways (419,0,24)
	Goto Ready
  }
}

actor PShadowBall : ShadowBall
{
Speed 20
Damage 6
}

actor SoulHarvesterclass : PlayerPawn
{
  health 100
  radius 20
  height 54
  mass 80
  speed 0.40
  painchance 140
  Player.MaxHealth 100
  Player.ViewHeight 45
  Player.JumpZ 5
  Player.MorphWeapon "HarvesterHand"
  Player.WeaponSlot 1, HarvesterHand
  Player.DisplayName "SoulHarvester"
  Player.SoundClass "SHplayer"
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  
  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
  -FRIENDLY
  +NOTARGET
  +NOSKIN
  +NOPAIN
  -PICKUP
  states
  {
  Spawn:
      SLHV A 10 
	  SLHV B 10 
      loop
  See:
      SLHV A 0
      SLHV A 0 A_Jump (240,2)
	  SLHV A 0 A_PlaySoundEx ("imp/active","body")
      SLHV ABCD 6 
      Loop
  Missile:
	  SLHV EFG 2 
	  SLHV HIJK 3 Bright 
	  SLHV L 3 Bright 
	  SLHV M 4
	  goto Spawn
  Melee:
      SLHV EF 3
      goto Spawn
  Death:
    SLHV O 7 A_PlaySoundEx ("imp/death","Body")
	SLHV P 7 A_GiveToTarget ("MarineExp",7)
	SLHV QR 7
    SLHV S 6 A_CustomMissile("SoulHarvesterGhost", 32, 0, 0)
    SLHV T 5 A_NoBlocking
	SLHV UV 5
    DeathWait:
    SLHV W 1 A_CheckSight("Removecorpse")
    loop
  XDeath:
    SLHV X 6 A_Xscream
	SLHV Y 6 A_CustomMissile("SoulHarvesterGhost", 32, 0, 0)
	SLHV Z 6 A_GiveToTarget ("MarineExp",7)
	SLHV [ 6 
	SLHV ] 6 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  XDeathWait:	
    SLHX A 1 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
	 TNT1 A 0 Thing_Remove (0)
	stop	
  }
}

ACTOR HarvesterHand : Weapon
{
  obituary "%o couldn't evade %k attack."
  hitobituary "%o couldn't evade %k attack."
  weapon.kickback 60
  attacksound "imp/melee"
  weapon.ammouse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DCLW A 1 A_Raise
    Goto Ready
  Ready:
    DCLW A 6 A_WeaponReady
    NULL A 0 A_JumpIfInventory ("Mskull",0,1)
    Loop
	NULL A 0 HealThing(1)
	goto ready 
  DeSelect:
    DCLW A 1 A_Lower
    Loop
  Fire:
	DCLW B 8 
    DCLW C 8 A_FireCustomMissile ("PSoulHarvesterBall",0,0,0,8)
	DCLW E 8
    Goto Ready
  AltFire:
    DCLW A 5 ACS_ExecuteAlways (419,0,29)
	Goto Ready
  }
}

actor PSoulHarvesterBall : SoulHarvesterBall
{
speed 12
}