actor PharaohShotWep : MegaBuster 10062
{
Weapon.AmmoUse 1
Weapon.AmmoGive 112
Weapon.SlotNumber 5
Obituary "%o was sacrificed by %k's Pharaoh Shot."
Inventory.Pickupmessage "Power up! Pharaoh Shot!"
weapon.ammotype "PharaohShotAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
inventory.icon "PHASSI"
Scale 2.0
States
{
Spawn:
WEA2 L 1
loop
Ready:
PHAN A 0 ACS_ExecuteAlways(998,0,31)
PHAN A 1 A_WeaponReady
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
PHAN A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
PHAN A 1 A_Raise
Loop
Fire:
PHAN A 0 A_JumpIfNoAmmo("NoAmmo")
PHAN A 0
Goto Hold
Hold:
PHAN A 0 A_JumpIfNoAmmo("NoAmmo")
PHAN A 0 A_JumpIfInventory("PharaohCharge",1,"Hold2")
PHAN A 2 A_GiveInventory("PharaohCharge",1)
BUST G 0 ACS_ExecuteAlways(994,0)
PHAN A 0 A_Refire
Goto Throw1
Hold2:
PHAN A 0 A_JumpIfInventory("PharaohCharge",2,"BotCheck")
PHAN A 0 A_GiveInventory("PharaohCharge",1)
PHAN BCDE 2 
PHAN E 0 A_SpawnItemEx("PharaohFX")
PHAN A 0 A_Refire
Goto Throw1
BotCheck:
PHAN A 0 ACS_ExecuteAlways(974,0)
Goto Hold3
Hold3:
TNT1 A 1 A_GiveInventory("PharaohCharge",1)
TNT1 A 0 A_Refire
TNT1 A 0 A_JumpIfInventory("PharaohCharge",78,"Throw3")
TNT1 A 0 A_JumpIfInventory("PharaohCharge",33,"Throw2")
Goto Throw1
Throw1:
TNT1 A 0 A_TakeInventory("PharaohCharge",100)
PHAN A 0 A_PlaySoundEx("weapon/pharaoh1","Weapon")
PHAN A 0 A_FireCustomMissile("PharaohShot1",0,1,8,0)
PHAN FGHIJK 2
TNT1 A 4 A_ClearRefire
PHAN LMA 2
Goto Ready+1
Throw2:
TNT1 A 0 A_TakeInventory("PharaohCharge",100)
PHAN A 0 A_PlaySoundEx("weapon/pharaoh1","Weapon")
TNT1 A 0 A_TakeInventory("PharaohShotAmmo",1)
PHAN A 0 A_FireCustomMissile("PharaohShot2",0,1,8,0)
PHAN FGHIJK 2
TNT1 A 4 A_ClearRefire
PHAN LMA 2
Goto Ready+1
Throw3:
TNT1 A 0 A_TakeInventory("PharaohCharge",100)
TNT1 A 0 A_TakeInventory("PharaohShotAmmo",3)
PHAN A 0 A_PlaySoundEx("weapon/pharaoh2","Weapon")
PHAN A 0 A_FireCustomMissile("PharaohShot3",0,1,8,0)
PHAN FGHIJK 2
TNT1 A 4 A_ClearRefire
PHAN LMA 2
Goto Ready+1
NoAmmo:
PHAN A 1 ACS_Execute(979,0)
PHAN A 0 A_Refire
Goto Ready+1
}
}

actor PharaohShotAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor PharaohShot1
{
PROJECTILE
Radius 10
+DONTBLAST
Height 10
scale 2.5
damage (12)
damagetype "WeakPharoah"
speed 35
States
{
Spawn:
PHAS A 4
loop
Death:
PHAS A 0
stop
}
}

actor PharaohShot2
{
PROJECTILE
Radius 10
+DONTBLAST
Height 10
scale 2.5
damage (40)
damagetype "WeakPharoah"
speed 35
States
{
Spawn:
PHAS H 4
loop
Death:
PHAS H 0
stop
}
}

actor PharaohShot3
{
PROJECTILE
Radius 10
+DONTBLAST
Height 10
scale 2.5
//damage (55)
damagetype "Pharoah"
speed 35
States
{
Spawn:
PHAS JK 4
loop
Death:
TNT1 A 2 A_Explode(65,128,0)
stop
}
}


actor PharaohFX
{
+NOINTERACTION
-SOLID
+MISSILE
radius 1
height 1
+NOGRAVITY
renderstyle none
States
{
Spawn:
PLAY A 0
PLAY A 0 A_JumpIfInTargetInventory("PharaohCharge",78,"Give2")
PLAY A 0 A_JumpIfInTargetInventory("PharaohCharge",1,"Give")
stop
Give:
PLAY A 1 A_GiveToTarget("PharaohFXGive",1)
Goto Spawn
Give2:
PLAY AAA 1 A_GiveToTarget("PharaohFXGive2",1)
PLAY A 0 A_JumpIfInTargetInventory("PharaohCharge",78,"Give3")
stop
Give3:
PLAY AAA 1 A_GiveToTarget("PharaohFXGive3",1)
PLAY A 0 A_JumpIfInTargetInventory("PharaohCharge",78,"Give2")
stop
}
}

actor PharaohFXGive : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+AUTOACTIVATE
states
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 0 A_GiveInventory("PharaohCharge",0)
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 69, "FX8")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 60, "FX7")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 51, "FX6")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 43, "FX5")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 33, "FX4")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 24, "FX3")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 15, "FX2")
TNT1 A 0 A_JumpIfInventory("PharaohCharge", 6, "FX1")
stop
FX1:
TNT1 A 0 //A_Print("FX1")
TNT1 A 0 A_SpawnItemEx("PharaohFX1",0,0,80)
stop
FX2:
TNT1 A 0 A_SpawnItemEx("PharaohFX2",0,0,80)
stop
FX3:
TNT1 A 0 //A_Print("FX3")
TNT1 A 0 A_SpawnItemEx("PharaohFX3",0,0,80)
stop
FX4:
TNT1 A 0 A_SpawnItemEx("PharaohFX4",0,0,80)
stop
FX5:
TNT1 A 0 A_SpawnItemEx("PharaohFX5",0,0,80)
stop
FX6:
TNT1 A 0// A_Print("FX6")
TNT1 A 0 A_SpawnItemEx("PharaohFX6",0,0,80)
stop
FX7:
TNT1 A 0 A_SpawnItemEx("PharaohFX7",0,0,80)
stop
FX8:
TNT1 A 0// A_Print("FX8")
TNT1 A 0 A_SpawnItemEx("PharaohFX8",0,0,80)
stop
}
}

actor PharaohFXGive2 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+AUTOACTIVATE
states
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 0 A_SpawnItemEx("PharaohFX9",0,0,80)
stop
}
}

actor PharaohFXGive3 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+AUTOACTIVATE
states
{
Spawn:
TNT1 A 1
loop
Use:
TNT1 A 0 A_SpawnItemEx("PharaohFX10",0,0,80)
stop
}
}

actor PharaohFX1
{
+CLIENTSIDEONLY
-SOLID
+NOGRAVITY
Scale 2.5
States
{
Spawn:
PHAS B 2
stop
}
}

actor PharaohFX2 : PharaohFX1
{
States
{
Spawn:
PHAS C 2
stop
}
}

actor PharaohFX3 : PharaohFX1
{
States
{
Spawn:
PHAS D 2
stop
}
}

actor PharaohFX4 : PharaohFX1
{
States
{
Spawn:
PHAS E 2
stop
}
}

actor PharaohFX5 : PharaohFX1
{
States
{
Spawn:
PHAS F 2
stop
}
}

actor PharaohFX6 : PharaohFX1
{
States
{
Spawn:
PHAS G 2
stop
}
}

actor PharaohFX7 : PharaohFX1
{
States
{
Spawn:
PHAS H 2
stop
}
}

actor PharaohFX8 : PharaohFX1
{
States
{
Spawn:
PHAS I 2
stop
}
}

actor PharaohFX9 : PharaohFX1
{
States
{
Spawn:
PHAS J 2
stop
}
}

actor PharaohFX10 : PharaohFX1
{
-CLIENTSIDEONLY
damagetype "PharaohHold"
States
{
Spawn:
PHAS K 0
PHAS K 2 A_Explode(5,64,0)
stop
}
}

actor PharaohCharge : Inventory
{
inventory.amount 1
inventory.maxamount 78
}