

//==============================================================================
//============================ Corvus' Golden Wand =============================
//==============================================================================


ACTOR BrutalGoldWand : HereticWeapon replaces Pistol
{
	Weapon.SelectionOrder 4
	Inventory.RestrictedTo "BrutalCorvus"
	Inventory.ForbiddenTo "Corvette"
	Weapon.AmmoGive1 0
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 5
	Weapon.AmmoType1 "GoldWandCharge"
	Weapon.AmmoType2 "GoldWandCharge"
	Weapon.SisterWeapon "None"
	Weapon.Kickback 1
	Weapon.YAdjust 5
	Inventory.PickupMessage "This is the starting weapon, did you leave yours at home?"
	Obituary "$OB_MPGOLDWAND"
	Tag "$TAG_GOLDWAND"
	Weapon.SlotNumber 2
	Speed 4
	
	+AMMO_OPTIONAL
	+ALT_AMMO_OPTIONAL
	+BLOODSPLATTER
	+NOEXTREMEDEATH
	
	//SoundChannel Note: Reload = 50
  
	States
	{
		Spawn:
			TNT1 A 0 A_SpawnItemEx("YellowFlareSmall",0,0,41)
			GWAN AA 1 Bright A_SetAngle(angle+speed)
			Goto Spawn
		Ready:		
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_Light(0)
			TNT1 A 0 A_SetCrosshair (8)
			GWND AAAABBBBCCCCDDDDEEEEFFFFGGGGFFFFEEEEDDDDCCCCBBBBAAAA 1
			{
				If (CountInv("Action1") == 1)
				{
					return state("Kicking");
				}				
				Else
				{
					A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD);
					
					If (CallACS("MagicReload")== 1)
					{
						If (A_JumpIfInventory("GoldWandCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalGoldWandAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							return state("Reload");
						}
					}
					If (CallACS("MagicReload")== 2)
					{
						If (A_JumpIfInventory("GoldWandCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalGoldWandAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							If (CountInv("GoldAmmoToken") > (20 - (CountInv("Level"))))
							{
								A_GiveInventory("GoldWandCharge",1);
								A_Takeinventory("BrutalGoldWandAmmo",1);
								A_TakeInventory("GoldAmmoToken",20);								
							}
							Else
							{
								A_GiveInventory("GoldAmmoToken");
							}
						}
						return state("");
					}
					Else
					{
						return state("");
					}
				}
			}
			Loop
		Deselect:
			TNT1 A 0 A_StopSound(50)
			GWND A 0 A_Lower
			TNT1 A 0 A_StopSound(50)
			GWND A 1 A_Lower
			Loop
		Select:
			GWND A 0 A_Raise
			GWND A 1 A_Raise
			Loop
		Fire:
			TNT1 A 0 A_StopSound(50)
			GWND A 0 A_JumpIfNoAmmo("Reload")
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredFire")
			GWND H 3 
			GWND I 3 Bright
			{
				A_StartSound("GWANDFIR",1,CHANF_NOPAUSE);
				A_FireBullets(0,0,1,0,"FakeSwitchPuff",FBF_NOFLASH);
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyGoldWandTracer",0,TRUE,0,0,0,-0.5);
				}
				Else
				{
					A_FireProjectile("GoldWandTracer",0,TRUE,0,0,0,-0.5);
				}
			}
			GWND H 3 Bright A_SetPitch(pitch-(0.25 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_JumpIfInventory("Action1",1,"KickShotCancel")
			GWND A 1 A_SetPitch(pitch+(0.25 * GetCVAR("SteadyHand")))
			GWND AAAAA 1 A_ReFire("Daka")
			GWND A 3
			goto Ready
		Daka:
			GWND A 0 A_JumpIfNoAmmo("Reload")
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredFire")
			GWND H 3 
			GWND I 3 Bright
			{
				A_StartSound("GWANDFIR",1,CHANF_NOPAUSE);
				A_FireBullets(0,0,1,0,"FakeSwitchPuff",FBF_NOFLASH);
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyGoldWandTracer",frandom(-0.8,0.8),TRUE,0,0,0,-0.5);
				}
				Else
				{
					A_FireProjectile("GoldWandTracer",frandom(-0.8,0.8),TRUE,0,0,0,-0.5);
				}
			}
			GWND H 3 Bright A_SetPitch(pitch-(0.5  * GetCVAR("SteadyHand")))
			TNT1 A 0 A_JumpIfInventory("Action1",1,"KickShotCancel")
			GWND A 3 A_SetPitch(pitch+(0.5  * GetCVAR("SteadyHand")))
			GWND AAA 1 A_ReFire("Daka")
			goto Ready
		AltFire:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredAltFireCheck")
			TNT1 A 0 A_JumpIf(CallACS("ExpressSkills")==1, "SuperAttack")
			TNT1 A 0 A_JumpIfInventory("Level",3,"SuperAttack")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,3)
			Goto Ready
		SuperAttack:
			GWND A 0 A_JumpIfNoAmmo("Reload")
			TNT1 A 0 A_StartSound("GWANDFI3",1,CHANF_NOPAUSE)
			GWND A 1 Bright Offset(0,42) 
			GWND K 1 Bright
			TNT1 A 0 A_FireCustomMissile("GoldWandBomb",0,TRUE,0,0,0,0)
			TNT1 A 0 A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(1 * GetCVAR("SteadyHand"))
			GWND K 7 Bright Offset(0,41) A_SetPitch(pitch-(0.2 * GetCVAR("SteadyHand")))
			GWND L 2 Bright Offset(0,41) A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			GWND M 2 Offset(0,38) A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
			GWND N 2 Offset(0,35) A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			GWND O 2
			GWND A 1 Offset(0,33) A_Refire("Waiting")
			Goto Ready
		Waiting:
			GWND ADGDA 1 A_WeaponReady(WRF_NOSECONDARY)
			Goto Ready
		PoweredFire:
			GWND H 2 
			TNT1 A 0 A_StartSound("GWANDFI3",1,CHANF_NOPAUSE)
			GWND I 2 Bright Offset(0,42)
			{
				A_SetPitch(pitch-(0.5  * GetCVAR("SteadyHand")));
				A_Recoil(1 * GetCVAR("SteadyHand"));
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyPowerGoldWandTracer",0,CountInv("TokenOfCost"),0,-4,0,-1.0);
					
					A_FireProjectile("WimpyPowerGoldWandTracer",6,CountInv("TokenOfCost"),0,-4,0,-0.8);
					A_FireProjectile("WimpyPowerGoldWandTracer",-6,FALSE,0,-4,0,-0.8);
					
					A_FireProjectile("WimpyPowerGoldWandTracerAlt",12,FALSE,0,-4,0,-0.6);
					A_FireProjectile("WimpyPowerGoldWandTracerAlt",-12,TRUE,0,-4,0,-0.6);
				}
				Else
				{
					A_FireProjectile("PowerGoldWandTracer",0,CountInv("TokenOfCost"),0,0,0,0);
					
					A_FireProjectile("PowerGoldWandTracer",6,CountInv("TokenOfCost"),0,-2,-2,0);
					A_FireProjectile("PowerGoldWandTracer",-6,FALSE,0,-2,2,0);
					
					A_FireProjectile("WimpyPowerGoldWandTracerAlt",12,FALSE,0,-4,0,0);
					A_FireProjectile("WimpyPowerGoldWandTracerAlt",-12,TRUE,0,-4,0,0);
				}
			}
			GWN2 I 1 Bright Offset(0,41) A_SetPitch(pitch-(0.2 * GetCVAR("SteadyHand")))
			GWND I 1 Bright Offset(0,41) A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			GWND H 2 Offset(0,38) A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
			GWND A 1 Offset(0,35) A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			GWND A 1 Offset(0,33)
			GWND C 2 
			Goto Ready
		PoweredAltFireCheck:
			TNT1 A 0 A_JumpIf(CallACS("ExpressSkills")==1, "PoweredAltFire")
			TNT1 A 0 A_JumpIfInventory("Level",11,"PoweredAltFire")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,11)
			Goto Ready
		PoweredAltFire:
			GWND A 0 A_JumpIfNoAmmo("Reload")
			GWND A 2 
			GWND H 1 A_Light(1)
			GWND H 1 A_Light(3)
			GWND H 1 A_Light(5)
			GWND H 1 A_Light(9)
			GWND K 1 Offset(0,42) 
			{
				A_Light(0);
				A_StartSound("GWANDFI2",1,CHANF_NOPAUSE);
				A_RailAttack(random(1,9)+(CountInv("Stat_Magicalstrength",AAPTR_PLAYER1)/2),0,TRUE,None,"Gold",RGF_SILENT | RGF_FULLBRIGHT | RGF_CENTERZ ,1,"BulletPuff",0,0,0,0,1,5,"FairyDustYellow",10);
				A_FireCustomMissile("GoldWandBombAlt",0,FALSE);
				A_FireCustomMissile("GoldWandBombAlt",0,FALSE);
				A_FireCustomMissile("GoldWandBombAlt",0,FALSE);
				A_SetPitch(pitch-(0.5 * GetCVAR("SteadyHand")));
				A_Recoil(1 * GetCVAR("SteadyHand"));
			}
			GWND K 7 Bright Offset(0,41) A_SetPitch(pitch-(0.2 * GetCVAR("SteadyHand")))
			GWND L 2 Bright Offset(0,41) A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			GWND M 2 Offset(0,38) A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
			GWND N 2 Offset(0,35) A_SetPitch(pitch+(0.1 * GetCVAR("SteadyHand")))
			GWND O 2
			GWND A 1 Offset(0,33)
			Goto Ready
		Reload:
			TNT1 A 0 A_JumpIfInventory("GoldWandCharge", 0, "Ready")
			TNT1 A 0 A_JumpIfInventory("BrutalGoldWandAmmo",1,"ReadyChecked")
			TNT1 A 0 A_JumpIfInventory("GoldWandCharge", 1, "Ready")
			TNT1 A 0 A_SelectWeapon("BrutalMeleeStaff")
			Goto Ready
		ReadyChecked:
			GWND PQRSV 1 A_Weaponready(WRF_NOBOB|WRF_ALLOWZOOM)
			TNT1 A 0 A_StartSound("Charging",50,CHANF_LOOPING)
		ReloadLoop:			
			GWND UUVV 1 Bright
			{
				A_WeaponReady (WRF_ALLOWZOOM);
				
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("GoldWandParticle2",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				
				If (CountInv("Action1") == 1)
				{
					return state("KickOverlay");
				}				
				If (A_JumpIfInventory("GoldWandCharge",0,"Ready"))
				{
					return state("ReloadFinish");
				}
				If (CountInv("BrutalGoldWandAmmo") == 0)
				{
					return state("ReloadFinish");
				}
				Else
				{
					If (CountInv("GoldAmmoToken") > (1 - ((CountInv("Level")/5))))
					{
						A_GiveInventory("GoldWandCharge",1);
						A_Takeinventory("BrutalGoldWandAmmo",1);
						A_TakeInventory("GoldAmmoToken",20);
						
						If (CountInv("Level") > 15)
						{
							If (A_JumpIfInventory("GoldWandCharge",0,"Ready"))
							{
								return state("ReloadFinish");
							}
							If (CountInv("BrutalGoldWandAmmo") == 0)
							{
								return state("ReloadFinish");
							}
							Else
							{
								A_GiveInventory("GoldWandCharge",1);
								A_Takeinventory("BrutalGoldWandAmmo",1);
							}
						}
						return state("");
					}
					Else
					{
						A_GiveInventory("GoldAmmoToken");
						return state("");
					}
				}
				
			}
			Loop
		ReloadFinish:
			TNT1 A 0 A_StopSound(50)
			GWND SRQP 1 
			Goto Ready
		Kicking:
			TNT1 A 0 A_StopSound(50)
			GWND A 1 Offset(0,41)
			GWND A 1 Offset(0,45)
			GWND A 1 Offset(0,55)
			GWND A 1 Offset(0,65)
			GWND A 1 Offset(0,75)
			TNT1 A 0 A_StartSound("WHOP",1,CHANF_NOPAUSE)
			CKCK B 1 Offset(35,20)
			CKCK B 1 Offset(30,20)
			CKCK C 1 Offset(20,10)
			TNT1 A 0 A_FireCustomMissile("BootOfFury",0,0,0,0)
			TNT1 A 0 A_Recoil(-6)
			CKCK E 1 Offset(-30,40)
			CKCK E 1 Offset(-28,38)
			CKCK E 1 Offset(-32,40)
			CKCK E 1 Offset(-30,38)
			TNT1 A 0 A_Recoil(3)
			CKCK C 1 Offset(20,10)
			CKCK B 1 Offset(30,20)
			CKCK B 1 Offset(35,20)
			CKCK AA 1 A_JumpIf((GetPlayerInput (INPUT_BUTTONS) & BT_ATTACK),"KickCancel")
			TNT1 AAA 1 A_JumpIf((GetPlayerInput (INPUT_BUTTONS) & BT_ATTACK),"KickCancel")
			GWND A 1 Offset(-1,76)
			GWND A 1 Offset(0,72)
			GWND A 1 Offset(0,68)
			GWND A 1 Offset(0,58)
			GWND A 1 Offset(0,52)
			TNT1 A 0 A_WeaponReady
			TNT1 A 0 A_JumpIfInventory("Action1",1,"Kicking")
			Goto Ready
		KickCancel:
			GWND A 1 Offset(-20,55)
			GWND A 0 Offset(-3,46)
			TNT1 A 0 A_WeaponReady
			TNT1 A 0 A_JumpIfInventory("Action1",1,"Kicking")
			Goto Ready
		KickShotCancel:
			GWND A 1 Offset(0,41)
			GWND A 1 Offset(0,45)
			GWND A 1 Offset(0,55)
			GWND A 1 Offset(0,65)
			GWND A 1 Offset(0,75)	
			TNT1 A 0 A_StartSound("WHOP",1,CHANF_NOPAUSE)
			CKCK B 1 Offset(35,20)
			CKCK B 1 Offset(30,20)
			CKCK C 1 Offset(20,10)
			TNT1 A 0 A_FireCustomMissile("BootOfFury",0,0,0,0)
			TNT1 A 0 A_Recoil(-6)
			CKCK E 1 Offset(-30,40)
			CKCK E 1 Offset(-28,38)
			CKCK E 1 Offset(-32,40)
			CKCK E 1 Offset(-30,38)
			TNT1 A 0 A_Recoil(3)
			CKCK C 1 Offset(20,10)
			CKCK B 1 Offset(30,20)
			CKCK B 1 Offset(35,20)
			CKCK AA 1
			TNT1 AAA 1
			GWND A 1 Offset(-1,76)
			GWND A 1 Offset(0,72)
			GWND A 1 Offset(0,68)
			GWND A 1 Offset(0,58)
			GWND A 1 Offset(0,52)
			TNT1 A 0 A_WeaponReady
			TNT1 A 0 A_JumpIfInventory("Action1",1,"Kicking")
			Goto Ready
		KickOverlay:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_Overlay(6,"KickingOnly",True)			
			GWNR S 1 Offset(-10,40)
			GWNR S 1 Offset(-20,45)
			GWNR R 1 Offset(-60,65)
			GWNR R 1 Offset(-80,75)
			GWNR Q 1 Offset(-90,80)
			GWNR P 1 Offset(-100,85)
			GWND A 1 Offset(-90,80)
			GWND A 1 Offset(-80,75)
			GWND A 1 Offset(-60,65)
			GWND A 1 Offset(-50,60)
			GWND A 1 Offset(-40,55)
			GWND A 1 Offset(-30,50)
			GWND A 1 Offset(-20,45)
			GWND A 1 Offset(-10,40)
			GWND A 1 Offset(-0,0)
			TNT1 A 0 A_ClearOverlays(6,6)
			goto Reload
		KickingOnly:
			TNT1 A 0 A_StartSound("WHOP",1,CHANF_NOPAUSE)
			CKCK B 3 Offset(70,-20)
			CKCK C 2 Offset(60,-20)
			TNT1 A 0 A_FireCustomMissile("BootOfFury",0,0,0,0)
			TNT1 A 0 A_Recoil(-6)
			CKCK E 1 Offset(70,-40)
			CKCK E 1 Offset(55,-35)
			CKCK E 1 Offset(40,-30)
			CKCK E 1 Offset(25,-25)
			CKCK E 1 Offset(10,-20)
			TNT1 A 0 A_Recoil(3)
			CKCK C 2 Offset(60,-40)
			CKCK B 3 Offset(70,-20)
			TNT1 A 0 Offset(1,1)
			CKCK A 0 A_WeaponReady(WRF_NOSECONDARY|WRF_NOPRIMARY|WRF_NOSWITCH)
			TNT1 A 0 A_JumpIfInventory("Action1",1,"Kicking")TNT1 A 0 Offset(0,0)
			TNT1 A 0 A_ClearOverlays(6,6)
			Goto Ready
	}
}