ACTOR DemonClass : PlayerPawn
{
  health 350 //150
  gibhealth 99999 //added - actor can not be gibbed
  painchance 180
  speed 1.5 //1
  radius 30
  height 56
  mass 400
  Player.DisplayName "Demon"
  Player.MaxHealth 350
  Player.SoundClass "Mdemon"
  Player.JumpZ 15 //10
  Player.ViewHeight 30
  Player.MorphWeapon "DemonMouth"
  Player.WeaponSlot 1, DemonMouth
  
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.6
  DamageFactor "MarineRLDamage", 0.6
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRail", 0.6
  
  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
  +LONGMELEERANGE //added
  +NOTRIGGER //added - avoid issues in level design
  MeleeRange 180
  
   states
  {
  Spawn:
	SARG AB 10 
    loop
  See:
    SARG A 0
    SARG A 1 A_Jump (240,2) //0
	SARG A 0 A_PlaySoundEx ("demon/active","body")
    SARG ABCD 4
	SARG A 0 HealThing(10)
    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
	SARG M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	SARG N -1
	stop
  XDeath:
    SARG O 8 A_GiveToTarget ("MarineExp",3)
    SARG P 8 A_XScream
    SARG Q 4 A_NoBlocking
	SARG Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    SARG R 4 Thing_changeTid(144,0)
    SARG STU 4
	SARG V -1
    stop	
  }
}

ACTOR DemonMouth : Weapon
{
  obituary "%o was bit by %k."
  weapon.kickback 60
  +ammo_optional
  +WEAPON.NOALERT
  +WEAPON.DONTBOB
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DEMH A 1 A_Raise
    Goto Ready
  Ready:
    DEMH A 3 A_WeaponReady
    Loop 
  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 (15,0,0,"FBulletPuff",60) //5
	DEMH A 7 A_CustomPunch (15,0,0,"FBulletPuff",60) //4
    DEMH A 6 A_CustomPunch (15,0,0,"FBulletPuff",60)	//3
    Goto Ready
  AdFire:
    DEMH A 0 A_PlaySoundEx ("demon/melee","Weapon")
	DEMH A 7 A_CustomPunch (15,0,0,"FBulletPuff",60)
	DEMH A 6 A_CustomPunch (15,0,0,"FBulletPuff",60)
    DEMH A 5 A_CustomPunch (15,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 500 //300
  gibhealth 99999 //added - actor can not be gibbed
  painchance 180
  speed 1.5 //1.2
  radius 30
  height 56
  mass 400
  Player.DisplayName "BloodDemon"
  Player.MaxHealth 500
  Player.SoundClass "Bdemon"
  Player.JumpZ 15 //10
  Player.ViewHeight 30
  Player.MorphWeapon "BloodDemonMouth"
  Player.WeaponSlot 1, BloodDemonMouth
  
  DamageFactor "Suicide", 0 // puppetmaster can not suicide a monster
  DamageFactor "MarineDamage", 0.6
  DamageFactor "MarineRLDamage", 0.6
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRail", 0.6
  
  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
  +LONGMELEERANGE //added
  +NOTRIGGER //added - avoid issues in level design
  MeleeRange 180
  
   states
  {
  Spawn:
	SRG2 AB 10 
    loop
  See:
    SRG2 A 0
    SRG2 A 1 A_Jump (240,2) //0
	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
	SRG2 A 0 HealThing(10)
    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
	SRG2 M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	SRG2 M -1
    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 //added
   
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Select:
    DEMH A 1 A_Raise
    Goto Ready
  Ready:
    DEMH A 3 A_WeaponReady
    Loop
  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 (15,0,0,"FBulletPuff",60)
	DEMH A 6 A_CustomPunch (15,0,0,"FBulletPuff",60)
    DEMH A 6 A_CustomPunch (15,0,0,"FBulletPuff",60)	
    Goto Ready
  AdFire:
    DEMH A 0 A_PlaySoundEx ("demon/melee","Weapon")
	DEMH A 7 A_CustomPunch (15,0,0,"FBulletPuff",60)
	DEMH A 5 A_CustomPunch (15,0,0,"FBulletPuff",60)
    DEMH A 5 A_CustomPunch (15,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
  }
}
