

//==============================================================================
//============================ Corvus' Phoenix Rod =============================
//==============================================================================


ACTOR BrutalPhoenixRod : PhoenixRod
{
	+AMMO_OPTIONAL
	+ALT_AMMO_OPTIONAL
	-WEAPON.NOAUTOFIRE
	Weapon.SelectionOrder 9
	Inventory.RestrictedTo "BrutalCorvus"
	Inventory.ForbiddenTo "Corvette"
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 1
	Weapon.AmmoGive1 0
	Weapon.AmmoType1 "PhoenixRodCharge"
	Weapon.AmmoType2 "PhoenixRodCharge"
	Weapon.SisterWeapon "None"
	ConversationID 192
	Inventory.PickupMessage "Picked up the Phoenix Rod, purify them with fire, that they may be reborn!"
	Weapon.SlotNumber 6
	Speed 4
  
	States
	{
		Spawn:
			TNT1 A 0 A_SpawnItemEx("YellowFlareSmall",0,0,40)
			WPHX AA 1 Bright A_SetAngle(angle+speed)
			Goto Spawn
		Ready:
			TNT1 A 0 A_Light(0)
			TNT1 A 0 A_SetCrosshair (12)
			TNT1 A 0 A_StopSound(50)
			PHNX A 1 
			{
				If (CountInv("Action1") == 1)
				{
					return state("Kicking");
				}				
				Else
				{
					A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD);
					
					If (CallACS("MagicReload")== 1)
					{
						If (A_JumpIfInventory("PhoenixRodCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalPhoenixRodAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							return state("Reload");
						}
					}
					If (CallACS("MagicReload")== 2)
					{
						If (A_JumpIfInventory("PhoenixRodCharge",0,1))
						{
							return state("");
						}
						If (CountInv("BrutalPhoenixRodAmmo") == 0)
						{
							return state("");
						}
						Else
						{
							If (CountInv("PHNXAmmoToken") > (20 - (CountInv("Level"))))
							{
								A_GiveInventory("PhoenixRodCharge",1);
								A_Takeinventory("BrutalPhoenixRodAmmo",1);
								A_TakeInventory("PHNXAmmoToken",20);								
							}
							Else
							{
								A_GiveInventory("PHNXAmmoToken");
							}
						}
						return state("");
					}
					Else
					{
						return state("");
					}
				}
			}
			Loop
		Deselect:
			TNT1 A 0 A_StopSound(50)
			PHNX A 0 A_Lower
			PHNX A 1 A_Lower
			Loop
		Select:
			PHNX A 0 A_Raise
			PHNX A 1 A_Raise
			Loop
		Fire:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,"PoweredFire")
			PHNX A 0 A_JumpifNoAmmo("Reload")
			//TNT1 A 0 A_PlayWeaponSound("PHNXFIR3Q")
			TNT1 A 0 A_StartSound("PHNXFIR3Q",1,CHANF_NOPAUSE)
			PHNX B 3 Bright
			{
				A_Recoil(3 * GetCVAR("SteadyHand"));
				A_SetPitch(pitch-(0.8 * GetCVAR("SteadyHand")));
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyBrutalPhoenixMissile",0,true,0,-3,0,-1);
				}
				Else
				{
					A_FireProjectile("BrutalPhoenixMissile",0,true,0,-3,0,-1);
				}
			}
			PHNX C 3 Bright A_SetPitch(pitch-(0.3 * GetCVAR("SteadyHand")))
			PHNX C 3 Bright A_SetPitch(pitch+(0.4 * GetCVAR("SteadyHand")))
			PHNX D 3 Bright A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			PHNX B 3 Bright A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
			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",7,"SuperAttack")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,7)
			Goto Ready
		SuperAttack:
			TNT1 A 0 A_JumpIfInventory("PhoenixRodCharge",2,"AltHold")
			Goto Reload
		AltHold:
			TNT1 A 0 A_Light(-3)
			TNT1 A 0 A_StartSound("GNTPOW",1,CHANF_NOPAUSE)
			PHNC ABCDEFGHIJ 3
			{
				If (GetPlayerInput (INPUT_BUTTONS) & BT_ALTATTACK)
				{
					return state("");
				}
				Else
				{
					return state("Level1");
				}
			}
		Charge2:
			TNT1 A 0 A_Light(-6)
			TNT1 A 0 A_StartSound("GNTHIT",1,CHANF_NOPAUSE)
			PHNS ABCDEFGHIJ 2 Bright
			{
				A_QuakeEx (1,1,1,5,0,64,"world/quake",QF_SCALEDOWN,0,0,0,64);
				
				If (GetPlayerInput (INPUT_BUTTONS) & BT_ALTATTACK)
				{
					return state("");
				}
				Else
				{
					return state("Level2");
				}
			}
		Charge3:
			TNT1 A 0 A_StartSound("FLAMER",50,CHANF_NOPAUSE|CHANF_LOOPING)
			TNT1 A 0 A_Light(-9)
			PHNT ABCDEFGHIJ 1 Bright
			{
				A_QuakeEx (2,2,2,5,0,64,"world/quake",QF_SCALEDOWN,0,0,0,64);
				
				If (GetPlayerInput (INPUT_BUTTONS) & BT_ALTATTACK)
				{
					return state("");
				}
				Else
				{
					return state("Level3");
				}
			}
			Loop
		Level1:
			TNT1 A 0 A_Recoil(3 * GetCVAR("SteadyHand"))
			PHNX B 2 Bright
			{
				A_StartSound("PHNXFIR2",1,CHANF_NOPAUSE);
				A_SetPitch(pitch-(0.9 * GetCVAR("SteadyHand")));
				A_TakeInventory("PhoenixRodCharge",1);
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyBrutalPhoenixMissile1",0,true,0,-3,0,-1);
				}
				Else
				{
					A_FireProjectile("BrutalPhoenixMissile1",0,true,0,-3,0,-1);
				}
			}
			goto ChargeEnd
		Level2:
			TNT1 A 0 A_Recoil(3 * GetCVAR("SteadyHand"))
			PHNX B 2 Bright A_StartSound("SPIRTS1",1,CHANF_NOPAUSE)
			TNT1 A 0 A_FireProjectile("BrutalPhoenixMissile2",0,true,0,-3)
			TNT1 A 0 A_TakeInventory("PhoenixRodCharge",2)
			goto ChargeEnd
		Level3:
			TNT1 A 0 A_Recoil(5 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_StopSound(50)
			PHNX G 2 Bright
			{
				A_StartSound("SPIRT7",1,CHANF_NOPAUSE);
				A_SetPitch(pitch-(1 * GetCVAR("SteadyHand")));
				A_TakeInventory("PhoenixRodCharge",4);
				
				If (GetCVAR("NoScalingPlz") == 1)
				{
					A_FireProjectile("WimpyBrutalPhoenixMissile3",0,true,0,-3);
				}
				Else
				{
					A_FireProjectile("BrutalPhoenixMissile3",0,true,0,-3);
				}
			}
			goto ChargeEnd2
		ChargeEnd:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_WeaponOffset(0,37)
			TNT1 A 0 A_Recoil(3 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_Light(0)
			TNT1 A 0 A_SetPitch(pitch-(0.8 * GetCVAR("SteadyHand")))
			PHNX C 2 Bright A_SetPitch(pitch-(0.3 * GetCVAR("SteadyHand")))
			PHNX C 2 Bright A_SetPitch(pitch+(0.4 * GetCVAR("SteadyHand")))
			PHNX D 2 Bright A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			PHNX B 2 Bright A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
		   Goto Ready
		 ChargeEnd2:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_WeaponOffset(0,37)
			TNT1 A 0 A_Recoil(3 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_Light(0)
			TNT1 A 0 A_SetPitch(pitch-(0.8 * GetCVAR("SteadyHand")))
			PHNX H 3 Bright A_SetPitch(pitch-(0.3 * GetCVAR("SteadyHand")))
			PHNX H 3 Bright A_SetPitch(pitch+(0.4 * GetCVAR("SteadyHand")))
			PHNX I 3 Bright A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			PHNX G 3 Bright A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
		   Goto Ready
		PoweredFire:
			TNT1 A 0 A_JumpIfNoAmmo("Reload")
			TNT1 A 0 A_StartSound("FLAMER",50,CHANF_NOPAUSE|CHANF_LOOPING)
		PoweredFireHold:
			TNT1 A 0 A_Recoil(1 * GetCVAR("SteadyHand"))
			PHNX C 1 Bright A_QuakeEx (1,1,1,9,0,64,"world/quake",QF_SCALEDOWN,0,0,0,64)
			TNT1 A 0 A_FireCustomMissile("BrutalPhoenixPoweredMissile",0,True,0,-3)
			TNT1 A 0 A_JumpIfNoAmmo("FlameStop")
			TNT1 A 0 A_Recoil(-1 * GetCVAR("SteadyHand"))
			TNT1 A 0 A_JumpIfInventory("PowerHDLevel2",1,1)
			Goto FlameStop
			TNT1 A 0 A_JumpIf((GetPlayerInput (INPUT_BUTTONS) & BT_ATTACK),1)
			Goto FlameStop
			PHNX CCFFFCCCFFFCCCFFF 1 Bright 
			{
				If (GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK)
				{
					A_QuakeEx (1,1,1,9,0,64,"world/quake",QF_SCALEDOWN,0,0,0,64);
					//A_FireCustomMissile("BrutalPhoenixPoweredMissile",0,false,0,-3);
					A_FireCustomMissile("BrutalPhoenixPoweredMissile",random(-25,-15),false,0,-3);
					A_FireCustomMissile("BrutalPhoenixPoweredMissile",random(-15,0),false,0,-3);
					A_FireCustomMissile("BrutalPhoenixPoweredMissile",random(0,15),false,0,-3);
					A_FireCustomMissile("BrutalPhoenixPoweredMissile",random(15,25),false,0,-3);
					A_JumpIfNoAmmo("FlameStop");
					A_JumpIfInventory("PowerHDLevel2",1,1);
					return state (0);
				}
				Else
				{
					return state("FlameStop");
				}
			}
			TNT1 A 0 A_JumpIf((GetPlayerInput (INPUT_BUTTONS) & BT_ATTACK),"PoweredFireHold")
		FlameStop:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_PlaySound("FLAMSTOP",CHAN_7)
			TNT1 A 0 A_StartSound("FLAMSTOP",7,CHANF_NOPAUSE)
			PHNX EDB 3 Bright
			TNT1 A 0 A_JumpIfNoAmmo("Reload")
			Goto Ready
		PoweredAltFireCheck:
			TNT1 A 0 A_JumpIf(CallACS("ExpressSkills")==1, "PoweredAltFire")
			TNT1 A 0 A_JumpIfInventory("Level",15,"PoweredAltFire")
			TNT1 A 0 ACS_NamedExecuteAlways("NeedLevelAttack",0,15)
			Goto Ready
		PoweredAltFire:
			TNT1 A 0 A_StopSound(50)
			TNT1 A 0 A_JumpIfInventory("PhoenixRodCharge",15,"CheckClear")
			Goto AmmoCheck2
		CheckClear:
			TNT1 A 0 A_StartSound("PLRBURN",1,CHANF_NOPAUSE)
			PHNX B 3 Bright
			{
				If (CountInv("TokenOfCost") == 1)
				{
					A_TakeInventory("PhoenixRodCharge",15);
				}
				If (CountInv("TokenOfCost") == 0)
				{
					A_TakeInventory("PhoenixRodCharge",8);
				}
				
				A_Recoil(3 * GetCVAR("SteadyHand"));
				A_FireCustomMissile("ScorchedEarth",23,False,-23,-3);
				A_FireCustomMissile("ScorchedEarth",15,False,-15,-3);
				A_FireCustomMissile("ScorchedEarth",7,False,-7,-3);
				A_FireCustomMissile("ScorchedEarth",0,False,0,-3);
				A_FireCustomMissile("ScorchedEarth",-7,False,7,-3);
				A_FireCustomMissile("ScorchedEarth",-15,False,15,-3);
				A_FireCustomMissile("ScorchedEarth",-23,False,23,-3);
				A_SetPitch(pitch-(0.8 * GetCVAR("SteadyHand")));
			}
			PHNX C 3 Bright A_SetPitch(pitch-(0.3 * GetCVAR("SteadyHand")))
			PHNX C 3 Bright A_SetPitch(pitch+(0.4 * GetCVAR("SteadyHand")))
			PHNX D 3 Bright A_SetPitch(pitch+(0.3 * GetCVAR("SteadyHand")))
			PHNX B 3 Bright A_SetPitch(pitch+(0.2 * GetCVAR("SteadyHand")))
			Goto Ready
		AmmoCheck2:
			TNT1 A 0 A_JumpIfInventory("TokenOfCost",1,"Reload")
			TNT1 A 0 A_JumpIfInventory("PhoenixRodCharge",8,"CheckClear")
		Reload:
			TNT1 A 0 A_JumpIfInventory("PhoenixRodCharge", 0, "Ready")
			TNT1 A 0 A_JumpIfInventory("BrutalPhoenixRodAmmo",1,"ReadyChecked")
			TNT1 A 0 A_JumpIfInventory("PhoenixRodCharge", 1, "Ready")
			TNT1 A 0 A_SelectWeapon("BrutalMeleeStaff")
			Goto Ready
		ReadyChecked:
			PHNR ABCDEFGHIJK 1 A_WeaponReady
			TNT1 A 0 A_StartSound("TORCHBRN",50,CHANF_LOOPING)
		ReloadLoop:
			PHNR LMNM 2
			{
				A_WeaponReady (WRF_ALLOWZOOM);
				
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",frandom(5,-5),frandom(20,-20),frandom(3,-3),frandom(3,-3),frandom(3,-3),6,0,SXF_NOCHECKPOSITION);
				A_SpawnItemEx("RocketTrailParticleC",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("PhoenixRodCharge",0,"Ready"))
				{
					return state("ReloadFinish");
				}
				If (CountInv("BrutalPhoenixRodAmmo") == 0)
				{
					return state("ReloadFinish");
				}
				Else
				{
					If (CountInv("PHNXAmmoToken") > (2 - ((CountInv("Level")/5))))
					{
						A_GiveInventory("PhoenixRodCharge",1);
						A_Takeinventory("BrutalPhoenixRodAmmo",1);
						A_TakeInventory("PHNXAmmoToken",20);
						
						If (CountInv("Level") > 20)
						{
							If (A_JumpIfInventory("PhoenixRodCharge",0,"Ready"))
							{
								return state("ReloadFinish");
							}
							If (CountInv("BrutalPhoenixRodAmmo") == 0)
							{
								return state("ReloadFinish");
							}
							Else
							{
								A_GiveInventory("PhoenixRodCharge",1);
								A_Takeinventory("BrutalPhoenixRodAmmo",1);
							}
						}
						return state("");
					}
					Else
					{
						A_GiveInventory("PHNXAmmoToken");
						return state("");
					}
				}
			}
			Loop
		ReloadFinish:
			TNT1 A 0 A_StopSound(50)
			PHNR KJIHGFEDCBA 1
			Goto Ready
		Kicking:
			TNT1 A 0 A_StopSound(50)
			PHNX A 1 Offset(0,42)
			PHNX A 1 Offset(0,52)
			PHNX A 1 Offset(0,62)
			PHNX A 1 Offset(0,72)
			PHNX A 1 Offset(0,82)
			TNT1 A 0 A_StopSound(50)
			//TNT1 A 0 A_PlaySound("WHOP")
			TNT1 A 0 A_StartSound("WHOP",7,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)
			PHNX A 1 Offset(0,82)
			PHNX A 1 Offset(0,72)
			PHNX A 1 Offset(0,62)
			PHNX A 1 Offset(0,52)
			PHNX A 1 Offset(0,42)
			PHNX A 0 Offset(0,32)
			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)
			PHNR K 1 Offset(-15,40)
			PHNR K 1 Offset(-30,45)
			PHNR K 1 Offset(-45,50)
			PHNR J 1 Offset(-60,55)
			PHNR J 1 Offset(-75,60)
			PHNR J 1 Offset(-90,65)
			PHNR I 1 Offset(-105,70)
			PHNR I 1 Offset(-120,75)
			PHNR I 1 Offset(-135,80)
			PHNR H 1 Offset(-150,85)
			PHNR F 1 Offset(-135,80)
			PHNR D 1 Offset(-120,75)
			PHNR B 1 Offset(-105,70)
			PHNR A 1 Offset(-90,65)
			PHNX A 1 Offset(-75,60)
			PHNX A 1 Offset(-60,55)
			PHNX A 1 Offset(-45,50)
			PHNX A 1 Offset(-30,45)
			PHNX A 1 Offset(-15,40)
			PHNX A 1 Offset(-0,0)
			TNT1 A 0 A_ClearOverlays(6,6)
			goto Reload
		KickingOnly:
			//TNT1 A 0 A_PlaySound("WHOP")
			TNT1 A 0 A_StartSound("WHOP",7,CHANF_NOPAUSE)
			CKCK ABCD 2 Offset(100,-40)
			//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 4
			TNT1 A 0 A_Recoil(3)
			CKCK DCB 2
			CKCK A 2 A_WeaponReady(WRF_NOSECONDARY|WRF_NOPRIMARY|WRF_NOSWITCH)
			TNT1 A 0 A_JumpIfInventory("Action1",1,"KickingLoop")TNT1 A 0 Offset(0,0)
			TNT1 A 0 A_ClearOverlays(6,6)
			Goto Ready
	}
}