ACTOR DualMAC10Left : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 50
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
}

ACTOR DualMAC10Right : Ammo
{
  Inventory.Amount 1
  Inventory.MaxAmount 50
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
}

ACTOR DualMAC10Secondary : Ammo
{
  Inventory.Amount 10
  Inventory.MaxAmount 210
  Ammo.BackpackAmount 64
  Ammo.BackpackMaxAmount 210
  Inventory.Icon "CLIPA0"
  +INVENTORY.IGNORESKILL
}

ACTOR MAC10BoltRight : Boolean {}
ACTOR MAC10BoltLeft : Boolean {}

ACTOR "Dual MAC-10s" : Weapon
{
  Weapon.AmmoUse 0
  Weapon.AmmoUse2 0
  Weapon.AmmoGive 0
  Weapon.AmmoGive2 0
  Weapon.AmmoType "DualMAC10Left"
  Weapon.AmmoType2 "DualMAC10Right"
  Obituary "%k showed %o the power of the Dual MAC-10s."
  Inventory.Pickupmessage "You picked up the Dual MAC-10s."
  Inventory.PickupSound "mac10/bolt"
  Tag "Dual MAC-10s"
  Weapon.BobStyle Smooth
  Weapon.BobSpeed 2.5
  Weapon.BobRangeX 0.5
  Weapon.BobRangeY 0.3
  Scale 0.6
  States
  {
  //=================================================================
  // GUN FLASHES - USED FOR DUAL WIELDING
  //------------------------------------------------
  DualPistols:
	DPIR A 0
  RIdle:
	DPIR A 0 A_JumpIfInventory("SynthFireRight",1,"RFire")
	D1RI A 1
    Loop
  RSelect:
	D1RS ABC 1
	Goto RIdle
  RDeselect:
    DIRS A 0 A_TakeInventory("SynthFireRight",1)
	D1RS CBA 1
	Stop
  RReloadFlash:
	TNT1 A 1
	Stop
	
  //=================================================================
  // -- RELOAD CHECKS
  
  ToCR:
	TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"CheckRightPerk")
	Goto CheckRight
  
  CheckRight:
	// Check if right MP40 is full
	TNT1 A 0 A_JumpIfInventory("DualMAC10Right",32,"ToCL")
	Goto DoReload
  CheckRightPerk:
	TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CheckRightPerk10")
	TNT1 A 0 A_JumpIfInventory("DualMAC10Right",40,"ToCL")
	Goto DoReload
  CheckRightPerk10:
	TNT1 A 0 A_JumpIfInventory("DualMAC10Right",48,"ToCL")
	Goto DoReload
	
	
	
	
  ToCL:
	TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"CheckLeftPerk")
	Goto CheckLeft
  CheckLeft:
	// Check if right MP40 is full
	TNT1 A 0 A_JumpIfInventory("DualMAC10Left",32,1)
	Goto DoReload
	TNT1 A 0
	Goto LIdle
  CheckLeftPerk:
	TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CheckLeftPerk10")
	// Check if right MP40 is full
	TNT1 A 0 A_JumpIfInventory("DualMAC10Left",40,1)
	Goto DoReload
	TNT1 A 0
	Goto LIdle
  CheckLeftPerk10:
	// Check if right MP40 is full
	TNT1 A 0 A_JumpIfInventory("DualMAC10Left",48,1)
	Goto DoReload
	TNT1 A 0
	Goto LIdle
  
  //------------------------------------------------
  // DRY FIRES AND RELOAD
  //------------------------------------------------
  DryFireR:
	TNT1 A 0 A_TakeInventory("SynthFireRight",1)
	NULL A 0 A_PlaySoundEx("orderpistol/dryfire","SoundSlot6")
	Goto RIdle
  DryFireL:
	TNT1 A 0 A_TakeInventory("SynthFireLeft",1)
	NULL A 0 A_PlaySoundEx("orderpistol/dryfire","SoundSlot6")
	Goto LIdle
  GiveBothReload:
	TNT1 A 0 A_TakeInventory("IsReloading",1)
	TNT1 A 0 A_TakeInventory("RightMagFull",1)
	TNT1 A 0 A_TakeInventory("LeftMagFull",1)
	Goto ToCR
	
  // RELOAD BOTH AT ONCE
  DoReload:
	TNT1 A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	D4RL A 0 A_GunFlash("RReloadFlash")
	Goto BoltCheckR
	
  BoltCheckR:
	TNT1 A 0 A_JumpIfInventory("DualMAC10Right",1,"BoltCheckL")
	TNT1 A 0 A_GiveInventory("MAC10BoltRight",1)
	Goto BoltCheckL
	
  BoltCheckL:
	TNT1 A 0 A_JumpIfInventory("DualMAC10Left",1,"ReloadAnim")
	TNT1 A 0 A_GiveInventory("MAC10BoltLeft",1)
	Goto ReloadAnim
	
  ReloadAnim:
	D1RL ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL E 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL F 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	
	D1RL G 0 A_PlaySoundEx("mac10/magout","SoundSlot5")
	D1RL GH 1
	D1RL I 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL J 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	
	D1RL KLMNOPQR 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL S 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL T 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL G 0 A_PlaySoundEx("mac10/magout","SoundSlot5")
	D1RL UV 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL W 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL Y 3 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL Z 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RM ABC 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 6 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	
	D1RL G 0 A_PlaySoundEx("mac10/cloth","SoundSlot5")
	D1RM DEF 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto GunThrow
	
  GunThrow:
	TNT1 A 0 A_GunFlash("GunThrowLeft")
	TNT1 A 0 A_JumpIfInventory("DualMAC10Right",1,1)
	Goto GunThrowEmpty
	D2RN GHIJKLM 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL G 0 A_PlaySoundEx("mac10/magdual","SoundSlot5")
	D2RN N 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto ReloadEnd
  GunThrowEmpty:
	D2RM GHIJKLM 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RL G 0 A_PlaySoundEx("mac10/magdual","SoundSlot5")
	D2RM N 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto ReloadEnd
	
  GunThrowLeft:
	TNT1 A 0 A_JumpIfInventory("DualMAC10Left",1,1)
	Goto GunThrowLeftEmpty
	D3RM GHIJKLMN 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Stop
  GunThrowLeftEmpty:
	D1RM GHIJKLMN 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Stop
	
  ReloadEnd:
	D1RM OP 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 8 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1SS CBA 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	
	D1SS A 0 A_JumpIfInventory("MAC10BoltRight",1,"BoltPullRight")
	D1SS A 0 A_JumpIfInventory("MAC10BoltLeft",1,"TransToLeft")
	Goto ReloadFinished
	
  ReloadFinished:
	ORDS A 0 A_GunFlash("RIdle")
	ORDS A 0 A_TakeInventory("MAC10BoltLeft",1)
	ORDS A 0 A_TakeInventory("MAC10BoltRight",1)
	Goto CalculateCheckR
	
  BoltPullRight:
	D1RM UVWXYZ 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RN A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RN D 0 A_PlaySoundEx("mac10/bolt","SoundSlot5")
	D1RN BCDEFGHI 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 0 A_JumpIfInventory("MAC10BoltLeft",1,"R2L")
	Goto R2R
	
  R2L:
	D1RN JKL 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto BoltPullLeft
	
  TransToLeft:
	D1TR AB 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto BoltPullLeft
	
  BoltPullLeft:
	D1RN MNO 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1RN D 0 A_PlaySoundEx("mac10/bolt","SoundSlot5")
	D1RN PQRSTUVWXYZ 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto ReloadFinished
	
  R2R:
	D1RN J 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	D1TR BA 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	Goto ReloadFinished
	
//=============================================================================
// -- AMMO CALCULATION

  CalculateCheckR:
	 TNT1 A 0
	 TNT1 A 0 A_JumpIfInventory("Perk_Pyro",1,"LevelCheckR")			// If we're a rifleman then give us an ammo boost
	 Goto CalculateAmmoRight
  LevelCheckR:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CalculateAmmoRightPerk10")
	 Goto CalculateAmmoRightPerk
  CalculateAmmoRight:
	DPIS A 0 A_JumpIfInventory("DualMAC10Right",30,"CalculateCheckL")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Right",1)
	Loop
  CalculateAmmoRightPerk:
	DPIS A 0 A_JumpIfInventory("DualMAC10Right",40,"CalculateCheckL")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Right",1)
	Loop
  CalculateAmmoRightPerk10:
	DPIS A 0 A_JumpIfInventory("DualMAC10Right",50,"CalculateCheckL")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Right",1)
	Loop
	
	
  CalculateCheckL:
	 TNT1 A 0
	 TNT1 A 0 A_JumpIfInventory("Perk_Commando",1,"LevelCheckL")
	 Goto CalculateAmmoLeft
  LevelCheckL:
	 TNT1 A 0 A_JumpIfInventory("PerkLevel",10,"CalculateAmmoLeftPerk10")
	 Goto CalculateAmmoLeftPerk
  CalculateAmmoLeft:
	DPIS A 0 A_JumpIfInventory("DualMAC10Left",30,"LIdle")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Left",1)
	Loop
  CalculateAmmoLeftPerk:
	DPIS A 0 A_JumpIfInventory("DualMAC10Left",40,"LIdle")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Left",1)
	Loop
  CalculateAmmoLeftPerk10:
	DPIS A 0 A_JumpIfInventory("DualMAC10Left",50,"LIdle")
	DPIS A 0 A_JumpIfInventory("DualMAC10Secondary",1,1)
	Goto LIdle
	DPIS A 0 A_TakeInventory("DualMAC10Secondary",1)
	DPIS A 0 A_GiveInventory("DualMAC10Left",1)
	Loop
	
  //=================================================================
  
  Ready:
	PPSS A 0
	PPSS A 0 A_TakeInventory("SynthFireLeft",1)
	PPSS A 0 A_TakeInventory("SynthFireRight",1)
	Goto LIdle
  LIdle:
	PPSS A 0 A_JumpIfInventory("IsReloading",1,"GiveBothReload")
	PPSS A 0 A_JumpIfInventory("SynthFireLeft",1,"LFire")
	PPSS A 0 A_JumpIfInventory("DoBlocking",1,"QuickMelee")
    PPSS A 0 //A_JumpIfInventory("QuickGrenading",1,"ToGrenade")
	//PPSS A 0 A_JumpIfInventory("ReloadingL",1,"LReload")
	PPSS A 0 A_TakeInventory("BackToEmpty",1)
    D1LI A 1 A_WeaponReady(12)
    Loop
  ToGrenade:
	ORDD A 1
	Goto Ready
  Profanity:
	9MRL A 0 ACS_ExecuteAlways(820,0,2,0,0)
	ORFU ABC 2
	ORFU D 26
	ORFU CBA 2
	PPFU A 0 A_TakeInventory("FuckYou",1)
	Goto Ready
  QuickMelee:
	ORDM A 0 A_JumpIfInventory("OrderDualPrimary",1,1)
	Goto QMEmpty
	ORDM A 0 A_PlaySoundEx("fist/swing","Weapon")
	ORDM ABCDF 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	PPBL D 0 A_CustomPunch (random(4,5),1,0,"BlockPuff")
	ORDM HIJKL 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 2
	ORDS ABCD 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	PPBL A 0 A_TakeInventory("DoBlocking",1)
	Goto Ready
  QMEmpty:
	ORDN A 0 A_PlaySoundEx("fist/swing","Weapon")
	ORDN ABCDF 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	PPBL D 0 A_CustomPunch (random(4,5),1,0,"BlockPuff")
	ORDN HIJKL 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 2
	ORDS EFGH 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	PPBL A 0 A_TakeInventory("DoBlocking",1)
	Goto Ready
  ToReady:
	NULL A 0
	Goto Ready
	NULL AAA 0
	NULL A 0 A_PlaySoundEx("orderpistol/dryfire","SoundSlot6")
	PPFI A 0 A_TakeInventory("SynthFireLeft",1)
	Goto Ready
  NullFlash:
	TNT1 A 0
	Stop
  Deselect:
	 TNT1 A 0 A_GunFlash("RDeselect")
	 D1LS CBA 1
	 TNT1 A 0 A_TakeInventory("SynthFireActive",1)
     TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
	 TNT1 A 1 A_Lower
     Goto Deselect+5
  Select:
	 TNT1 A 0 A_SetCrosshair(7)
	 TNT1 AA 0 A_Raise
	 TNT1 A 0 A_GiveInventory("SynthFireActive",1)
	 TNT1 A 1 A_WeaponReady
	 TNT1 A 0 A_PlaySoundEx("orderpistol/select","SoundSlot6")
	 Goto SelectAnim
  SelectAnim:
	ORDS A 0 A_GunFlash("RSelect")
	D1LS ABC 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	TNT1 A 0 ACS_ExecuteAlways(560,0,0,0,0)
	TNT1 A 0 ACS_ExecuteAlways(561,0,0,0,0)
	//TNT1 A 0 A_Gunflash("DualPistols")
	Goto Ready
  AltFire:
  Fire:
	TNT1 A 0
	Stop
  RFire:
	 PPFI A 0 A_JumpIfInventory("DualMAC10Right",1,1)
	 Goto DryFireR
	 M10I A 0 A_GiveInventory("LoopingSound",1)
	 M10I A 0 A_PlaySoundEx("mac10/fireloop","Weapon",true)
	 Goto RFireLoop
  RFireLoop:
	 PPFI A 0 A_JumpIfInventory("DualMAC10Right",1,1)
	 Goto RFireEndAnim
	 PPFI A 0 A_TakeInventory("DualMAC10Right",1)
	 
	 PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,3,0,0), ACS_ExecuteWithResult(566,3,0,0), 1, 8, "IncendiaryPuff")
	 PPFI A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,16,-3)
	 PPFI A 0 A_SpawnItemEx("ShooterLight",0,0,0)
	 PPFI A 0 A_FireCustomMissile("MuzzleSmokeFX",0,0,4,0)
	 PPFI A 0 A_SetPitch(Pitch-1.5)
	 PPFI A 0 A_Jump(255,"RMF1","RMF2","RMF3","RMF4")
	 Goto RMF1
	 
  RMF1:
     D1RI B 1 bright
	 Goto RFireEnd
  RMF2:
     D1RI C 1 bright
	 Goto RFireEnd
  RMF3:
     D1RI D 1 bright
	 Goto RFireEnd
  RMF4:
     D1RI E 1 bright
	 Goto RFireEnd
	 
  RFireEnd:
	 D1RI A 1
	 DM4R E 0 A_JumpIfInventory("SynthFireRight",1,"RFireLoop")
	 Goto RFireEndAnim
  RFireEndAnim:
	 PPFI A 0 A_TakeInventory("SynthFireRight",1)
	 PPFI A 0 A_TakeInventory("LoopingSound",1)
	 PPFI A 0 A_StopSoundEx("Weapon")
	 PPFI A 0 A_PlaySoundEx("mac10/firetail","Weapon")
	 D1RI FGH 1
	 Goto RIdle
	 
  LFire:
	 PPFI A 0 A_JumpIfInventory("DualMAC10Left",1,1)
	 Goto DryFireL
	 M10I A 0 A_GiveInventory("LoopingSound",1)
	 M10I A 0 A_PlaySoundEx("mac10/fireloop","SoundSlot5",true)
	 Goto LFireLoop
	 
  LFireLoop:
	 PPFI A 0 A_JumpIfInventory("DualMAC10Left",1,1)
	 Goto LFireEndAnim
	 PPFI A 0 A_TakeInventory("DualMAC10Left",1)
	 
	 PPFI A 0 A_FireBullets (ACS_ExecuteWithResult(566,3,0,0), ACS_ExecuteWithResult(566,3,0,0), 1, 8, "IncendiaryPuff")
	 PPFI A 0 A_FireCustomMissile("PistolCaseSpawn",5,0,-12,-3)
	 PPFI A 0 A_SpawnItemEx("ShooterLight",0,0,0)
	 PPFI A 0 A_FireCustomMissile("MuzzleSmokeFX",0,0,-12,0)
	 PPFI A 0 A_SetPitch(Pitch-1.5)
	 PPFI A 0 A_Jump(255,"LMF1","LMF2","LMF3","LMF4")
	 Goto LMF1
	 
  LMF1:
     D1LI B 1 bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto LFireEnd
  LMF2:
     D1LI C 1 bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto LFireEnd
  LMF3:
     D1LI D 1 bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto LFireEnd
  LMF4:
     D1LI E 1 bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto LFireEnd
	 
  LFireEnd:
	 D1LI A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 DM4R E 0 A_JumpIfInventory("SynthFireLeft",1,"LFireLoop")
	 Goto LFireEndAnim
  LFireEndAnim:
	 PPFI A 0 A_TakeInventory("SynthFireLeft",1)
	 PPFI A 0 A_TakeInventory("LoopingSound",1)
	 PPFI A 0 A_StopSoundEx("SoundSlot5")
	 PPFI A 0 A_PlaySoundEx("mac10/firetail","SoundSlot5")
	 D1LI FGH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	 Goto LIdle
	 
  Spawn:
    MC10 O -1
    Stop
  }
}