ACTOR "Revolver" : Weapon 32352
  {
  Scale 0.3
  Tag "Revolver"
  Weapon.BobSpeed 1.75
  Weapon.BobRangeX 0.2
  Weapon.BobRangeY 0.4
  Weapon.BobStyle Alpha
  Weapon.SelectionOrder 440
  Weapon.KickBack 120
  Weapon.AmmoGive 6
  Weapon.AmmoUse 1
  Weapon.AmmoType "RevolverCylinder"
  Weapon.AmmoType2 "HeavyAmmo"
  Inventory.PickupSound "upgrade/revolver"
  Inventory.PickupMessage "Revolver"
  Obituary "%o was executed %k's Revolver."
  Weapon.UpSound "upgrade/revolver"
  +NOAUTOFIRE
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.NOALERT
  -INVENTORY.UNDROPPABLE
  States
  {
  Ready:
	REVU ABCDE 1
	TNT1 A 0 A_JumpIfInventory("RevolverCylinder",1,"ReadyLoop")
	Goto ReadyEmpty
  ReadyLoop:
    TNT1 A 0 A_JumpIfInventory("RevolverFastMode",1,"Ready2Loop")
	TNT1 A 0 A_JumpIfInventory("RevolverCylinder",1,1)
	Goto ReadyEmpty
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	REVX C 1 A_WeaponReady(WRF_ALLOWRELOAD)
	Loop
  Ready2Loop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	REVX D 1 A_WeaponReady(WRF_ALLOWRELOAD)
	Loop
  ReadyEmpty:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	REVX A 1 A_WeaponReady(WRF_ALLOWRELOAD)
	Loop
  Deselect:
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	REVX A 1 A_Lower
	TNT1 AA 0 A_Lower
	Goto Deselect+4
  Select:
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	TNT1 A 0 A_Raise
	Wait
  Fire:
    TNT1 A 0 A_JumpIfInventory("RevolverFastMode",1,"Fire2")
	TNT1 A 0 A_JumpIfNoAmmo("Empty")
	TNT1 A 0 A_PlaySound("revolver/fire")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 A_FireCustomMissile("HProjectile",random(-0.1,0.1),1,0,8,0,random(-0.1,0.1))
	TNT1 A 0 Radius_Quake(3,2,0,1,0)
	TNT1 A 0 A_Light1
	REUF A 1 Bright A_GunFlash
	REUF B 1 Bright A_Light2
	REUF C 6 A_Light0
	REUF DEF 1
	TNT1 A 0 A_JumpIfInventory("RevolverCylinder",1,1)
	Goto ReadyEmpty
	REVX A 2
	REVX B 3 A_PlayWeaponSound("revolver/pull")
	REVX C 5 A_WeaponReady
	Goto ReadyLoop
  Fire2:
    TNT1 A 0 A_JumpIfNoAmmo("Empty")
	TNT1 A 0 A_AlertMonsters
    REVF EFGH 2
	Goto Fire2Holding
  Fire2Hold:
    REVF I 2
  Fire2Holding:
	TNT1 A 0 A_JumpIfNoAmmo("Empty")
	TNT1 A 0 A_PlaySound("revolver/fire")
    TNT1 A 0 A_FireCustomMissile("Tracer",FRandom(1,-1),0,0,FRandom(1,-1))
    TNT1 A 0 A_FireCustomMissile("HProjectile",random(-2,2),1,0,8,0,random(-2,2))
    TNT1 A 0 Radius_Quake(3,2,0,1,0)
	TNT1 A 0 A_SetAngle(angle - random(-2.4,1.6))
    TNT1 A 0 A_SetPitch(pitch - 2)
	TNT1 A 0 A_Light1
	REVF J 1 Bright A_GunFlash
	REVF K 1 Bright A_Light2
	REVF L 2 A_Light0
	REVF M 2
	REVF N 2 A_Refire("Fire2Hold")
	REVX D 12 A_WeaponReady(1)
    Goto Ready2Loop
  Empty:
    TNT1 A 0 A_JumpIfInventory("RevolverFastMode",1,"Empty2")
	REVX ABC 2
	REVX C 2 A_PlaySoundEx("weapons/click",CHAN_BODY)
	REVX A 2
	TNT1 A 0 A_JumpIfInventory("HeavyAmmo",1,"AltFire")
	Goto ReadyEmpty
  Empty2:
    REVF I 2
	REVF O 1 A_PlaySoundEx("weapons/click",CHAN_BODY)
	REVF P 1
	REVF QR 2
	TNT1 A 0 A_JumpIfInventory("HeavyAmmo",1,"AltFire")
	Goto Ready2Loop
  AltFire:
	TNT1 A 0 A_JumpIfInventory("RevolverCylinder",6,"ReadyLoop")
	TNT1 A 0 A_JumpIfInventory("HeavyAmmo",1,2)
	TNT1 A 0
	Goto ReadyEmpty
    REVQ ABCD 2
	REVR AB 2
	TNT1 A 0 A_PlayWeaponSound("revolver/open")
	REVR CDEFGHI 2
	TNT1 AAAAAA 0 A_SpawnItemEx("RifleCasing",Cos(Pitch)*30,0,25-(Sin(Pitch)*25),Cos(Pitch)*FRandom(-2,-4),FRandom(3,6),-Sin(Pitch)*FRandom(3,6),0,SXF_NOCHECKPOSITION|SXF_TRANSFERPITCH)
	REVR JKLMNOPQ 3
	TNT1 A 0 A_PlayWeaponSound("revolver/load")
	REVR RS 3
	REVR T 3 A_PlayWeaponSound("revolver/close")
	REVR U 6
	REVR VW 3
	REVQ BA 2
	TNT1 A 0 A_JumpIfInventory("RevolverFastMode",1,"DoReload")
	REVX A 2
	REVX B 3 A_PlayWeaponSound("revolver/pull")
	REVX C 5
  DoReload:	
	TNT1 A 0 A_JumpIfInventory("RevolverCylinder", 6, "ReadyLoop")
	TNT1 A 0 A_JumpIfInventory("HeavyAmmo", 1, 1)
	Goto ReadyLoop
	TNT1 A 0 A_GiveInventory("RevolverCylinder", 1)
	TNT1 A 0 A_Takeinventory("HeavyAmmo",1)
	Goto DoReload
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
  GrenadeToss:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	REVU EDCBA 1
	TNT1 A 4
	HGRN ABC 1
	HGRN D 2
	HGRN EFG 1
	HGRN HI 2
	TNT1 A 15 A_PlayWeaponSound("weapons/hgrenadepin")
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
	HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN J 1
	HGRN KLM 2
	HGRN NO 1
	TNT1 A 6
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
	TNT1 A 0 A_TakeInventory("Hand Grenade",1)
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0
	Goto Ready
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
  MineToss:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	REVU EDCBA 1
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1		
	TNT1 A 0 A_TakeInventory("MineAmmo",1)	  
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0)
	MINE HI 1
	MINE JK 2
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,2)
	TNT1 A 0 A_TakeInventory("Land Mine",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0
	TNT1 A 5
	Goto Ready
  Zoom:
    TNT1 A 0
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
  ChangeMode:
    TNT1 A 0
	TNT1 A 0 A_JumpIfInventory("RevolverFastMode",1,"ChangeMode2")
	TNT1 A 0 A_Print("Fast draw!",1)
	TNT1 A 0 A_GiveInventory("RevolverFastMode",1)
	TNT1 A 0 A_PlayWeaponSound("revolver/pull")
	REVX C 3 Offset(0,34)
	REVX C 2 Offset(0,37)
	REVX C 2 Offset(0,40)
	REVX D 2 Offset(0,37)
	REVX D 3 Offset(0,34)
	TNT1 A 0 Offset(0,32)
	Goto Ready2Loop
  ChangeMode2:
	TNT1 A 0 A_Print("Normal mode",1)
	TNT1 A 0 A_TakeInventory("RevolverFastMode",1)
	TNT1 A 0 A_PlayWeaponSound("revolver/pull")
	REVX D 3 Offset(0,34)
	REVX D 2 Offset(0,37)
	REVX D 2 Offset(0,40)
	REVX C 2 Offset(0,37)
	REVX C 3 Offset(0,34)
	TNT1 A 0 Offset(0,32)
	Goto ReadyLoop
  Spawn:
	PSUP A -1
	Stop
	}
}

Actor HProjectile : FastProjectile
  {
  Height 2
  Radius 2
  Scale 0.50
  Damage (random(144,180))
  Speed 220
  Decal "Bulletchip"
  Projectile
  +BLOODSPLATTER
  +THRUSPECIES
  Species "Player"
  Damagetype "None"
  States
  {
  Spawn:
 	TNT1 A 0
	TNT1 A 0 A_PlaySound("SniperGuy/BulletLoop",CHAN_BODY,1.0,1)
    DEQJ A 1
    Goto Spawn+2
  Death:
  Crash:
	TNT1 AAA 0 A_StopSound(CHAN_BODY)
	TNT1 A 0 A_PlaySound("SniperGuy/WallHit",CHAN_BODY)
	PUFF ABCD 4
	Stop
  XDeath:
	TNT1 AAA 0 A_StopSound(CHAN_BODY)
	TNT1 A 1 A_PlaySound("SniperGuy/FleshHit",CHAN_BODY)
	Stop
    }
}

Actor HeavyAmmo : Ammo 18067
  {
  Scale 0.4
  Inventory.PickupSound "items/clip"
  Inventory.PickupMessage "Heavy Bullets"
  Inventory.Icon "BULPB0"
  Inventory.amount 5
  Inventory.maxamount 50
  Ammo.backpackamount 10
  Ammo.backpackmaxamount 100
  States
  {
  Spawn:
    BULP B -1
    Stop
    }
}

ACTOR HeavyAmmoBox : HeavyAmmo
  {
  Scale 1.4
  Inventory.Amount 20
  Inventory.PickupSound "items/clipbox"
  Inventory.PickupMessage "Heavy Bullets Box!"
  States
  {
  Spawn:
    MSAW A -1
    Stop
    }
}

ACTOR RevolverCylinder : Ammo { Inventory.Amount 0 Inventory.MaxAmount 6 Ammo.BackpackAmount 0 Ammo.BackpackMaxAmount 6 Inventory.Icon "HRVLA0" +IGNORESKILL }
ACTOR RevolverFastMode : Inventory {Inventory.MaxAmount 1}