
actor ShotgunGuyClass : PlayerPawn

{
  Health 200 //30
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.75 //0.35
  PainChance 127
  Player.MaxHealth 120 
  Player.ViewHeight 41
  Player.JumpZ 10
  
  Player.MorphWeapon "ZombieShotGun"
  Player.WeaponSlot 1, ZombieShotGun
  Player.DisplayName "Sergeant"
  Player.SoundClass "Brainless"
  
  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
  DamageFactor "ZombieTankDamage", 0
  
  +NOPAIN
  +NOSKIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
	SPOS AB 10 
    loop
  See:
    SPOS A 1 A_Jump (240,2) //0
  	SPOS A 0 A_PlaySoundEx ("shotguy/active","body")
    SPOS ABCD 4 
    Loop	
  Missile:
    SPOS E 1
    SPOS F 10 bright
    SPOS E 10
    goto Spawn
  Death:
    SPOS I 5 A_PlaySoundEx ("shotguy/death","Body")
    SPOS J 0 Thing_changeTid(144,0)
    SPOS J 5 A_NoBlocking
    SPOS K 5 A_GiveToTarget ("MarineExp",3)
	SPOS K 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    SPOS K 1 A_SpawnItemEx ("MShotGun",0,0,random(29,38),0,0,0,0,32,0)	
	SPOS L -1
    stop	
  XDeath:
    SPOS M 5 A_GiveToTarget ("MarineExp",3)
    SPOS N 0 Thing_changeTid(144,0)
    SPOS N 5 A_XScream
    SPOS O 5 A_NoBlocking
	SPOS O 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    SPOS PQRST 5
	SPOS T 1 A_SpawnItemEx ("MShotGun",0,0,random(29,38),0,0,0,0,32,0)
	SPOS U -1
    stop	
  }
}



actor ZombieShotGun : Weapon
{
  obituary "%o chewed on %k's boomstick."
  attacksound "weapons/shotgf"
  weapon.kickback 60
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.NOAUTOAIM
  //+INVENTORY.UNDROPPABLE //added
  states
  {
  Ready:
    STG2 A 6 A_WeaponReady
    STG2 A 0 A_JumpIfInventory ("Mskull",0,3)
    STG2 A 6 A_WeaponReady
    STG2 A 0 A_JumpIfInventory ("Mskull",3,1)
	STG2 A 0 HealThing(5)
    Loop
  Deselect:
    STG2 A 1 A_Lower
    loop
  Select:
    STG2 A 1 A_Raise
    goto Ready
  Fire:
    STG2 A 0 A_FireBullets (4.5,1.3,12,6,"FBulletPuff")
    STG2 A 9 A_GunFlash
    STG2 BC 6
    STG2 D 3
    STG2 CB 6
    STG2 A 3 A_ReFire
    goto Ready
  AltFire:
    STG2 A 5 ACS_ExecuteAlways (419,0,3)
	goto ready
  Flash:
    SHTF A 3 bright A_Light1
    SHTF B 3 bright A_Light2
    SHTF B 0 bright A_Light0
    stop
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

actor SSgZombieClass : PlayerPawn

{
  Health 200 //100
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.75 //0.35
  Scale 1
  PainChance 127
  Player.MaxHealth 200  
  Player.ViewHeight 41
  Player.JumpZ 10
  Translation "112:127=16:47"
  
  Player.MorphWeapon "ZombieSuperShotgun"
  Player.WeaponSlot 1, ZombieSuperShotgun
  Player.DisplayName "SSgZombie"
  Player.SoundClass "SSSgZombie"
  
  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.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
  DamageFactor "ZombieTankDamage", 0
  
  +NOPAIN
  +NOSKIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
	GPOS AB 10 
    loop
  See:
    GPOS A 1 A_Jump (240,2) //0
  	GPOS A 0 A_PlaySoundEx ("SSGUNER/idle","body")
    GPOS ABCD 4 
    Loop	
  Missile:
    GPOS E 1
    GPOS F 10 bright
    GPOS E 10
    goto Spawn
  Death:
    GPOS I 8 A_PlaySoundEx ("SSGUNER/death","Body")
    GPOS J 8 A_NoBlocking
    GPOS K 8 A_GiveToTarget ("MarineExp",5)
    GPOS L 8 Thing_changeTid(144,0)
    GPOS M 8
    GPOS M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    GPOS M 1 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)	
	GPOS M -1
    stop	
  XDeath:
    GPOS O 5 A_GiveToTarget ("MarineExp",5)
    GPOS P 5 A_XScream
    GPOS Q 5 A_NoBlocking
	GPOS Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    GPOS R 5 Thing_changeTid(144,0)
	GPOS R 5
	GPOS S 1 A_SpawnItemEx ("MSuperShotgun",0,0,random(29,38),0,0,0,0,32,0)
    GPOS S -1
	stop	
  }
}

actor ZombieSuperShotgun : SuperShotgun 
{
  obituary "%o was blown open by a %k'."
  attacksound "SSGUNER/SSG"
  weapon.kickback 60
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.NOAUTOAIM
  //+INVENTORY.UNDROPPABLE //added
  States
  {
  Ready:
    SHT2 A 5 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    SHT2 A 5 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    TNT1 A 0 HealThing(5)
    Loop
  Deselect: 
   
    STG2 A 1 A_Lower
    loop
  Select:
    STG2 A 1 A_Raise
    goto Ready
  Fire:
	SHT2 A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
    SHT2 A 0 A_FireBullets (11.2, 7.1, 32, 5, "FBulletPuff")
    SHT2 A 2 A_GunFlash
		SHT2 A 1 A_SetPitch(-6.0 + pitch)
		SHT2 A 3 
		SHT2 A 1 A_SetPitch(+6.0 + pitch)
    SHT2 B 0 A_CheckReload
    SHT2 BCDEF 3
    SHT2 F 0 A_OpenShotgun2
    SHT2 HUVKLM 3
    SHT2 M 0 A_LoadShotgun2
    SHT2 NOPQR 3
    SHT2 R 0 A_PlaySound ("weapons/sshotc", CHAN_WEAPON)//A_CloseShotgun2 
    SHT2 RS 3
    SHT2 A 18
    SHT2 A 0 A_ReFire
    Goto Ready
  AltFireX:
    SHT2 A 0 A_FireBullets (7, 3.5, 16, 5, "FBulletPuff")
    SHT2 A 2 A_GunFlash
		SHT2 A 1 A_SetPitch(-6.0 + pitch)
		SHT2 A 3 
		SHT2 A 1 A_SetPitch(+6.0 + pitch)
    SHT2 A 9
    SHT2 A 0 A_FireBullets (7, 3.5, 16, 5, "FBulletPuff")
    SHT2 A 2 A_GunFlash
		SHT2 A 1 A_SetPitch(-6.0 + pitch)
		SHT2 A 3 
		SHT2 A 1 A_SetPitch(+6.0 + pitch)
    SHT2 B 0 A_CheckReload
    SHT2 BCDEF 3
    SHT2 F 0 A_OpenShotgun2
    SHT2 HUVKLM 3
    SHT2 M 0 A_LoadShotgun2
    SHT2 NOPQR 3
    SHT2 R 0 A_PlaySound ("weapons/sshotc", CHAN_WEAPON)//A_CloseShotgun2 
    SHT2 RS 3
    SHT2 A 18
    Goto Ready
 
  AltFire:
    SHT2 A 5 ACS_ExecuteAlways (419,0,21)
	goto ready	
  Spawn:
    SGN2 A 1 Thing_Remove(0)
    Stop
  }
}

actor AShotgunGuyClass : PlayerPawn

{
  Health 250 //70
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.75 //0.5 0.35
  PainChance 127
  Player.MaxHealth 250 //70  
  Player.ViewHeight 41
  Player.JumpZ 10
  
  Player.MorphWeapon "ZombieAShotGun"
  Player.WeaponSlot 1, ZombieAShotGun
  Player.DisplayName "Assault Shotgunner"
  Player.SoundClass "Brainless"
  
  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.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
  DamageFactor "ZombieTankDamage", 0
  
  +NOPAIN
  +NOSKIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    ASGZ AB 10 
    loop
  See:
    ASGZ A 1 A_Jump (240,2) //0
    ASGZ A 0 A_PlaySoundEx ("shotguy/active","body")
    ASGZ ABCD 4
    Loop	
  Missile:
    ASGZ E 3
    ASGZ F 5 bright
    ASGZ E 18
    goto Spawn
  Death:
    ASGZ H 5 A_GiveToTarget ("MarineExp",4)
    ASGZ I 5 A_PlaySoundEx ("shotguy/death","Body")
    ASGZ J 5 A_NoBlocking
    ASGZ K 5 Thing_changeTid(144,0)
    ASGZ LM 5
    ASGZ M 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
	ASGZ M 1 A_SpawnItemEx ("AssaultShotgun",0,0,random(29,38),0,0,0,0,32,0)
	ASGZ M -1
    stop	
  XDeath:
    ASGZ O 5 A_GiveToTarget ("MarineExp",4)
    ASGZ P 5 A_XScream
    ASGZ Q 5 A_NoBlocking
    ASGZ Q 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    ASGZ S 5 Thing_changeTid(144,0)
    ASGZ TUV 5
	ASGZ V 1 A_SpawnItemEx ("AssaultShotgun",0,0,random(29,38),0,0,0,0,32,0)
    ASGZ V -1
    stop	
  }
}

actor ZombieAShotGun : Weapon
{
  obituary "%o was peppered y %k's jackhammer."
  AttackSound "weapons/Ashotgun/fire"
  weapon.kickback 60
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  +WEAPON.NOAUTOAIM
  states
  {
  Ready:
    D3SG A 6 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    D3SG A 6 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    TNT1 A 0 HealThing(5)
    loop 
  Deselect: 
    D3SG A 1 A_Lower
    loop
  Select:
    D3SG A 1 A_Raise
    goto Ready
  Fire:
		D3SG A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
		D3SG A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
		D3SG A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")
		D3SG A 1
		D3SG A 0 A_FireBullets(4, 4, 10, 5, "FBulletPuff", 1)
		D3SG A 9 A_GunFlash
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/back")
		D3SG C 6
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/forward")
		D3SG A 6//3
		goto Ready
  AltFireX:
		D3SG A 1
		D3SG A 0 A_FireBullets(8, 8, 10, 5, "FBulletPuff", 1)
		D3SG A 6 A_GunFlash
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/back")
		D3SG C 4
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/forward")
		D3SG A 3
		goto Ready
  AltFireY:
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		D3SG A 0 A_FireBullets(15, 15, 16, 3, "FBulletPuff", 1)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 4 A_GunFlash
		D3SG A 1 A_SetPitch(8.0 + pitch)
		
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/back")
		D3SG C 6
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/forward")
		D3SG A 6
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/back")
		D3SG C 6
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/forward")
		D3SG A 40
		Goto Ready
  AltFireZ:
		D3SG A 0 A_PlaySoundEx ("weapons/mgren","weapon")
		D3SG A 0 A_FireCustomMissile ("MAssaultShGuyGrenadePuppet",5,1,0,0,0,9)
		D3SG A 1 A_SetPitch(-8.0 + pitch)
		D3SG A 3
		D3SG A 1 A_SetPitch(+8.0 + pitch)
		D3SG A 10
		D3SG B 10 A_PlaySound("weapons/Ashotgun/cock/back")
		D3SG C 6
		D3SG B 4 A_PlaySound("weapons/Ashotgun/cock/forward")
		D3SG A 20
		Goto Ready
  AltFire:
    D3SG A 5 ACS_ExecuteAlways (419,0,41)
    goto ready
  Flash:
    D3SF A 3 BRIGHT A_Light1
    D3SF B 2 BRIGHT A_Light2
    D3SF B 0 A_Light0
    Stop
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

ACTOR MAssaultShGuyGrenadePuppet : Grenade
{
	Radius 8
	Height 8
	Speed 25
	Damage 20
	Projectile
	BounceCount 9
	Scale 1.5
	-NOGRAVITY
	-NOTELEPORT
	+TELESTOMP //added
	+DOOMBOUNCE
	+DEHEXPLOSION
	+ROCKETTRAIL
	//+GRENADETRAIL
	+EXPLODEONDEATH
	//+USESTBOUNCESOUND
	//+NOBOUNCESOUND //added
	+CANBOUNCEWATER //added
	SeeSound "weapons/mgrenbounce"
	DeathSound "weapon/grenadeexplode" //weapons/rocklx
	Obituary "$OB_GRENADE"
	DamageType "RevenantGrenDamage"
	States
	{
	Spawn:
		GRN2 ABCDEFGHIJK 3  
		loop
	Death:
		MISL B 8 bright A_Explode
		MISL C 6 bright
		MISL D 4 bright
		stop
	}

}