

//==============================================================================
//============================= Corvus' Fire Mace ==============================
//==============================================================================


ACTOR BrutalFireMace : HereticWeapon
{
	+AMMO_OPTIONAL
	+ALT_AMMO_OPTIONAL
	Weapon.SelectionOrder 8
	Inventory.RestrictedTo "BrutalCorvus"
	Inventory.ForbiddenTo "Corvette"
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 5
	Weapon.AmmoGive1 0
	Weapon.YAdjust 15
	Weapon.AmmoType1 "MaceCharge"
	Weapon.AmmoType2 "MaceCharge"
	Weapon.SisterWeapon "None"
	ConversationID 195
	Inventory.PickupMessage "Picked up the Fire Mace, unleash its wrath on your enemies!"
	Tag "$TAG_MACE"
	Weapon.SlotNumber 7
	Speed 4

	States
	{
		Spawn:
			TNT1 A 0 A_SpawnItemEx("RedFlareSmall",0,0,38)
			WMCE AA 1 Bright A_SetAngle(angle+speed)
			Goto Spawn
		Ready:
			TNT1 A 0 A_Light(0)
			TNT1 A 0 A_SetCrosshair (13)
			MACE AAAA 1
			{
				If (CountInv("Action1") == 1)
				{
					return state("Kicking");
				}				
				Else
				{
					A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD);
					
					If (CallACS("MagicReload")== 1)
					{
						If (A_JumpIfInventory("MaceCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalMaceAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							return state("Reload");
						}
					}
					If (CallACS("MagicReload")== 2)
					{
						If (A_JumpIfInventory("MaceCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalMaceAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							If (CountInv("MaceAmmoToken") > (20 - (CountInv("Level"))))
							{
								A_GiveInventory("MaceCharge",1);
								A_Takeinventory("BrutalMaceAmmo",1);
								A_TakeInventory("MaceAmmoToken",20);								
							}
							Else
							{
								A_GiveInventory("MaceAmmoToken");
							}
						}
						return state("");
					}
					Else
					{
						return state("");
					}
				}
			}
			Loop	
		Deselect:
			MACE A 0 A_Lower
			MACE A 1 A_Lower
			Loop
		Select:
			MACE A 0 A_Raise
			MACE A 1 A_Raise
			Loop
		Fire:
			MACE A 0 A_JumpIfNoAmmo("Reload")
			MACE B 2
		Hold:
			MACE A 0 A_JumpIfNoAmmo("Reload")
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredHold")
			//TNT1 A 0 A_PlaySound("MACEFIR1",1)
			TNT1 A 0 A_StartSound("MACEFIR1",1,CHANF_NOPAUSE)
			TNT1 A 0 A_FireProjectile("BrutalFireMaceBall1",frandom(-3,3),true,0,0,0,frandom(-5,-4))
			TNT1 A 0 A_Recoil(0.7 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_SetPitch(pitch-(0.45 * GetCVAR("SteadyHand")))
			MACE C 1 Bright
			TNT1 A 0 A_SetPitch(pitch-(0.15 * GetCVAR("SteadyHand")))
			MACE D 1 Bright
			TNT1 A 0 A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			MACE E 1
			TNT1 A 0 A_SetPitch(pitch+(0.25 * GetCVAR("SteadyHand")))
			MACE F 1
			MACE B 1 A_ReFire
			MACE B 1
			Goto Ready
		AltFire:	
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredAltChecker")
			TNT1 A 0 A_JumpIf(CallACS("ExpressSkills")==1, "SuperAttack")
			TNT1 A 0 A_JumpIfInventory("Level",8,"SuperAttack")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,8)
			Goto Ready
		SuperAttack:
			MACE B 2
		AltHold:
			//TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredHold")
			MACE A 0 A_JumpIfNoAmmo("Reload")
			//TNT1 A 0 A_PlaySound("MACEFIR1")
			TNT1 A 0 A_StartSound("MACEFIR1",1,CHANF_NOPAUSE)
			TNT1 A 0 A_FireCustomMissile("BrutalFireMaceBall3",frandom(-3,3),true,0,-3,0,frandom(-2,2))
			TNT1 A 0 A_Recoil(0.7 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_SetPitch(pitch-(0.45 * GetCVAR("SteadyHand")))
			MACE C 2 Bright
			TNT1 A 0 A_SetPitch(pitch-(0.15 * GetCVAR("SteadyHand")))
			MACE D 2 Bright
			TNT1 A 0 A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			MACE E 3
			TNT1 A 0 A_SetPitch(pitch+(0.25 * GetCVAR("SteadyHand")))
			MACE FB 2
			Goto Ready
		PoweredHold:
			TNT1 A 0 A_JumpIfNoAmmo("Reload")
			//TNT1 A 0 A_PlaySound("MACEFIR1")
			MACE C 1 Bright 
			{
				A_StartSound("MACEFIR1",1,CHANF_NOPAUSE);
				A_FireCustomMissile("BrutalFireMaceBall2",frandom(-3,3),true,0,-30,0,frandom(10,20));
				A_Recoil(0.7 * GetCVAR("SteadyHand"));
				A_SetPitch(pitch-(0.45 * GetCVAR("SteadyHand")));
				
				If (CountInv("TokenOfCost") == 1)
				{
					A_TakeInventory("MaceCharge",4);
				}
				If (CountInv("TokenOfCost") == 0)
				{
					A_TakeInventory("MaceCharge",2);
				}
			}
			MACE D 1 Bright A_SetPitch(pitch-(0.15 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			MACE E 1 A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_SetPitch(pitch+(0.25 * GetCVAR("SteadyHand")))
			MACE F 1
			MACE B 1 A_ReFire
			MACE B 1
			Goto Ready
		PoweredAltChecker:
			TNT1 A 0 A_JumpIf(CallACS("ExpressSkills")==1, "PoweredAltFire")
			TNT1 A 0 A_JumpIfInventory("Level",16,"PoweredAltFire")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,16)
			Goto Ready
		PoweredAltfire:
			TNT1 A 0 A_JumpIfInventory("MaceCharge", 25,1)
			Goto Reload
			//TNT1 A 0 A_PlaySound("MACEFIR1")
			TNT1 A 0 
			{
				A_StartSound("MACEFIR1",1,CHANF_NOPAUSE);
				A_SpawnItemEx("FireMacePodSeed",32,0,0,20,0,10);
				A_Recoil(0.7 * GetCVAR("SteadyHand"));
				A_SetPitch(pitch-(0.45 * GetCVAR("SteadyHand")));
				
				If (CountInv("TokenOfCost") == 1)
				{
					A_TakeInventory("MaceCharge",25);
				}
				If (CountInv("TokenOfCost") == 0)
				{
					A_TakeInventory("MaceCharge",13);
				}
				
			}
			MACE C 3 Bright
			TNT1 A 0 A_SetPitch(pitch-(0.15 * GetCVAR("SteadyHand")))
			MACE D 3 Bright
			TNT1 A 0 A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			MACE E 3
			TNT1 A 0 A_SetPitch(pitch+(0.25 * GetCVAR("SteadyHand")))
			MACE F 3
			MACE B 3 A_ReFire
			MACE B 3
			Goto Ready
		Reload:
			TNT1 A 0 A_JumpIfInventory("BrutalMaceAmmo", 1, 1)
			Goto Ready
			TNT1 A 0 A_JumpIfInventory("MaceCharge", 0, "Ready")
			TNT1 A 0 A_JumpIfInventory("Level",20, "Reload3")
			TNT1 A 0 A_JumpIfInventory("Level",10, "Reload2")
			//TNT1 A 0 A_PlaySound("DSBAREXP",4)
			TNT1 A 0 A_StartSound("DSBAREXP",4,CHANF_NOPAUSE)
			TNT1 A 0 A_Recoil(1 * GetCVAR("SteadyHand"))
			MACR A 1 Bright Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR B 1 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			MACR C 1 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR DEFGHIJKL 1
			MACR MNOPQRS 2
			//TNT1 A 0 A_PlaySound("BANNRBRK",CHAN_7)
			TNT1 A 0 A_StartSound("BANNRBRK",7,CHANF_NOPAUSE)
			MACR T 2 Bright Offset(0,37) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR U 3 Offset(0,41) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR V 2 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR W 3 Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR X 2 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR Y 3 Offset(0,36) A_SetPitch(pitch+(0.8 * GetCVAR("SteadyHand")))
			MACR Z 2 Bright
			MAC2 A 3
			MAC2 B 3 Bright
			MAC2 C 3
			MAC2 D 3 Bright
			MAC2 E 3
			MAC2 F 3 Bright A_StopSound(CHAN_7)
			Goto ReloadLoop
		Reload2:
			TNT1 A 0 A_JumpIfInventory("BrutalMaceAmmo", 1, 1)
			Goto Ready
			TNT1 A 0 A_JumpIfInventory("MaceCharge", 0, "Ready")
			//TNT1 A 0 A_PlaySound("DSBAREXP",4)
			TNT1 A 0 A_StartSound("DSBAREXP",4,CHANF_NOPAUSE)
			TNT1 A 0 A_Recoil(1 * GetCVAR("SteadyHand"))
			MACR A 1 Bright Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR B 1 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			MACR C 1 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR DEFGHIJKL 1
			MACR MNOPQRS 2
			//TNT1 A 0 A_PlaySound("BANNRBRK",CHAN_7)
			TNT1 A 0 A_StartSound("BANNRBRK",7,CHANF_NOPAUSE)
			MACR T 2 Bright Offset(0,37) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR U 2 Offset(0,41) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR V 2 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR W 2 Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR X 2 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR Y 2 Offset(0,36) A_SetPitch(pitch+(0.8 * GetCVAR("SteadyHand")))
			MACR Z 2 Bright
			MAC2 A 2
			MAC2 B 2 Bright
			MAC2 C 2
			MAC2 D 2 Bright
			MAC2 E 2
			MAC2 F 2 Bright A_StopSound(CHAN_7)
			Goto ReloadLoop
		Reload3:
			TNT1 A 0 A_JumpIfInventory("BrutalMaceAmmo", 1, 1)
			Goto Ready
			TNT1 A 0 A_JumpIfInventory("MaceCharge", 0, "Ready")
			//TNT1 A 0 A_PlaySound("DSBAREXP",4)
			TNT1 A 0 A_StartSound("DSBAREXP",4,CHANF_NOPAUSE)
			TNT1 A 0 A_Recoil(1 * GetCVAR("SteadyHand"))
			MACR A 1 Bright Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR B 1 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			MACR C 1 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR DEFGHIJKL 1
			MACR MNOPQRS 1
			//TNT1 A 0 A_PlaySound("BANNRBRK",CHAN_7)
			TNT1 A 0 A_StartSound("BANNRBRK",7,CHANF_NOPAUSE)
			MACR T 2 Bright Offset(0,37) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR U 2 Offset(0,41) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR V 2 Bright Offset(0,36) A_SetPitch(pitch+(0.6 * GetCVAR("SteadyHand")))
			MACR W 2 Offset(0,37) A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			MACR X 2 Bright Offset(0,41) A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			MACR Y 2 Offset(0,36) A_SetPitch(pitch+(0.8 * GetCVAR("SteadyHand")))
			MACR Z 2 Bright
			MAC2 A 2
			MAC2 B 2 Bright
			MAC2 C 2
			MAC2 D 2 Bright
			MAC2 E 2
			MAC2 F 2 Bright A_StopSound(CHAN_7)
			Goto ReloadLoop
		ReloadLoop:
			TNT1 A 0 A_GiveInventory("MaceCharge",1)
			TNT1 A 0 A_Takeinventory("BrutalMaceAmmo",1)
			TNT1 A 0 A_JumpIfInventory("MaceCharge", 0, "Ready")
			TNT1 A 0 A_JumpIfInventory("BrutalMaceAmmo", 1, "ReloadLoop")
			Goto Ready
		Kicking:
			MACE A 1 Offset(0,42)
			MACE A 1 Offset(0,52)
			MACE A 1 Offset(0,62)
			MACE A 1 Offset(0,72)
			MACE A 1 Offset(0,82)
			//TNT1 A 0 A_PlaySound("WHOP")
			TNT1 A 0 A_StartSound("WHOP",1,CHANF_NOPAUSE)
			CKCK ABCD 1 Offset(0,32)
			//TNT1 A 0 A_CustomPunch(random(20,40)+(CallACS("StrengthCalculator")/4),1,0,"BrutalKickPuff", 104)
			TNT1 A 0 A_FireCustomMissile("BootOfFury",0,0,0,0)
			TNT1 A 0 A_Recoil(-6)
			CKCK E 3
			TNT1 A 0 A_Recoil(3)
			CKCK DCB 1
			CKCK AA 1 A_WeaponReady(WRF_NOSECONDARY)
			TNT1 AAA 1 A_WeaponReady(WRF_NOSECONDARY)
			MACE A 1 Offset(0,82)
			MACE A 1 Offset(0,72)
			MACE A 1 Offset(0,62)
			MACE A 1 Offset(0,52)
			MACE A 1 Offset(0,42)
			MACE A 0 Offset(0,32)
			TNT1 A 0 A_JumpIfInventory("Action1",1,"Kicking")
			Goto Ready
	}
}