// --------------------------------------------------------------------------
//
// Panzerfaust 100
//
// -----------------------------------------------------------------------

ACTOR Panzerfaust : LowWeapon replaces BFG9000
{
	+WEAPON.EXPLOSIVE
	+WEAPON.BFG
	+WEAPON.NOAUTOFIRE
	+WEAPON.AMMO_OPTIONAL
	Weapon.SlotNumber 7
	Weapon.AmmoType1 "PANReload"
	Weapon.AmmoUse1 1
	Weapon.AmmoType2 "BazookaShell"
	Weapon.AmmoGive2 1
	Weapon.UpSound "weapons/upwp6"
	Inventory.PickupMessage "Panzerfaust 100."
	Scale 0.95
	Tag "Panzerfaust 100"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfNoAmmo("TrueNoAmmo")
		PANG A 1 A_WeaponReady
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Goto TrueReady
	TrueReady:
		PANG A 1 A_WeaponReady
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	ReadyNoAmmo:
		PANF E 1 Offset(67, 100)
		PANF E 1 Offset(54, 81)
		PANF E 1 Offset(32, 69)
		PANF E 1 Offset(22, 58)
		PANF E 1 Offset(10, 47)
		PANF E 1 Offset(7, 39)
		PANF E 1 Offset(2, 34)
	TrueNoAmmo:
		PANF E 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	Deselect:
		TNT1 A 0 A_JumpIfInventory("BazookaShell",1,1)
		Goto Drylower
		TNT1 A 0 A_PlaySound("weapons/swap",6)
		PANR A 1 Offset (8, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (16, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (24, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (32, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (40, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (48, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (56, 0) A_Lower
		TNT1 A 0 A_Lower
		PANR A 1 Offset (64, 0) A_Lower
		TNT1 A 1 A_Lower
		Wait
	Drylower:
		TNT1 A 0 A_PlaySound("weapons/swap",6)
		TNT1 A 1 A_Lower
		Wait
	Select:
		TNT1 A 0 A_JumpIfNoAmmo("ReadyNoAmmo")
		PANR A 1 Offset (64, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (56, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (48, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (40, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (32, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (24, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (16, 0) A_Raise
		TNT1 A 0 A_Raise
		PANR A 1 Offset (8, 0) A_Raise
		TNT1 A 0 A_Raise
		Wait
	Fire:
		TNT1 A 0 A_JumpIfInventory("PANreload", 1, "Realfire")
		TNT1 A 0 A_JumpIfNoAmmo("TrueNoAmmo")
		TNT1 A 0 A_JumpIfInventory("Bazookashell", 1, "Reload")
	Realfire:
		TNT1 A 0 A_Playsound("weapons/Panfr", 6)
		TNT1 A 0 A_FireCustomMissile("PanzerMissile")
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_Recoil(+5)
		TNT1 A 0 A_ZoomFactor(0.985)
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		PANF A 2 BRIGHT
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		PANF FFFBBBCCCDDDEEE 1 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		PANF E 1 BRIGHT A_ZoomFactor(1.0)
		PANF E 1 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWRELOAD)
		Goto Reload
	Flash:
		TNT1 A 3 BRIGHT A_Light1
		TNT1 A 3 BRIGHT A_Light2
		Goto LightDone
	Reload:
		TNT1 A 0 A_JumpIfInventory("PANReload", 1, 2)
		TNT1 A 0 A_JumpIfInventory("BazookaShell", 1, "ReloadWork")
		TNT1 A 0 A_JumpIfNoAmmo("TrueNoAmmo")
		PANF E 1 A_WeaponReady
		Goto Ready
	ReloadWork:
		PANG BCD 3
		TNT1 A 22
		TNT1 A 10
		TNT1 A 0 A_SpawnItem("UsedPanzerfaust",0,0,0,0)
		TNT1 A 0 A_PlaySound("Weapons/PanDT",6)
	ReloadLoop:
		TNT1 A 0 A_TakeInventory("BazookaShell", 1)
		TNT1 A 0 A_GiveInventory("PANReload", 1)
		TNT1 A 0 A_JumpIfInventory("PANReload", 1, "ReloadFinish")
		TNT1 A 0 A_JumpIfInventory("BazookaShell", 1, "ReloadLoop")
		Goto ReloadFinish
	ReloadFinish:
		PANR A 1 Offset(67, 100)
		PANR A 1 Offset(54, 81)
		PANR A 1 Offset(32, 69)
		PANR A 1 Offset(22, 58)
		PANR A 1 Offset(10, 47)
		PANR A 1 Offset(7, 39)
		PANR A 1 Offset(2, 34)
		Goto Ready
	Spawn:
		PANP A -1
		Stop
//  Kick Actions
	Kick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_JumpIfNoAmmo("NoAmmoKick")
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"BerserkKick")
		KKLR A 1 Offset(0,32)
		KKLR BCDE 1
		KKLR FG 1 A_Recoil(-1)
		KKLR H 2 A_CustomPunch (5,0,0,"FightPuff3") 
		KKLR IHGFEDC 1 
		KKLR BA 1 A_Recoil(+1)
		Goto Ready
	NoAmmoKick:
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"NoAmmoBerserk")
		KKMR A 1 Offset(0,32)
		KKMR BCDE 1
		KKMR FG 1 A_Recoil(-1)
		KKMR H 2 A_CustomPunch (5,0,0,"FightPuff3") 
		KKMR IHGFEDC 1 
		KKMR BA 1 A_Recoil(+1)
		Goto Ready
	NoAmmoBerserk:
		KKMR A 1 Offset(0,32)
		KKMR BCDE 1
		KKMR FG 1 A_Recoil(-1)
		KKMR H 2 A_CustomPunch (9,0,0,"FightPuff3") 
		KKMR IHGFEDC 1 
		KKMR BA 1 A_Recoil(+1)
		Goto Ready
	AirKick:
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"AirBerserkKick")
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1
		KI3K F 3 A_CustomPunch (9,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
	BerserkKick:
		KKLR A 1 Offset(0,32)
		KKLR BCDE 1
		KKLR FG 1 A_Recoil(-1)
		KKLR H 2 A_CustomPunch (9,0,0,"FightPuff3") 
		KKLR IHGFEDC 1 
		KKLR BA 1 A_Recoil(+1)
		Goto Ready
	AirBerserkKick:
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1 A_Recoil(-2)
		KI3K F 3 A_CustomPunch (12,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
// TNT Actions
	TNT:
		TNT1 A 0 A_JumpIfInventory("TNTammo",1,1)
		Goto NoTNT
		TNT1 A 0 A_JumpIf(waterlevel>2,"YouCannot")
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TAND ABC 2
		TAND D 2 A_PlaySound ("weapons/tnttr")
		TNT1 A 0 A_FireCustomMissile("STNT",0,0,0,0)
		TNT1 A 0 A_TakeInventory("TNTammo",1)
		TAND EDCBA 2
		TNT1 A 0 A_JumpIfInventory("TNTammo",0,"NoTNT")
		PANR A 1 Offset(67, 100)
		PANR A 1 Offset(54, 81)
		PANR A 1 Offset(32, 69)
		PANR A 1 Offset(22, 58)
		PANR A 1 Offset(10, 47)
		PANR A 1 Offset(7, 39)
		PANR A 1 Offset(2, 34)
		Goto Ready
	YouCannot:
		TNT1 A 0 A_Print("You Are Underwater!",8)
		Goto Ready
	NoTNT:
		TNT1 A 0 A_Print("No dynamites left.")
		Goto Ready
	}
}

ACTOR PANreload : Ammo
{
	Inventory.MaxAmount 1
	+IGNORESKILL
}

ACTOR PanzerMissile
{
	Radius 11
	Height 8
	Speed 50
	Damage (500)
	PROJECTILE
	+RANDOMIZE
	+DEHEXPLOSION
	RenderStyle Add
	SeeSound ""
	DeathSound "misc/explosion"
	Obituary "BOOM!"
	Decal Scorch
	States
	{
	Spawn:
		ROCC A 1 BRIGHT A_SpawnItem("GunSmokeSpawner",0,0,0)
		loop
	Death:
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItem("GunSmokeSpawner")
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnDebris("BulletSparks")
		TNT1 A 1 A_SpawnItem("Detonation3")
		Stop
	}
}

// Credits to WildWeasel for some flags, borrowed from ww-mixed3.

ACTOR UsedPanzerfaust
{
	Projectile
	-NOGRAVITY
	-NOBLOCKMAP
	+NOTELEPORT
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MagazineToggle")==0,"Vanish")
		UNUP A 500
	Death:
		TNT1 A 1
		Stop
	Vanish:
		TNT1 A 0 A_StopSound(2)
		Stop
	}
}