ACTOR DemonClass : PlayerPawn
{
  health 150
  painchance 180
  speed 1
  radius 30
  height 56
  mass 400
  Player.DisplayName "Demon"
  Player.MaxHealth 150
  Player.SoundClass "Mdemon"
  Player.JumpZ 10
  Player.ViewHeight 30
  Player.MorphWeapon "DemonMouth"
  Player.WeaponSlot 1, DemonMouth
  
  DamageFactor "MarineDamage", 0.8
  DamageFactor "MarineRLDamage", 0.8
  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
  -FRIENDLY
  +NOTARGET
  -PICKUP
  +NOPAIN
  +NOSKIN
   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 Thing_changeTid(144,0)
    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 2 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 R 4 Thing_changeTid(144,0)
    SARG STU 4 
  XDeathWait:	
    SARG V 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
	TNT1 A 0 Thing_Remove (0)
	stop	
  }
}

ACTOR DemonMouth : 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 3 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    DEMH A 3 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	DEMH A 0 HealThing(1)
	DEMH A 0 A_SpawnItemEx ("MDemonTraceRun",-10,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,5)
	goto ready	
  }
}

actor MDemonTraceRun
{
  +NOBLOCKMAP
  +NOGRAVITY
  +NOTELEPORT
  RenderStyle translucent
  Alpha 0.20

  States
  {	
  Spawn:
    SARG ABCD 2
    stop
  }
}

ACTOR BloodDemonClass : PlayerPawn
{
  health 300
  painchance 180
  speed 1.2
  radius 30
  height 56
  mass 400
  Player.DisplayName "BloodDemon"
  Player.MaxHealth 300
  Player.SoundClass "Bdemon"
  Player.JumpZ 10
  Player.ViewHeight 30
  Player.MorphWeapon "BloodDemonMouth"
  Player.WeaponSlot 1, BloodDemonMouth
  
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRLDamage", 1
  DamageFactor "MarineRail", 0.9
  DamageFactor "CybRLDamage", 0.25
  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
  -PICKUP
  +NOPAIN
  +NOSKIN
   states
  {
  Spawn:
	SRG2 AB 10 
    loop
  See:
    SRG2 A 0
    SRG2 A 0 A_Jump (240,2)
	SRG2 A 0 A_PlaySoundEx ("blooddemon/active","body")
    SRG2 A 0 A_PlaySound("blooddemon/walk")
	SRG2 AB 4 
	SRG2 C 0 A_PlaySound("blooddemon/walk")
	SRG2 CD 4
    loop
  Missile:
    SRG2 EFG 8
    goto Spawn
  Death:
    SRG2 I 8 A_GiveToTarget ("MarineExp",5)
    SRG2 J 8 A_PlaySoundEx ("blooddemon/death","body")
	SRG2 J 0 A_SpawnItemEx("BloodDemonArm", 10, 0, 32, 0, 8, 0, 0, 128)
    SRG2 K 4 Thing_changeTid(144,0)
    SRG2 L 4 A_NoBlocking
    SRG2 M 4
	TNT1 A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    SRG2 N 2 A_CheckSight("Removecorpse")
    loop	
  Removecorpse:
	TNT1 A 0 Thing_Remove (0)
	stop	
  }
}

ACTOR BloodDemonMouth : Weapon
{
  obituary "%o Was chewed up and spat out 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 3 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    DEMH A 3 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	DEMH A 0 HealThing(1)
	DEMH A 0 A_SpawnItemEx ("BloodDemonTraceRun",-10,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 ("blooddemon/melee","Weapon")
	DEMH A 7 A_CustomPunch (7,0,0,"FBulletPuff",60)
	DEMH A 6 A_CustomPunch (5,0,0,"FBulletPuff",60)
    DEMH A 6 A_CustomPunch (4,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 5 A_CustomPunch (6,0,0,"FBulletPuff",60)
    DEMH A 5 A_CustomPunch (5,0,0,"FBulletPuff",60)	
    Goto Ready
  AltFire:
    DEMH A 5 ACS_ExecuteAlways (419,0,23)
	goto ready	
  }
}

actor BloodDemonTraceRun
{
  +NOBLOCKMAP
  +NOGRAVITY
  +NOTELEPORT
  RenderStyle translucent
  Alpha 0.20

  States
  {	
  Spawn:
    SRG2 ABCD 2
    stop
  }
}
