// -----------------------------------------
// UAC-Heavy Assault Rifle
//------------------------------------------
								
ACTOR D64HMG: D64Weapon
{
    Weapon.AmmoUse 1
    Weapon.AmmoGive 25
    Weapon.AmmoType "AmmoClip"
    Inventory.PickupMessage "You got the UAC-Heavy Assault Rifle!"
    Inventory.PickUpSound "Weapons/PickUp"
	Obituary "%o was shredded by %k's UAC-Heavy Assault Rifle."
	Tag "UAC-Heavy Assault Rifle"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOAUTOFIRE
	
	States
	{
	Select:
		TNT1 A 0 A_PlaySound("Weapons/HMG/Up",5)
		UHMG A 1 Offset(67, 100)
		UHMG A 1 Offset(54, 81)
		UHMG A 1 Offset(32, 69)
		UHMG A 1 Offset(22, 58)
		UHMG A 1 Offset(10, 47)
		UHMG A 1 Offset(7, 39)
		UHMG A 1 Offset(2, 34)
		UHMG A 1 A_Raise
		Wait
	Ready:
		TNT1 A 0 A_JumpIfInventory("MissileToken",1,"ReadyMissile")
		TNT1 A 0 A_JumpIfInventory("IsKicking", 1, "DoKick")
		UHMG A 1 A_WeaponReady
		TNT1 A 0 A_JumpifInventory("IsGrenading",1,"ThrowGrenade")
    	TNT1 A 0 A_JumpifInventory("IsKicking", 1, "DoKick")
		Loop
	ReadyMissile:
		TNT1 A 0 A_JumpIfInventory("IsKicking", 1, "DoKick")
		UMCM D 1 A_WeaponReady
		TNT1 A 0 A_JumpifInventory("IsGrenading",1,"ThrowGrenade")
    	TNT1 A 0 A_JumpifInventory("IsKicking", 1, "DoKick")
		Loop
	Deselect:
		TNT1 A 0 A_PlaySound("weapons/weaponholster",3)
		TNT1 A 0 A_TakeInventory("MissileToken",1)
		UHMG A 1 Offset(2, 34)
		UHMG A 1 Offset(7, 39)
		UHMG A 1 Offset(10, 47)
		UHMG A 1 Offset(22, 58)
		UHMG A 1 Offset(32, 69)
		UHMG A 1 Offset(54, 81)
		UHMG A 1 Offset(67, 100)
		UHMG A 1 A_Lower
		Wait

	Fire:
		TNT1 A 0 A_JumpIfInventory("AmmoClip",1,1)
		Goto DryFire
		TNT1 A 0 A_JumpIfInventory("MissileToken",1,"FireMissile")
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire",7)
		TNT1 A 0 A_FireBullets(2.9, 2.9, 1, 9,"Bullet_Puff")
		TNT1 A 0 A_FireCustomMissile("RifleCaseSpawn",345+random(-8,8),0,-4,-5,0)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 Radius_Quake (1, 2, 0, 1, 0)
		TNT1 A 0 A_ZoomFactor(0.98)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_Gunflash
		UHMF A 1 BRIGHT
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_SetPitch(pitch -0.3)
		TNT1 A 0 A_ZoomFactor(1.0)
		UHMF B 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		UHMF C 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		UHMG A 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		UHMG A 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_ReFire
		Goto Ready
	FireMissile:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		NULL A 0 A_GiveInventory("MicroToken",1)
		NULL A 0 A_JumpIfInventory("MicroToken",6,"Fire6")
		NULL A 0 A_JumpIfInventory("MicroToken",5,"Fire5")
		NULL A 0 A_JumpIfInventory("MicroToken",4,"Fire4")
		NULL A 0 A_JumpIfInventory("MicroToken",3,"Fire3")
		NULL A 0 A_JumpIfInventory("MicroToken",2,"Fire2")
		NULL A 0 A_JumpIfInventory("MicroToken",1,"Fire1")
		Goto Fire1
	Fire1:
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire1", 1)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	Fire2:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire2", 3)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	Fire3:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire1", 1)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	Fire4:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire2", 3)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	Fire5:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire1", 1)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	Fire6:
		TNT1 A 0 A_JumpIfInventory("AmmoClip", 4, 1)
		Goto DryFire
		TNT1 A 0 A_PlaySound("Weapons/HMG/Fire2", 3)
		TNT1 A 0 A_TakeInventory("AmmoClip",4,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_FireCustomMissile("MicroRocket",0,0,-8)
		UMCM O 2 BRIGHT A_SetPitch(-2.0 + pitch)
		UMCM P 1
		UMCM PP 1 A_SetPitch(1.0 + pitch)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		NULL A 0 A_ReFire("FireMissile")
		Goto ReadyMissile
	AltFire:
		TNT1 A 0 A_JumpIfInventory("MissileToken",1,"ClosePod")
		TNT1 A 0 A_GiveInventory("MissileToken",1)
		TNT1 A 0 A_PlaySound("Weapons/HMG/Open", 1)
		UMCM AABBCC 1
		TNT1 A 0 A_PlaySound("Weapons/HMG/Ready", 4)
		UMCM DDDDD 1
		Goto Ready
	ClosePod:
		TNT1 A 0 A_PlaySound("Weapons/HMG/Close", 4)
		UMCM QQRRS 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		UMCM S 2
		TNT1 A 0 A_TakeInventory("MissileToken",1)
		NULL A 0 A_TakeInventory("MicroToken",6)
		Goto Ready
     DryFire:
	    TNT1 A 0 A_Print("No ammunition. Go find more.",1)
	    Goto Ready
		
//Kick
	DoKick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirBorne")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirBorne")
		TNT1 A 0 A_JumpIfInventory("BerserkStrength",1,"BerserkKick")
		KICK A 1 Offset(0,32)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK B 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK C 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK D 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK E 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK F 1 A_ZoomFactor(0.95)
		TNT1 A 0 A_CustomPunch(3 * random(5, 10),0,0,"KickPuff") 
		Goto FireEnd
		BerserkKick:
		KICK A 1 Offset(0,32)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK B 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK C 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK D 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK E 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK F 1 A_ZoomFactor(0.95)
		TNT1 A 0 A_CustomPunch(20 * random(5, 10),0,0,"KickPuff")
		Goto FireEnd
		FireEnd:
		KICK GHIH 1
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK G 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK F 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK E 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK D 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK C 1 A_ZoomFactor(1.00)
		TNT1 A 3
		KICK BA 1
		Goto Ready
		AirBorne:
		TNT1 A 0 A_JumpIfInventory("BerserkStrength",1,"AirBerserk")
		TNT1 A 0 Offset(-1,32)
		KIKK ABCDE 1 A_Recoil(-2)
		KIKK F 3 A_CustomPunch (15,0,0,"KickPuff") 
		Goto EndFire
		AirBerserk:
		TNT1 A 0 Offset(-1,32)
		KIKK ABCDE 1 A_Recoil(-2)
		KIKK F 3 A_CustomPunch (25 * random(5, 10),0,0,"KickPuff")
		Goto EndFire
		EndFire:
		KIKK GHIJK 2 
		Goto Ready
		
//Throw Grenade
	ThrowGrenade:
		TNT1 A 0 A_JumpIf(waterlevel>2,"DryFire")
		TNT1 A 0 A_JumpIfInventory("GrenadeAmmo",1,1)
		Goto Dryfire
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND B 1 Offset(0,24)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND C 1 Offset(0,23)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,26) A_PlaySound("weapons/SHG/throw")
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,28)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_SpawnItemEx("RealGrenade",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_TakeInventory("GrenadeAmmo",1)
		MAND E 1 Offset(-3,30)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND E 1 Offset(-6,31)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(-9,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(-12,33)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_TakeInventory("GetOnWithIt", 100)
		TNT1 A 0 A_JumpIfNoAmmo("DryFire")
		TNT1 A 7 Offset (75, 152)
		TNT1 A 1 Offset (6, 42)
		Goto Ready

	  Spawn:
      UHMP A -1
      Loop
	}
}

ACTOR MicroRocket
{
	Projectile
	Damage 8
	Radius 8
	Height 8
	Scale 0.25
	Speed 45
	Renderstyle Add
	+RANDOMIZE
	+DEHEXPLOSION
	+NOGRAVITY
	-ROCKETTRAIL
	DamageType Explosive
	Decal "Revenantscorch"
	DeathSound "Weapons/HMG/Boom"
	States
	{
	Spawn:
	    MICR A 1 Bright A_SpawnItem("GunSmokeSpawner2") 
		TNT1 A 0 ThrustThingZ(0,random(-3, 2),0,1)
		MICR A 1 Bright A_SpawnItem("GunSmokeSpawner2")
		MICR A 1 Bright A_SpawnItem("GunSmokeSpawner2")
		TNT1 A 0 ThrustThingZ(0,random(-3, 2),0,1)
		MICR A 1 Bright A_SpawnItem("GunSmokeSpawner2")
		TNT1 A 0 ThrustThing(angle*256/360+64,random(-1, 1),1, 0)
		Loop
		
	Death:
		TNT1 A 0 A_SpawnItem("RockBoom2")
		Stop	
	
	}
}

ACTOR MissileToken: Inventory
{
Inventory.MaxAmount 1
}

ACTOR MicroToken: Inventory
{
Inventory.MaxAmount 6
}