ACTOR WolfensteinSSClass : PlayerPawn
{
  Health 50
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  Speed 0.5 //0.35
  PainChance 170
  Player.MorphWeapon "SSmp40"
  Player.WeaponSlot 1, SSmp40
  Player.DisplayName "WolfensteinSS"
  Player.MaxHealth 70   
  Player.ViewHeight 47
  Player.SoundClass wolfSS
  Player.JumpZ 10
  Translation "112:127=192:207"
  
  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
  
  -PICKUP
  +NOSKIN
  +NOPAIN
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  
  states
  {
  Spawn:
    WLF1 AB 10
    loop
  See:
    WLF1 AABBCCDD 3
    Loop
  Missile:
    WLF1 A 0 A_JumpIfInventory ("FHeat",30,"CantShot")
    WLF1 F 3 bright 
    WLF1 G 4 
    WLF1 F 3 bright 
    WLF1 G 4 
	Goto Spawn
  CantShot:
    WLF1 E 24
	goto spawn
  Death:
    WLF1 I 5 A_GiveToTarget ("MarineExp",1)
    WLF1 J 5 A_PlaySoundEx ("wolfss/death","body")
    WLF1 K 5 A_NoBlocking
    WLF1 L 5 Thing_changeTid(144,0)
	WLF1 L 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    WLF1 M -1
    stop
  XDeath:
    WLF1 N 5 A_GiveToTarget ("MarineExp",3)
    WLF1 O 5 A_XScream
    WLF1 P 5 A_NoBlocking
	WLF1 A 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    WLF1 Q 5 Thing_changeTid(144,0)
    WLF1 RSTU 5
    WLF1 V -1
    stop
  }
}

ACTOR SSmp40 : Weapon
{
  OBITUARY "%o met a Nazi %k."
  ATTACKSOUND "wolfss/attack"
  weapon.kickback 100
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  //+INVENTORY.UNDROPPABLE //added
  states
  {
  Spawn:
    TNT1 A 0 Thing_Remove (0)
    Stop
  Ready:
    MP40 A 6 A_WeaponReady
    MP40 A 0 A_TakeInventory ("FHeat",2)
    TNT1 A 0 A_JumpIfInventory ("Mskull",0,4)
    MP40 A 6 A_WeaponReady
    MP40 A 0 A_TakeInventory ("FHeat",2)
    TNT1 A 0 A_JumpIfInventory ("Mskull",3,1)
    Loop
	TNT1 A 0 HealThing(1)
	goto ready 
  DeSelect: 
    MP40 A 1 A_Lower
    Loop
  Select:
    MP40 A 1 A_Raise
	goto ready
  Fire:
    MP40 A 0 A_JumpIfInventory ("FHeat",60,"Overheat")
    MP40 A 0 A_GiveInventory ("FHeat",2)
    MP40 C 0 A_GunFlash
    MP40 C 3 bright A_FireBullets (4.7, 2.7, 1, 5, "FBulletPuff")
    MP40 B 2 bright
    MP40 A 2 
    MP40 C 3 bright A_FireBullets (4.7, 2.7, 1, 5, "FBulletPuff")
    MP40 B 2 bright
    MP40 A 2
    MP40 A 2 A_ReFire
    MP40 A 2
    goto Ready
  Flash:
    TNT1 A 3 A_Light1
    TNT1 A 2 A_Light2
    TNT1 A 2 A_Light0
    TNT1 A 3 A_Light1
    TNT1 A 2 A_Light2
    TNT1 A 2 A_Light0
    Stop
  Overheat:
    MP40 A 12 A_PlaySoundEx ("cybie/overheat","body")
    MP40 A 12 ACS_ExecuteAlways (408)
    MP40 A 0 A_TakeInventory ("FHeat",3)
    goto ready
  AltFire:
    MP40 A 5 ACS_ExecuteAlways (419,0,16)
	goto ready
  }
}

ACTOR MrScientistClass : PlayerPawn
{
  Health 500
  gibhealth 99999 //added - actor can not be gibbed
  Radius 20
  Height 56
  Mass 100
  PainChance 200
  Player.MorphWeapon ScientificADMPistol
  Player.DisplayName "MrScientist"
  Player.WeaponSlot 1, ScientificADMPistol
  Player.MaxHealth 500
  Player.ViewHeight 41
  Player.SoundClass Wolfss
  Player.JumpZ 10
  BloodColor "red"
	
  DamageFactor "Suicide", 0
  
  DamageFactor "MarineDamage", 1
  DamageFactor "BFGSplash", 0.6
  DamageFactor "MarineRLDamage", 0.8
  DamageFactor "MarineRail", 0.6
  DamageFactor "MarineSuperweapon", 0.1 
  DamageFactor "PorkDamage", 0 

  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 "ZombieTankDamage", 0
  DamageFactor "Slime", 0
  
  +NOSKIN
  +NOPAIN
  -PICKUP
  -FRIENDLY
  +NOTARGET
  +NOTRIGGER //added - avoid issues in level design
  Translation "112:125=[189,159,130]:[28,21,15]", "128:133=56:79", "144:147=54:79", "0:0=2:2", "109:109=15:15", "111:111=1:1", "5:8=1:2", "110:110=108:108", "126:127=238:239", "192:207=168:184"
  Scale 1.12
  Tag "MrScientist"
  states
  {
  Spawn:
  DRDO A 10 
    Loop
  See:
    DRDO A 0 
    DRDO A 1 A_Jump (240,2) //0
    DRDO A 0 A_PlaySound("wolfss/sight")
    DRDO ABCD 4 
    Loop
  Missile:
	DRDO EF 10
	DRDA G 8 bright
    Goto spawn
  Death:
    DRDO I 5 A_NoBlocking
    DRDO I 0 Thing_changeTid(144,0)
    //DRDO I 5 A_Jump(48,"Death2")
    DRDO J 5 A_Scream
    DRDO K 5 A_GiveToTarget ("MarineExp",10)
    DRDO L 5
    DRDO M 1 A_SpawnItemEx("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    DRDO M 2 A_SpawnItemEx ("MQuadShotgun",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    DRDO N -1
    stop
    //Death2:
    //DRDO I 5 
    //DRDO I 0 Thing_changeTid(144,0)
    //DRDO J 5 A_Pain
    //DRDO K 5 A_NoBlocking
    //DRDO LM 5
    //DRDO N 15
    //PB10 S 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0	
    //TNT1 A 10 A_SpawnItemEx("MrScientist_laststand",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS,0)
    //stop
  XDeath:
    POSS O 4 A_GiveToTarget ("MarineExp",10)
    POSS P 4 A_XScream
    POSS Q 4 A_NoBlocking
    POSS R 0 Thing_changeTid(144,0)
    POSS S 1 A_SpawnItemEx ("MDeathGhost",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0) //0
    POSS S 1 A_SpawnItemEx ("MQuadShotgun",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    POSS T 4
    POSS U -1
    stop
  }
}

ACTOR ScientificADMPistol : Weapon 
{ 
  weapon.kickback 100
  attacksound ""
  obituary "%o was killed by %k."
  Decal "ADMScorch"
  +NOEXTREMEDEATH
  +WEAPON.NOALERT
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +WEAPON.NOAUTOAIM
  //+INVENTORY.UNDROPPABLE //added
  states
  {
  Ready:
     ADPS A 1 A_WeaponReady
     ADPS A 0 HealThing(2)	
    Loop
  Select: 
	ADPS B 10 A_PlaySound("wolfss/active")
	ADPS B 0
    Sel:
	ADPS B 1 A_Raise
    loop
  DeSelect:
    ADPS A 1 A_Lower
    Loop
  Fire:
    ADPS A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")	
    ADPS A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
    ADPS A 0 A_JumpIfInventory ("PM_AltFireZ",1,"AltFireZ")	
    ADPS A 4 A_PlaySound ("weapons/bfg10kf")
    ADBS A 4
    ADPS A 3
    ADBS A 3
    ADPS A 3
    ADBS A 3
    ADPS A 2
    ADBS A 2
    ADPS A 1
    ADBS A 1
    ADPS A 1
    ADBS A 1
    Goto Hold
  Hold:
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
	ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 Bright
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 Bright
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 Bright
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 Bright
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 Bright
    ADBS B 2 Bright A_GunFlash
    ADBF A 2 Bright A_FireCustomMissile("PtMrScientistBFG10kShot")
    ADBF A 0 Bright A_PlaySound ("weapons/bfg10kx")
    ADBS C 5 Bright	
    ADPS D 10 A_PlaySound ("weapons/bfg10kcool")
	ADBS D 10
	ADPS D 10
	ADBS D 10
	ADPS D 10
	ADBS D 10
    ADPS E 15 //50
    Goto Ready
  AltFireX:
    ADPS A 4 A_BFGSound
    ADBS A 4
    ADPS A 3
    ADBS A 3
    ADPS A 3
    ADBS A 3
    ADPS B 10 A_GunFlash
    ADBS B 10
    ADPS B 10
    ADBF A 30 A_FireCustomMissile ("PtMrScientistBFGBall",0,1,5,10)
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS D 5
	ADBS D 5
	ADPS D 5
	ADBS D 10
	ADPS D 10
	ADBS D 10
    ADPS E 10
    Goto Ready
  AltFireY:
    ADPS A 4 A_PlaySound("weapons/RailChargePuppet", CHAN_WEAPON, 1, 0, ATTN_NONE)
    ADBS A 4
    ADPS A 3
    ADBS A 3
    ADPS A 3
    ADBS A 3
    ADBS B 10 A_GunFlash
    ADBS B 0 A_PlaySound("weapons/RailAttackCyber", CHAN_WEAPON, 1, 0, ATTN_NONE)
    ADBF A 30 Bright A_RailAttack(random(100,150), 0, 1, "none", "purple", 0, 0, "PtMrScientistRailPuff")
    ADBS C 1 A_SetPitch(-2.0 + pitch)
    ADBS C 2
    ADBS C 1 A_SetPitch(2.0 + pitch)
    ADPS A 5 //30
    ADBS A 5
	ADPS A 10
	ADBS A 10
	ADGS A 15
    Goto Ready
  AltFireZ:
    ADPS A 5
    ADPS B 10 A_GunFlash
    ADPF A 10 Bright A_FireCustomMissile ("PtMrScientistRocket")
    ADPS C 1 A_SetPitch(-2.0 + pitch)
    ADPS C 2
    ADPS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 	
    ADPS B 10 A_GunFlash
    ADPF A 15 Bright A_FireCustomMissile ("PtMrScientistRocket")
    ADPS C 1 A_SetPitch(-2.0 + pitch)
    ADPS C 2
    ADPS C 1 A_SetPitch(2.0 + pitch)
    ADPS C 1 
	ADGS A 10
    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:
    ADPS A 5 ACS_ExecuteAlways (419,0,51)
    goto ready
  }
}

actor PtMrScientistBFG10kShot: MBFG10kShot
{
  Damage 10
  DamageType "ZombiesDamage"
Speed 20 //15
  Projectile
  
  States
  {
  Spawn:
    BBE1 ABCB 1
	Loop
  Death:
    BBE1 A 3 Bright
    BBE1 BCDEF 3 Bright
    Stop
  }
}

ACTOR PtMrScientistBFGBall
{
  Radius 13
  Height 8
  Speed 25
  Damage 100
  Projectile
  +RANDOMIZE
  RenderStyle Add
  Alpha 0.75
  DeathSound "weapons/bfgx"
  Obituary "$OB_MPBFG_BOOM"
  DamageType "ZombiesDamage"
  -NOTELEPORT
  +TELESTOMP
  States
  {
  Spawn:
    BBS1 AB 4 Bright
    Loop
  Death:
    BBE1 AB 8 Bright
    BBE1 C 8 Bright A_BFGSpray ("PtBFGPExtra")
		//BBE1 C 0 A_Explode(250,16)
		BBE1 C 0 A_Explode(150,32)	
		BBE1 C 0 A_Explode(100,48)
		BBE1 C 0 A_Explode(75,64)
		BBE1 C 0 A_Explode(50,96)
		BBE1 C 0 A_Explode(25,128)
		//BBE1 C 0 A_Explode(20,256)
		//BBE1 C 0 A_Explode(15,512)
		//BBE1 C 0 A_Explode(10,1024)
		BBE1 DEF 8 Bright
    Stop
  }
}

ACTOR PtBFGPExtra
{
	+NOBLOCKMAP
	+NOGRAVITY
	RenderStyle Add
	Alpha 0.75
	DamageType "ZombiesDamage"
	States
	{
	Spawn:
		BFP2 ABCD 8 Bright
		Stop
	}
}


actor PtMrScientistRailPuff : BulletPuff
{
 DamageType "ZombiesDamage"
 Decal "ADMscorch"
}

ACTOR PtMrScientistRocket
{
   Radius 8
   Height 11
   Speed 12 //18
   Damage 15
   PROJECTILE
   DeathSound "weapons/hrlexp"
   ExplosionDamage 96
   ExplosionRadius 96
   +SeekerMissile
   +ScreenSeeker
   +Rockettrail
   +RANDOMIZE
   +DEHEXPLOSION
   Damagetype "ZombiesDamage"
   SeeSound "weapons/hrlfir"
   Decal Scorch
   
   BounceCount 3 //added 3.0.1
   +CANBOUNCEWATER //added 3.0.1
   +DOOMBOUNCE //added 3.0.1
   +NOBOUNCESOUND //added 3.0.1
   +NOWALLBOUNCESND //added 3.0.1
   
   States
   {
   Spawn:
      TMIS A 1 Bright A_SeekerMissile(30,60,SMF_PRECISE,256,10)
      goto Spawn
   Death:
      MISL B 8 bright A_Explode(96,96)
      MISL C 6 bright
      MISL D 4 bright
      stop
   }
}