


actor mastergun : Weapon
{
  Weapon.AmmoUse 0
  +WEAPON.NOALERT
  //+WEAPON.NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
  +WEAPON.CHEATNOTWEAPON
  +INVENTORY.UNDROPPABLE
  attacksound "imp/melee"
  
  States
  {
  Ready:
	TNT1 A 1
    TNT1 B 1 A_WeaponReady
    LOOP //GoTo Ready
  Deselect:
    TNT1 A 1 
	TNT1 A 0 A_TakeInventory("PM_AltfireX", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_AltfireY", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_AltfireZ", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_ZoomOffX", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_ZoomOffY", 1) //added - reset to defaults
    TNT1 B 1 A_Lower
	TNT1 A 1 
    LOOP
  Select:
    TNT1 A 1 A_Raise
	TNT1 B 1
	// Taking old weapon forced (if KeepInventory enable or some shit) 
	TNT1 A 0 A_TakeInventory ("ZombieRifle",1)
	TNT1 A 0 A_TakeInventory ("ImpBaller",1)
	TNT1 A 0 A_TakeInventory ("ZombieShotGun",1)
	TNT1 A 0 A_TakeInventory ("ChainGuyGun",1)
	TNT1 A 0 A_TakeInventory ("Demonmouth",1)
	TNT1 A 0 A_TakeInventory ("SpectreMouth",1)
	TNT1 A 0 A_TakeInventory ("RevenantGun",1) 
	TNT1 A 0 A_TakeInventory ("KnightHand",1)
	TNT1 A 0 A_TakeInventory ("BaronHand",1)
	TNT1 A 0 A_TakeInventory ("CacoBaller",1) 
	TNT1 A 0 A_TakeInventory ("FatsoGun",1)
	TNT1 A 0 A_TakeInventory ("ArPlasmaGun",1)
	TNT1 A 0 A_TakeInventory ("CyberDemonRL",1)
	TNT1 A 0 A_TakeInventory ("MasterMindGun",1)
	TNT1 A 0 A_TakeInventory ("VileHands",1)
	TNT1 A 0 A_TakeInventory ("SSmp40",1)
	TNT1 A 0 A_TakeInventory ("PainElementWeap",1)
	TNT1 A 0 A_TakeInventory ("MLostSoulWeap",1)
	TNT1 A 0 A_TakeInventory ("ZombieChainSaw",1)
	TNT1 A 0 A_TakeInventory ("DarkImpHand",1)
	TNT1 A 0 A_TakeInventory ("ZombieSuperShotgun",1)
	TNT1 A 0 A_TakeInventory ("DoubleChainGun",1)
	TNT1 A 0 A_TakeInventory ("BloodDemonMouth",1)
	TNT1 A 0 A_TakeInventory ("ShadowHand",1)
	TNT1 A 0 A_TakeInventory ("CacolanterMounth",1)
	TNT1 A 0 A_TakeInventory ("AbaddonMounth",1)
	TNT1 A 0 A_TakeInventory ("BelphegorHand",1)
	TNT1 A 0 A_TakeInventory ("Hectebusguns",1)
	TNT1 A 0 A_TakeInventory ("FFist",1)
	TNT1 A 0 A_TakeInventory ("FBers",1)
	TNT1 A 0 A_TakeInventory ("FChainsaw",1)
	TNT1 A 0 A_TakeInventory ("FPistol",1)
	TNT1 A 0 A_TakeInventory ("FShotgun",1)
	TNT1 A 0 A_TakeInventory ("FSuperShotgun",1)
	TNT1 A 0 A_TakeInventory ("FChaingun",1)
	TNT1 A 0 A_TakeInventory ("FRocketLauncher",1)
	TNT1 A 0 A_TakeInventory ("FPlasmaRifle",1)
	TNT1 A 0 A_TakeInventory ("FBFG9000",1)
	TNT1 A 0 A_TakeInventory ("MLeftFist",1)
	TNT1 A 0 A_TakeInventory ("ZombieAShotgun",1)
	TNT1 A 0 A_TakeInventory ("ArChaingun",1)
	TNT1 A 0 A_TakeInventory ("Barrelweapon",1)
	TNT1 A 0 A_TakeInventory ("PlasmaZombieRifle",1)
	TNT1 A 0 A_TakeInventory ("CyberAnniRL",1)
	TNT1 A 0 A_TakeInventory ("FHeat",200)
	//set properties
	TNT1 A 0 SetPlayerProperty (0, 0, 0)
	TNT1 A 0 SetPlayerProperty (0, 0, 4)
	TNT1 A 0 SetPlayerProperty (0,1,3)
	TNT1 A 0 ACS_ExecuteAlways(426,0,11)
	// Give ClassChecker
	TNT1 A 0 A_GiveInventory("ImMMaster")
    Loop


  Fire:
		TNT1 A 0 A_JumpIfInventory ("PM_AltFireX",1,"AltFireX")
		TNT1 A 0 A_JumpIfInventory ("PM_AltFireY",1,"AltFireY")
    TNT1 A 1
    TNT1 B 1 A_JumpIfInventory ("getupm",1,"seeme")
	TNT1 A 1
	TNT1 B 1
    TNT1 A 1  //ACS_ExecuteAlways(520)
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
    TNT1 A 1 A_JumpIfInventory ("nothere",1,"nomasters")
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1 ACS_ExecuteAlways(403)	
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
	TNT1 A 1
	TNT1 B 1
		TNT1 A 5
		TNT1 A 6 A_CustomPunch (1,0,0,"FBulletPuff",0)
		TNT1 A 6
    goto ready
	
   AltFireX:
	 TNT1 A 1 A_FireCustomMissile ("GhostVileFire",0,1,5,10)
	 TNT1 A 2
	 TNT1 B 2
	 TNT1 A 2
	 TNT1 B 2
	 TNT1 A 2
   GoTo Ready

   AltFireY:
	 TNT1 A 1 A_Blast (BF_DONTWARN, 255, 168, 15)
	 TNT1 A 1 A_PlaySound ("GhostKick")
	 TNT1 A 5
	 TNT1 A 1 A_PlaySound ("GhostEvilLaught")
	 TNT1 A 10
	 TNT1 B 10
	 TNT1 A 10
	 TNT1 B 10
	 TNT1 A 10
	 TNT1 B 10
	 TNT1 A 10
	 TNT1 B 10
	 TNT1 A 10
	 TNT1 B 10
   GoTo Ready
	
seeme:
    TNT1 A 1
    TNT1 A 0 A_TakeInventory ("getupm",1)
    TNT1 B 1 A_FireCustomMissile ("fastraise",0,0,0,0,0,0)
	TNT1 A 1
	TNT1 B 1	
    GOTO ready
nomasters:
    TNT1 A 1
	TNT1 B 1 
    TNT1 A 0 A_print("puppets are disabled")
    TNT1 A 1 a_takeinventory("nothere",1)
	TNT1 B 1 
    GOTO ready
  AltFire:
	TNT1 A 1 //added
  	TNT1 A 0 A_TakeInventory("PM_AltfireX", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_AltfireY", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_ZoomOffX", 1) //added - reset to defaults
	TNT1 A 0 A_TakeInventory("PM_ZoomOffY", 1) //added - reset to defaults
    TNT1 A 1
    TNT1 A 0 ACS_ExecuteAlways(406)
	TNT1 B 5
    TNT1 A 5
	TNT1 B 5
	TNT1 A 5
	TNT1 B 5
    GOTO ready 
  Spawn:
    TNT1 A 1 Thing_Remove (0)
    Stop
  }
}


actor controlp // needed to possess monster
{
  Radius 16
  Height 8
  Speed 28
  Damage 9999
  Projectile
  +NOEXTREMEDEATH
  +NOBLOCKMAP
  +NOGRAVITY
  +BLOODLESSIMPACT
  DamageType "Control"
  +SERVERSIDEONLY //added to suppress server console log warnings of no NetID for this actor
  
  States
  {
  Spawn:
    TNT1 AAA 3
  Death:
    TNT1 A 1 Thing_Remove (0)
    stop
  }
}






actor ImMMaster : Inventory
{
  inventory.amount 1
  inventory.maxamount 1
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}

actor nothere : inventory
{
inventory.maxamount 1
}
actor noesc : nothere
{}
actor getupm : inventory
{
inventory.maxamount 1
}




actor GhostVileFire
{
  radius 4
  height 1
  speed 99
  alpha 1
  DamageType "MarineDamage"
  renderstyle add
  PROJECTILE
  +NOBLOCKMAP
  +NOGRAVITY
  PROJECTILE
  +SEEKERMISSILE
  -BLOODLESSIMPACT
  states
  {
  Spawn:
    TNT1 A 1 A_Fire 
	loop
	death:
    FIRE A 2 bright A_StartFire
    FIRE BAB 2 bright A_Fire
    FIRE C 2 bright A_FireCrackle
    FIRE BCBCDCDCDEDED 2 bright A_Fire
    FIRE E 2 bright A_FireCrackle
    FIRE FEFEFGHGHGH 2 bright A_Fire
    stop
  }
}