//===========================================================================
//
// Kurdd & Schaumers AB-50
//
// by Marty Kirra
// Sprites by Mike12, zrrion the insect, and Marty Kirra
//
//===========================================================================
ACTOR MelAmmoBox50 : Weapon
{
	Weapon.Kickback 100
	Weapon.AmmoType	"AmmoBoxMag"
	Weapon.AmmoGive	0
	Weapon.AmmoUse	1
	Weapon.AmmoType2 "AmmoBoxAmmo"
	Weapon.AmmoGive2 0
	Weapon.AmmoUse2	0
	//Weapon.BobStyle Alpha
	//Weapon.BobSpeed 2.0
	//Weapon.BobRangeY 0.6
	//Weapon.BobRangeX 0.4
	Inventory.PickupMessage "[Kurdd & Schaumers AB-50] [Class: Sub-Machine Gun, Slot 4]"
	Obituary "%o was riddled with bullets thanks to %k's AB-50."
	+Weapon.AMMO_OPTIONAL
	+NOEXTREMEDEATH
	+WEAPON.NoAlert
   States
   {
   Spawn:
	  ABXP A -1
	  Stop
   Ready:
      TNT1 A 0 A_JumpIfInventory("MeleePressed",1,"SPMeleeUzi")
      TNT1 A 0 A_JumpIfInventory("Reloading",1,"Reload")
	  ABXG A 1 A_WeaponReady
      LOOP
   Deselect:
      TNT1 A 0 A_PlaySoundEx("AmmoBox/Down", "SoundSlot5")
	  ABXD ABCDE 1
	  TNT1 A 6
   DeselectLoop:
	  TNT1 A 1 A_Lower
	  Loop
   Select:
	  TNT1 A 0 A_TakeInventory("MeleeSelected", 1)
	  TNT1 A 0 A_TakeInventory("919Selected", 1)
	  TNT1 A 0 A_TakeInventory("ZekeSelected", 1)
	  TNT1 A 0 A_TakeInventory("DahliaSelected", 1)
	  TNT1 A 0 A_TakeInventory("ToolBoxSelected", 1)
	  TNT1 A 0 A_TakeInventory("MP40Selected", 1)
	  TNT1 A 0 A_GiveInventory("AmmoBoxSelected", 1)
	  TNT1 A 0 A_PlaySoundEx("AmmoBox/Up", "SoundSlot5")
      TNT1 A 4
	  ABXU ABCDE 1
   SelectLoop:
	  ABXG A 1 A_Raise
      Loop
   Fire:
	  TNT1 A 0 A_JumpIfNoAmmo("AutoEmpty")
	  ABXG A 0 BRIGHT
      ABXG A 0 A_GunFlash
	  ABXG A 0 A_AlertMonsters
	  ABXG A 0 A_SetPitch(pitch - .3)
	  ABXG A 0 A_SetAngle(angle + (random(-2,2)/10))
      ABXG A 0 A_PlayWeaponSound("AmmoBox/fire")
    Fire0:
      TNT1 A 0 A_JumpIfInventory("GameIsCoop", 1, "FireCoop")
	  Goto FireDM
	FireCoop:
	  ASTF A 0 BRIGHT A_FireCustomMissile("AmmoboxCoopBullet",(random(-500, 500)/100.00), 1, 0, 1, 0,(random(-100, 100)/100.00))
	  Goto FireFinish
	FireDM:
	  ASTF A 0 BRIGHT A_FireBullets(5,1,-1,9,"919mBulletPuff",1)
	  Goto FireFinish
	FireFinish:
	  ASTF A 0 A_Jump(64,"AFire4")
      ASTF A 0 A_Jump(64,"AFire3")
	  ASTF A 0 A_Jump(88,"Afire2")
	AFire1:
	  ASTF B 0 A_FireCustomMissile("9mmCasingSpawner",-4,0,0,0)
	  ASTF B 0 A_Light2
      ABXF A 1 BRIGHT A_Light1
	  ASTF B 0 A_Light0
      Goto FireEnd
	AFire2:
	  ASTF B 0 A_FireCustomMissile("9mmCasingSpawner",-3,0,0,0)
	  ASTF C 0 A_Light2
      ABXF B 1 BRIGHT A_Light1
	  ASTF C 0 A_Light0
      Goto FireEnd
	AFire3:
	  ASTF B 0 A_FireCustomMissile("9mmCasingSpawner",-5,0,0,0)
	  ASTF D 0 A_Light2
      ABXF C 1 BRIGHT A_Light1
	  ASTF D 0 A_Light0
	  Goto FireEnd
	AFire4:
	  ASTF B 0 A_FireCustomMissile("9mmCasingSpawner",-5,0,0,0)
	  ASTF D 0 A_Light2
      ABXF D 1 BRIGHT A_Light1
	  ASTF D 0 A_Light0
	FireEnd:
	  ABXF E 1
	  ABXF F 1
	  ABXF G 2 A_Refire
	  ABXF FE 1 
	  ABXG A 1
	  Goto Ready
	AutoEmpty:
	  ABXG A 5 A_PlayWeaponSound("919m/dry")
	  Goto Reload 
	Reload:
	  TNT1 A 0 A_TakeInventory("Reloading",9)
	  ABXG A 0 A_JumpIfInventory("AmmoBoxMag", 50, "2")
	  ABXG A 0 A_JumpIfInventory("AmmoBoxAmmo", 1, "2")
	  ABXG A 1 A_WeaponReady(WRF_NOFIRE)
	  Goto Ready
	ReloadStart:
	  ABXG A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
	  ABXR AUBC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOBOB)
	  ABXG A 0 A_FireCustomMissile("SpentClip1",3,0,5,0)
	  ABXR D 1 A_PlayWeaponSound("AmmoBox/Out")
	  ABXR EFGHIIIIIIIIIIIIIIIIIIIIIIIIIII 1
	  ABXR J 1 A_PlayWeaponSound("AmmoBox/In")
	  ABXR KLMNOP 1 
	ReloadWork:
	  MPTR I 0 A_TakeInventory("AmmoBoxAmmo",1)
	  MPTR I 0 A_GiveInventory("AmmoBoxMag",1)
	  MPTR I 0 A_JumpIfInventory("AmmoBoxMag",50,"ReloadFinish")
	  MPTR I 0 A_JumpifInventory("AmmoBoxAmmo",1,"ReloadWork")
	ReloadFinish:
	  ABXR PSTCBUA 1
	  ABXG A 2
	  ABXC C 0 A_PlaySound("ammobox/pull", 6)
	  ABXC ABCC 1
	  ABXC DEFG 1
	  ABXG A 3
	  Goto Ready
	SPMeleeUzi:
	  ABXG A 1
	  ABXD ABCDE 1
	  TNT1 A 5
	  TNT1 A 0 A_PlaySound("strongmelee/miss", 5)
	  TNT1 A 0 A_PlaySound("*melee", 6)
	  ABXM ABC 1
	  ML1F D 0 A_JumpIfInventory("PowerStrength",1,"SPMeleeBerserk")
	  ABXM D 1 A_CustomPunch(8,0,0,"StrongMeleePuff",90)
	  Goto SPMeleeA
	SPMeleeBerserk:
	  ABXM D 1 A_CustomPunch(16,0,0,"StrongMeleePuff",90)
	  Goto SPMeleeA
	SPMeleeA: 
	  ABXM EFGHI 1
	  TNT1 A 3
	  ABXU ABCDE 1
	  Goto Ready
   }
}

ACTOR AmmoBoxMag : Ammo
{
	+IGNORESKILL
	Inventory.MaxAmount 50
}

ACTOR AmmoBoxAmmo : Ammo
{
	Inventory.Amount 15
	Inventory.MaxAmount 150
	Ammo.BackpackAmount 25
	Ammo.BackpackMaxAmount 300
	Inventory.Icon "ABXAA0"
	Inventory.PickupMessage "Picked up machine gun ammo. [+15 SMG Ammo]"
	Inventory.PickupSound "AmmoBox/In"
	States
	{
	Spawn:
		ABXA A -1
		Stop
	}
}

ACTOR BoxOfAmmo : CustomInventory Replaces ClipBox
{
    Inventory.PickupMessage "Found an assorted ammo crate. [+30 Pistol Ammo][+60 SMG Ammo][+10 Bolts]"
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
      AMMO A -1
	  Stop
	Pickup:
	  TNT1 A 0 A_JumpIfInventory("DahliaNormalAmmo", 0, "AmmoCheck1")
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 60)
	  TNT1 A 0 A_GiveInventory("TSPPistolAmmo", 30)
	  TNT1 A 0 A_GiveInventory("DahliaNormalAmmo", 10)
	  Stop
	AmmoCheck1:
      TNT1 A 0 A_JumpIfInventory("AmmoBoxAmmo", 0, "AmmoCheck2")
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 60)
	  TNT1 A 0 A_GiveInventory("TSPPistolAmmo", 30)
	  TNT1 A 0 A_GiveInventory("DahliaNormalAmmo", 10)
	  Stop
	AmmoCheck2:
      TNT1 A 0 A_JumpIfInventory("TSPPistolAmmo", 0, "PickupFail")
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 60)
	  TNT1 A 0 A_GiveInventory("TSPPistolAmmo", 30)
	  TNT1 A 0 A_GiveInventory("DahliaNormalAmmo", 10)
	  Stop
	PickupFail:
      AMMO A 1
      Fail
	}
}

ACTOR AmmoBox50Pickup : CustomInventory Replaces Chaingun 
{
    Inventory.PickupMessage "[Kurdd & Schaumers AB-50] [Class: Sub-Machine Gun, Slot 4]"
	Inventory.PickupSound "misc/w_pkup"
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
      ABXP A -1
	  Stop
	Pickup:
	  TNT1 A 0 A_JumpIfInventory("IsMel",1,"MelPickup")
	  TNT1 A 0 A_JumpIfInventory("IsVexler",1,"MelPickup")
	  Fail
	VexlerPickup:
	  TNT1 A 0 A_JumpIfInventory("MelAmmoBox50", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelAmmoBox50", 1)
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 50)
	  TNT1 A 0 A_GiveInventory("AmmoBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	MelPickup:
	  TNT1 A 0 A_JumpIfInventory("MelAmmoBox50", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelAmmoBox50", 1)
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 50)
	  TNT1 A 0 A_GiveInventory("AmmoBoxJustPickedUp", 1)
	  TNT1 A 0 ACS_ExecuteAlways(859)
	  TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PretendPickupFail")
	  TNT1 A 1 
	  Stop
	AmmoCheck:
      TNT1 A 1 A_JumpIf(ACS_ExecuteWithResult(860,1) >= 1,"PickupFail")
	  TNT1 A 0 A_JumpIfInventory("AmmoBoxAmmo", 0, "PickupFail")
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 50)
	  Stop
	PretendPickupFail:
	  TNT1 A 0 ACS_ExecuteAlways(857,0,16)
      DCBP A 1
      Fail
	PickupFail:
      ABXP A 1
      Fail
	}
}

ACTOR AmmoBox50DroppedPickup : CustomInventory
{
    Inventory.PickupMessage "[Kurdd & Schaumers AB-50] [Class: Sub-Machine Gun, Slot 4]"
	Inventory.PickupSound "misc/w_pkup"
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
      ABXP A -1
	  Stop
	Pickup:
	  TNT1 A 0 A_JumpIfInventory("IsMel",1,"MelPickup")
	  TNT1 A 0 A_JumpIfInventory("IsVexler",1,"MelPickup")
	  Fail
	VexlerPickup:
	  TNT1 A 0 A_JumpIfInventory("MelAmmoBox50", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelAmmoBox50", 1)
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 25)
	  TNT1 A 0 A_GiveInventory("AmmoBoxJustPickedUp", 1)
	  TNT1 A 1 ACS_ExecuteAlways(859)
	  Stop
	MelPickup:
	  TNT1 A 0 A_JumpIfInventory("MelAmmoBox50", 1, "AmmoCheck")
	  TNT1 A 0 A_GiveInventory("MelAmmoBox50", 1)
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 25)
	  TNT1 A 0 A_GiveInventory("AmmoBoxJustPickedUp", 1)
	  TNT1 A 1 ACS_ExecuteAlways(859)
	  Stop
	AmmoCheck:
      TNT1 A 0 A_JumpIfInventory("AmmoBoxAmmo", 0, "PickupFail")
	  TNT1 A 0 A_GiveInventory("AmmoBoxAmmo", 25)
	  Stop
	PickupFail:
      ABXP A 1
      Fail
	}
}

actor AmmoboxCoopBullet : FastProjectile
{
  Damage (Random(1, 3)*9)
  Radius 2
  Height 2
  Speed 320
  Projectile
  Renderstyle "Normal"
  Species "Player"
  +BLOODSPLATTER
  +THRUSPECIES
  +NOTIMEFREEZE
  +NOEXTREMEDEATH
  Alpha 1.0
  Decal Bulletchip
  States
  {
  Spawn:
    TNT1 A 1
    Loop
  Death:
    TNT1 A 1 A_SpawnItem("919mBulletPuff")
    Stop
  XDeath:
    TNT1 A 1
    Stop
  }
}

//===========================================================================
//
// Maschinenpistole 40 (MP 40)
//
// by Marty Kirra
// Sprites by Marty Kirra, Valve
//
//===========================================================================
ACTOR MelMipFowty : Weapon
{
	Weapon.Kickback 100
	Weapon.AmmoType	"MP40Mag"
	Weapon.AmmoGive	0
	Weapon.AmmoUse	1
	Weapon.AmmoType2 "TSPPistolAmmo"
	Weapon.AmmoGive2 0
	Weapon.AmmoUse2	0
	//Weapon.BobStyle Alpha
	//Weapon.BobSpeed 1.5
	//Weapon.BobRangeY 0.4
	//Weapon.BobRangeX 0.6
	Inventory.PickUpSound "mp40/pickup"
	Inventory.PickupMessage "[Maschinenpistole 40] [Class: Sub-Machine Gun, Slot 4]"
	Obituary "%o schoss %k mit einem Relikt der Vergangenheit. Sieg Heil!"
	+Weapon.AMMO_OPTIONAL
	+NOEXTREMEDEATH
	+WEAPON.CHEATNOTWEAPON
	+WEAPON.NoAlert
   States
   {
   Spawn:
	  MP4P A -1
	  Stop
   Ready:
      TNT1 A 0 A_JumpIfInventory("MeleePressed",1,"SPMeleeMP40")
	  TNT1 A 0 A_JumpIfInventory("Reloading",1,"Reload")
      MP4G A 1 A_WeaponReady
      LOOP
   Deselect:
      TNT1 A 0 A_PlaySoundEx("mipfowty/down", "SoundSlot5")
	  MP4D ABCD 1
	  TNT1 A 6
   DeselectLoop:
	  TNT1 A 1 A_Lower
	  Loop
   Select:
	  TNT1 A 0 A_TakeInventory("MeleeSelected", 1)
	  TNT1 A 0 A_TakeInventory("919Selected", 1)
	  TNT1 A 0 A_TakeInventory("ZekeSelected", 1)
	  TNT1 A 0 A_TakeInventory("DahliaSelected", 1)
	  TNT1 A 0 A_TakeInventory("ToolBoxSelected", 1)
	  TNT1 A 0 A_TakeInventory("AmmoBoxSelected", 1)
	  TNT1 A 0 A_GiveInventory("MP40Selected", 1)
      TNT1 A 0 A_PlaySoundEx("mipfowty/Up", "SoundSlot5")
      TNT1 A 6
	  MP4U ABCD 1
   SelectLoop:
	  MP4G A 1 A_Raise
      Loop
   Fire:
	  TNT1 A 0 A_JumpIfNoAmmo("Empty")
	  MP4G A 0 BRIGHT
      MP4G A 0 A_GunFlash
	  MP4G A 0 A_AlertMonsters
	  MP4G A 0 A_SetPitch(pitch - .4)
	  MP4G A 0 A_SetAngle(angle + (random(-4,4)/10))
      MP4G A 0 A_PlayWeaponSound("mipfowty/fire")
      MP4F A 0 BRIGHT A_FireBullets(3,6,-1,10,"919mBulletPuff",1)
	  ASTF B 0 A_FireCustomMissile("9mmCasingSpawner",-4,0,0,0)
	  ASTF B 0 A_Light2
      MP4F A 1 BRIGHT A_Light1
	  MP4F B 1 A_Light0
	  MP4G BC 1
      MP4G B 1 A_Refire
	  MP4G A 3
	  Goto Ready
	Empty:
	  MP4G A 4 A_PlayWeaponSound("919m/dry")
	  Goto Reload 
	Reload:
	  TNT1 A 0 A_TakeInventory("Reloading",9)
	  MP4G A 0 A_JumpIfInventory("MP40Mag", 30, "2")
	  MP4G A 0 A_JumpIfInventory("TSPPistolAmmo", 1, "2")
	  MP4G A 1 A_WeaponReady(WRF_NOFIRE)
	  Goto Ready
	ReloadStart:
	  MP4C AB 1
	  MP4C C 0 A_PlaySound("mipfowty/bolt1", 5)
	  MP4C DDEEFFGHIJJKKLLMMM 1
	  MP4R ABCDDDDDD 1
	  MP4R D 0 A_PlaySound("mipfowty/out", 5)
	  MP4R EFGHI 1
	  MP4R I 0 A_FireCustomMissile("SpentClip1",3,0,5,0)
	  MP4R IIIIIIIIIIIIIIIIIIII 1
	ReloadWork:
	  MPTR I 0 A_TakeInventory("TSPPistolAmmo",1)
	  MPTR I 0 A_GiveInventory("MP40Mag",1)
	  MPTR I 0 A_JumpIfInventory("MP40Mag",30,"ReloadFinish")
	  MPTR I 0 A_JumpifInventory("TSPPistolAmmo",1,"ReloadWork")
	ReloadFinish:
	  MP4R M 0 A_PlaySound("mipfowty/in", 5)
	  MP4R JKLMNOPPQQRS 1
	  MP4C MMMLLKKJJ 1
	  MP4C J 0 A_PlaySound("mipfowty/bolt2", 5)
	  MP4C IHGFFEEDDCBA 1
	  MP4G A 2
	  Goto Ready
	SPMeleeMP40:
	  MP4G A 1
	  MP4M ABCDE 1
	  TNT1 A 0 A_PlaySound("strongmelee/miss", 5)
	  TNT1 A 0 A_PlaySound("*melee", 6)
	  MP4M FG 1
	  MP4M H 1 A_CustomPunch(8,0,0,"StrongMeleePuff",90)
	  MP4M IHGFEDCBA 1
	  MP4G A 6
	  Goto Ready
   }
}

ACTOR MP40Mag : Ammo
{
	+IGNORESKILL
	Inventory.MaxAmount 30
}
