// --------------------------------------------------------------------------
//
// Tommygun
//
// --------------------------------------------------------------------------

ACTOR Tommygun : LowWeapon replaces Chaingun
{
	+WEAPON.AMMO_OPTIONAL
	Weapon.SlotNumber 4
	Weapon.AmmoType1 "TMGreload"
	Weapon.AmmoUse1 1
	Weapon.AmmoType2 "45acpclip"
	Weapon.AmmoGive2 25
	Weapon.UpSound "weapons/upwp4"
	Inventory.Pickupmessage "Tommygun."
	Tag "Tommygun"
	Scale 0.7
	States
	{
	Spawn:
		TMGP A -1
		Stop
	Ready:
		TNT1 A 0 A_JumpIfInventory("TommyZoomed",1,"ReadyZoomed")
		TMGG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	ReadyZoomed:
		TMGA B 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Goto Ready
	Deselect:
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		TNT1 A 0 A_PlaySound("weapons/swap",6)
		TMGG A 1 Offset (8, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (16, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (24, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (32, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (40, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (48, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (56, 0) A_Lower
		TNT1 A 0 A_Lower
		TMGG A 1 Offset (64, 0) A_Lower
		TNT1 A 1 A_Lower
		Wait
	Select:
		TMGG A 1 Offset (64, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (56, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (48, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (40, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (32, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (24, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (16, 0) A_Raise
		TNT1 A 0 A_Raise
		TMGG A 1 Offset (8, 0) A_Raise
		TNT1 A 0 A_Raise
		Wait
	Fire:
		TNT1 A 0 A_JumpIfInventory("TommyZoomed",1,"FireZoomed")
		TNT1 A 0 A_Jump(64,"Fire2")
		TNT1 A 0 A_Jump(80,"Fire3")
		TNT1 A 0 A_Jump(96,"Fire4")
		TNT1 A 0 A_JumpIfNoAmmo("DryFire")
		TNT1 A 0 A_Playsound("weapons/TMGFR", 6)
		TNT1 A 0 A_AlertMonsters
		TMGF A 1 BRIGHT A_FireBullets(5.5, 5.1, 1, 7,"BulletPuff")
		TNT1 A 0 A_SetPitch(pitch -0.8)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 A_FireCustomMissile("9mmCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TNT1 A 0 Radius_Quake (2, 2, 0, 1, 0)
		TMGF EF 1
		TMGG A 0 Offset(0,35)
		TMGG A 0 A_Refire
		Goto Ready
	Fire2:
		TMGF A 0 A_JumpIfNoAmmo("DryFire")
		TMGF A 0 A_Playsound("weapons/TMGFR", 6)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake (2, 2, 0, 1, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 A_FireCustomMissile("9mmCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TMGF B 1 BRIGHT A_FireBullets(5.2, 4.9, 1, 7,"BulletPuff")
		TMGF EF 1 A_SetPitch(pitch -1.0)
		TMGG A 0 Offset(0,35)
		TMGG A 0 A_Refire
		Goto Ready
	Fire3:
		TMGF A 0 A_JumpIfNoAmmo("DryFire")
		TMGF A 0 A_Playsound("weapons/TMGFR", 6)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake (2, 2, 0, 1, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 A_FireCustomMissile("9mmCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TMGF C 1 BRIGHT A_FireBullets(5.7, 6.9, 1, 7,"Bullet_Puff")
		TMGF EF 1 A_SetPitch(pitch -1.0) 
		TMGG A 0 Offset(0,35)
		TMGG A 0 A_Refire
		Goto Ready
	Fire4:
		TMGF A 0 A_JumpIfNoAmmo("DryFire")
		TMGF A 0 A_Playsound("weapons/TMGFR", 6)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 Radius_Quake (2, 2, 0, 1, 0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 A_FireCustomMissile("9mmCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TMGF D 1 BRIGHT A_FireBullets(5.6, 6.1, 1, 7,"BulletPuff")
		TMGF E 1 A_SetPitch(pitch + 0.25)
		TMGF F 1 A_SetPitch(pitch -0.5)
		TMGG A 0 Offset(0,35)
		TMGG A 0 A_Refire
		Goto Ready
	FireZoomed:
		TNT1 A 0 A_JumpIfInventory("TMGReload",1,1)
		Goto Reload
		TMGA A 0 A_JumpIfNoAmmo("Dryfire")
		TMGA A 0 A_Playsound("weapons/TMGFR", 6)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_FireCustomMissile("GunSmokeSpawner",0,0,0)
		TNT1 A 0 A_FireCustomMissile("9mmCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TMGA C 1 BRIGHT A_FireBullets(4.7, 3.9, 1, 7,"Bullet_Puff")
		TNT1 A 0 Radius_Quake (2, 2, 0, 1, 0)
		TMGA B 0 A_SetPitch(pitch -1.0)
		TMGA B 1 Offset(0,35)
		TMGA B 1 Offset(0,33)  
		TMGG A 0 A_Refire
		Goto Ready
	Altfire:
		TNT1 A 0 A_JumpIfInventory("TommyZoomed",1,"UnZoom")
		TNT1 A 0 A_GiveInventory("TommyZoomed",1)
		TMGG B 2 A_ZoomFactor(1.1)
		TMGF E 2 A_ZoomFactor(1.3)
		TMGF F 2 A_ZoomFactor(1.5)
		TMGA A 2 A_ZoomFactor(1.7)
		TMGA B 2 A_ZoomFactor(2)
		Goto Ready
	UnZoom:
		TMGA B 2 A_ZoomFactor(2)
		TMGA A 2 A_ZoomFactor(1.7)
		TMGF F 2 A_ZoomFactor(1.5)
		TMGF E 2 A_ZoomFactor(1.3)
		TMGG B 2 A_ZoomFactor(1.1)
		TMGG A 2 A_ZoomFactor(1)
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		Goto Ready
	Flash:
		TNT1 A 2 BRIGHT A_Light1
		TNT1 A 1 BRIGHT A_Light2
		Goto LightDone
	SniperDryfire:
		TMGA B 1 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1.0)
		goto Ready
	DryFire:
		TMGG B 3 A_PlaySound("weapons/MGDryfire")
		TMGG A 10
	Reload:
		TNT1 A 0 A_JumpIfInventory("TMGreload", 51, 2)
		TNT1 A 0 A_JumpIfInventory("45acpclip", 1, "ReloadWork")
		TNT1 A 0 A_JumpIfInventory("TommyZoomed",1,"Unzoom")
		TMGG A 1 A_WeaponReady
		Goto Ready
	ReloadWork:
		TNT1 A 0 A_Jumpifinventory("TommyZoomed",1,"Unzoom")
		TNT1 A 0 A_JumpIfInventory("TMGreload", 1, "ReloadWork2")
		TMGR AABCDD 1
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR E 4 A_PlaySound("weapons/TMGRD1")
		TMGR FFGHIJJ 1
		TMGR JJ 5
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR J 1 A_FireCustomMissile("EmptyTommyClip",0,0,0,0)
		TMGR JJ 6
		Goto Chambercheck
	ReloadWork2:
		TNT1 A 0 A_Jumpifinventory("TommyZoomed",1,"Unzoom")
		TMGR AABCDD 1
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR E 4 A_PlaySound("weapons/TMGRD1")
		TMGR FFGHIJJ 1
		TMGR JJ 15
		Goto Chambercheck
	ChamberCheck:
		TNT1 A 0 A_JumpIfInventory("TMGreload", 1, "ReloadLoop2")
		Goto ReloadLoop
	ReloadLoop:
		TNT1 A 0 A_TakeInventory("45acpclip", 1)
		TNT1 A 0 A_GiveInventory("TMGreload", 1)
		TNT1 A 0 A_JumpIfInventory("TMGreload", 50, "ReloadFinish")
		TNT1 A 0 A_JumpIfInventory("45acpclip", 1, "ReloadLoop")
		Goto ReloadFinish
	ReloadLoop2:
		TNT1 A 0 A_TakeInventory("45acpclip", 1)
		TNT1 A 0 A_GiveInventory("TMGreload", 1)
		TNT1 A 0 A_JumpIfInventory("TMGreload", 51, "ReloadFinish2")
		TNT1 A 0 A_JumpIfInventory("45acpclip", 1, "ReloadLoop2")
		Goto ReloadFinish2
	ReloadFinish:
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR JJIIHHGGFF 1 
		TMGR E 4 A_PlaySound("weapons/TMGRD2")
		TMGR CCKKKL 1
		TMGR L 4 A_PlaySound("weapons/TMGRD3")
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR MMMLLLKK 1
		TMGR CCBBAA 1
		Goto Ready
	ReloadFinish2:
		TMGR JJIIHHGGFF 1 
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TMGR E 4 A_PlaySound("weapons/TMGRD2")
		TMGR CCBBAA 1
		Goto Ready
//  Kick Actions
	Kick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"BerserkKick")
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		KKER A 1 Offset(0,32)
		KKER BCDE 1
		KKER FG 1 A_Recoil(-1)
		KKER H 2 A_CustomPunch (5,0,0,"FightPuff3") 
		KKER IHGFEDC 1 
		KKER BA 1 A_Recoil(+1)
		Goto Ready
	AirKick:
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"AirBerserkKick")
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		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:
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		KKER A 1 Offset(0,32)
		KKER BCDE 1
		KKER FG 1 A_Recoil(-1)
		KKER H 1 A_CustomPunch (9,0,0,"FightPuff3") 
		KKER IHGFEDC 1 
		KKER BA 1 A_Recoil(+1)
		Goto Ready
	AirBerserkKick:
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		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_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		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")
		TMGG A 1 Offset(67, 100)
		TMGG A 1 Offset(54, 81)
		TMGG A 1 Offset(32, 69)
		TMGG A 1 Offset(22, 58)
		TMGG A 1 Offset(10, 47)
		TMGG A 1 Offset(7, 39)
		TMGG 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 TMGreload : Ammo
{
	Inventory.MaxAmount 51
	+IGNORESKILL
}


ACTOR TommyZoomed : Inventory
{
Inventory.MaxAmount 1
}