
ACTOR ZombieManClass : PlayerPawn
{
  Health 20
  Speed 0.4
  Radius 20
  Height 56
  Mass 100
  PainChance 200
  Player.MorphWeapon ZombieRifle
  Player.DisplayName "ZombieMan"
  Player.WeaponSlot 1, ZombieRifle
  Player.MaxHealth 20
  Player.ViewHeight 41
  Player.SoundClass Brainless
  Player.JumpZ 10

  DamageFactor "MarineDamage", 0.6
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRLDamage", 0.6
  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
  
  +NOSKIN
  +NOPAIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    POSS AB 10 
    Loop
  See:
    POSS A 0 
    POSS A 0 A_Jump (240,2)
    POSS A 0 A_PlaySoundEx ("grunt/active","body")
    POSS ABCD 4 
    Loop
  Missile:
    POSS E 3
    POSS F 6 bright
    POSS E 6 
    Goto spawn
  Death:
    POSS H 5 A_SpawnItemEx ("Clip",0,0,random(29,38),0,0,0,0,32,0)
    POSS I 5 A_PlaySoundEx ("grunt/death","Body")
    POSS J 5 A_NoBlocking
    POSS K 5 A_GiveToTarget ("MarineExp",2)
    POSS A 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    POSS L 1 A_CheckSight("Removecorpse")
    loop
  XDeath:
    POSS M 0 A_SpawnItemEx ("Clip",0,0,random(29,38),0,0,0,0,32,0)
    POSS M 4 A_GiveToTarget ("MarineExp",2)
    POSS N 4 A_XScream
    POSS O 4 A_NoBlocking
    POSS P 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    POSS PQRST 4
  XDeathWait:	
    POSS U 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop
  }
}

// Weapon 


ACTOR ZombieRifle : Weapon 
{ 
  weapon.kickback 100
  attacksound "weapons/pistol"
  obituary "%o was killed by %k."
  +NOEXTREMEDEATH
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Ready:
    POGN A 7 A_WeaponReady
    POGN A 0 A_JumpIfInventory ("Mskull",0,3)
    POGN A 7 A_WeaponReady
    POGN A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    POGN A 0 HealThing(1)
    goto ready 
  Select:
	POGN A 1 A_Raise 
    loop
  DeSelect:
    POGN A 1 A_Lower
    Loop
  Fire:
    POGN A 3 A_GunFlash
    POGN B 3 bright A_FireBullets (1.5,1.0,1,8,"FBulletPuff",1)
    POGN C 3 bright
    POGN A 0 A_Refire
    POGN A 5
    Goto Ready
  Flash:
    TNT1 A 3 A_Light0
    TNT1 A 3 A_Light1
    TNT1 A 3 A_Light2
    TNT1 A 0 A_Light0
    Stop
  AltFire:
    POGN A 5 ACS_ExecuteAlways (419,0,1)
	goto ready
  }
}

// ChainSaw Zombieman Class

ACTOR ChainsawZombieClass : PlayerPawn
{
  Health 90
  Speed 0.9
  Radius 20
  Height 56
  Mass 100
  PainChance 200
  Player.MorphWeapon ZombieChainSaw
  Player.DisplayName "ChainsawZombieMan"
  Player.WeaponSlot 1, ZombieChainSaw
  Player.MaxHealth 90
  Player.ViewHeight 41
  Player.SoundClass Brainless
  Player.JumpZ 9
  
  DamageFactor "MarineDamage", 0.9
  DamageFactor "BFGSplash", 0.9
  DamageFactor "MarineRLDamage", 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
  
  +NOSKIN
  +NOPAIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
	CHAN AB 8 
    Loop
  See:
    CHAN A 0 
    CHAN A 0 A_Jump (240,2)
    CHAN A 0 A_PlaySoundEx ("grunt/active","body")
    CHAN ABCD 4 
    Loop
  Missile:
    CHAN EF 4 
    Goto spawn
  Death:
    CHAN H 5
    CHAN I 5 A_PlaySoundEx ("grunt/death","Body")
    CHAN J 5 A_NoBlocking 
    CHAN K 5 A_GiveToTarget ("MarineExp",2)
    CHAN LM 5
    CHAN N 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    CHAN N 1 A_CheckSight("Removecorpse")
    loop
  XDeath:
    CHAN O 4 A_GiveToTarget ("MarineExp",2)
    CHAN P 4 A_XScream
    CHAN Q 4 A_NoBlocking
    CHAN R 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    CHAN RSTUV 4
  XDeathWait:	
    CHAN W 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop
  }
}

// Weapon 


ACTOR ZombieChainSaw : Chainsaw 
{ 
  obituary "%o was sliced by a madman %k with a chainsaw!"
  +NOEXTREMEDEATH
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Ready:
    SAWG CDCD 3 A_WeaponReady
    SAWG A 0 A_JumpIfInventory ("Mskull",0,5)
    SAWG CDCD 3 A_WeaponReady
    SAWG A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    SAWG A 0 HealThing(1)
    goto ready 
  Select:
	SAWG C 1 A_Raise 
    loop
  DeSelect:
    SAWG C 1 A_Lower
    Loop
  Fire:
    SAWG AB 3 A_Saw ("weapons/sawfull","weapons/sawhit",2,"FBulletPuff")
    SAWG B 0 A_ReFire
    goto Ready
  AltFire:
    SAWG A 5 ACS_ExecuteAlways (419,0,19)
	goto ready
  Spawn:
    CSAW A 1 Thing_remove(0)
    stop
  }
}


// Plasma Zombie

ACTOR PlasmaZombieClass : PlayerPawn
{
  Health 50
  Speed 0.4
  Radius 20
  Height 56
  Mass 100
  PainChance 200
  Player.MorphWeapon PlasmaZombieRifle
  Player.DisplayName "Plasma Zombie"
  Player.WeaponSlot 1, PlasmaZombieRifle
  Player.MaxHealth 50
  Player.ViewHeight 41
  Player.SoundClass Brainless
  Player.JumpZ 9

  DamageFactor "MarineDamage", 0.75
  DamageFactor "BFGSplash", 0.75
  DamageFactor "MarineRLDamage", 0.75
  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
  
  +NOSKIN
  +NOPAIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  states
  {
  Spawn:
    ZMAY AB 10 
    Loop
  See:
    ZMAY A 0 
    ZMAY A 0 A_Jump (240,2)
    ZMAY A 0 A_PlaySoundEx ("grunt/active","body")
    ZMAY ABCD 4 
    Loop
  Missile:
    ZMAY E 1
    ZMAY F 2 bright
    ZMAY E 1
    ZMAY F 2 bright
    ZMAY E 1
    ZMAY F 2 bright
    ZMAY E 10 
    Goto spawn
  Death:
    ZMAY H 5 A_SpawnItemEx ("MCell",0,0,random(29,38),0,0,0,0,32,0)
    ZMAY I 5 A_PlaySoundEx ("grunt/death","Body")
    ZMAY J 5 A_NoBlocking
    ZMAY K 5 A_GiveToTarget ("MarineExp",3)
    ZMAY K 0 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
  DeathWait:
    ZMAY L 1 A_CheckSight("Removecorpse")
    loop
  XDeath:
    ZMAY O 0 A_SpawnItemEx ("MCell",0,0,random(29,38),0,0,0,0,32,0)
    ZMAY O 5 A_GiveToTarget ("MarineExp",3)
    ZMAY P 5 A_XScream
    ZMAY Q 5 A_NoBlocking
    ZMAY R 5 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    ZMAY STU 5
  XDeathWait:	
    ZMAY V 2 A_CheckSight("Removecorpse")
    loop
  Removecorpse:
    TNT1 A 0 Thing_Remove (0)
    stop
  }
}

// Weapon 


ACTOR PlasmaZombieRifle : Weapon 
{ 
  weapon.kickback 100
  attacksound "weapons/pistol"
  obituary "%o was plasmaed by John Stalve-- uhm, %k."
  +NOEXTREMEDEATH
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE

  states
  {
  Select:
    PLSG A 1 A_Raise 
    loop
  DeSelect:
    PLSG A 1 A_Lower
    Loop
  Ready:
    PLSG A 7 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,3)
    PLSG A 7 A_WeaponReady
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
    TNT1 A 0 HealThing(1)
    goto ready
  Fire:
    PLSG A 1 A_GunFlash
    PLSG A 2 A_FireCustomMissile ("ZPlasmaBall")
    PLSG A 1
    PLSG A 2 A_FireCustomMissile ("ZPlasmaBall")
    PLSG A 1
    PLSG A 2 A_FireCustomMissile ("ZPlasmaBall")
    PLSG BC 2
    PLSG D 3
    PLSG E 7
    PLSG DCB 4
    Goto Ready
  Flash:
    PLSF A 1 Bright A_Light1
    PLSF B 2 Bright A_Light2
    PLSF A 1 Bright A_Light1
    PLSF B 2 Bright A_Light2
    PLSF A 1 Bright A_Light1
    PLSF B 2 Bright A_Light2
    PLSF A 0 A_Light0
    Stop
  AltFire:
    PLSG A 5 ACS_ExecuteAlways (419,0,44)
    goto ready
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}

