actor PharaohShotBoss : BaseMM8BDMWep_CBM 
{
tag "$TAGC_4D"
dropitem "PharaohShotWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Obituary "$OB_PHARAOHSHOT"
Inventory.Pickupmessage "Power up! Pharaoh Shot!"
weapon.ammotype "ManInGauseAmmo"
States
{
Spawn:
C_04 D 1
loop
Ready:
PHAA A 0 ACS_ExecuteAlways(998,0,DYE_PHARAOHMAN)
goto Ready1
Ready1:
PHAA A 1 A_WeaponReady
wait

Deselect:
PHAA AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
PHAA A 1 A_Lower
Loop
Select:
PHAA AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
PHAA A 1 A_Raise
Loop

Fire:
//PHAA A 0 A_TakeInventory("ManInGauseAmmo",999)
PHAA B 1 A_JumpIfInventory("PowerRage_ST",1,2)
PHAA B 0 A_Refire(1)
Goto Throw1
PHAA B 1
PHAA B 0 A_Refire(1)
Goto Throw1
PHAA B 1 Offset(16,2)A_JumpIfInventory("PowerRage_ST",1,2)
PHAA B 0 A_Refire(1)
Goto Throw1
PHAA B 1 Offset(16,2)
PHAA B 0 A_Refire(1)
Goto Throw1
PHAA C 1 Offset(-27,45)A_JumpIfInventory("PowerRage_ST",1,2)
PHAA C 0 A_Refire(1)
Goto Throw1
PHAA C 1 Offset(-27,45)
PHAA C 0 A_Refire(1)
Goto Throw1
PHAA C 1 Offset(-1,33)A_JumpIfInventory("PowerRage_ST",1,2)
PHAA C 0 A_Refire(1)
Goto Throw1
PHAA C 1 Offset(-1,33)A_SpawnItemEx("PharaohM_ChargeWarpFX",0,0,90,0,0,0,0,33)
PHAA C 0 A_Refire("FireH1")
Goto Throw1

FireH1:
PHAA C 0 A_JumpIfInventory("ManInGauseAmmo",78,"FireH2")
PHAA C 1 A_GiveInventory("PharaohM_AmmoRage_P")
PHAA C 0 A_Refire("FireH1")
PHAA C 0 A_JumpIfInventory("ManInGauseAmmo",78,"Throw3")
PHAA C 0 A_JumpIfInventory("ManInGauseAmmo",33,"Throw2")
Goto Throw1
FireH2:
PHAA C 0 A_GiveInventory("ManInGauseAmmo",1)
PHAA C 0 A_JumpIfInventory("IsBot",1,"BotFireH3")
FireH3:
PHAA C 1 A_WeaponReady(6)
PHAA C 0 A_Refire("FireH3")
Goto Throw3
BotFireH3:
PHAA C 1 A_Jump(16,"Throw3","ThrowW")
PHAA C 0 A_Refire("BotFireH3")
Goto Throw3

Throw1:
PHAA D 0 A_PlaySoundEx("weapon/Phar_Fire1","Weapon")//pharaoh1
PHAA D 0 A_GiveInventory("PharaohmanMain1_CI",1)

PHAA D 1 Offset(-50,72)
PHAA D 1 Offset(-111,112)
PHAA E 1 Offset(8,22)
PHAA E 1 Offset(-20,56)
TNT1 A 2 Offset(-51,95)A_JumpIfInventory("PowerRage_ST",1,3)
PHAA A 1 Offset(-30,69)A_ClearRefire
PHAA A 1 Offset(-13,48)
Goto Ready1
PHAA A 1 Offset(-25,58)A_ClearRefire
Goto Ready1

Throw2:
PHAA D 0 A_PlaySoundEx("weapon/Phar_Fire2","Weapon")//pharaoh1
PHAA D 0 A_GiveInventory("PharaohmanMain2_CI",1)

PHAA D 1 Offset(-1,32)
PHAA D 1 Offset(-70,72)
PHAA D 1 Offset(-121,112)
PHAA E 1 Offset(1,32)
PHAA E 1 Offset(-21,56)
PHAA E 1 Offset(-33,84)
TNT1 A 6 A_JumpIfInventory("PowerRage_ST",1,3)
PHAA A 2 Offset(-10,69)A_ClearRefire
PHAA A 2 Offset(-5,48)
Goto Ready1
TNT1 A 2 A_ClearRefire
PHAA A 1 Offset(-25,58)
Goto Ready1
Throw3:
PHAA D 0 A_PlaySoundEx("weapon/Phar_Fire3","Body")//pharaoh2 Weapon
PHAA D 0 A_GiveInventory("PharaohmanMain3_CI",1)

PHAA D 2 Offset(-1,32)
PHAA D 2 Offset(-70,72)
PHAA D 2 Offset(-121,112)
PHAA E 2 Offset(1,32)
PHAA E 2 Offset(-21,56)
PHAA E 2 Offset(-33,84)
TNT1 A 4 A_ClearRefire
PHAA A 2 Offset(-10,69)
PHAA A 2 Offset(-5,48)
PHAA A 2 A_WeaponReady(14)
Goto Ready1
ThrowW:
//PHAA C 0 A_PlaySoundEx("weapon/pharaoh1","Body")
PHAA C 0 A_PlaySoundEx("weapon/pharaoh2","Weapon")
PHAA C 0 A_GiveInventory("PharaohShotWaveBSpreadCheck",1)

PHAA C 2 Offset(-1,32)
PHAA C 2 Offset(-27,45)
PHAA B 2 Offset(16,2)
PHAA B 2 A_WeaponReady(14)

PHAA A 8 A_ClearRefire
PHAA A 6
Goto Ready1


AltFire:
TNT1 A 0 A_JumpIfInventory("ManInGauseAmmo",78,"ThrowW")
PHAA A 2 A_GiveInventory("PharaohHoverFlag",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,3)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 SetPlayerProperty(0,1,0)
PHAA B 4 Offset(-41,49)
PHAA D 4 Offset(-187,227)
TNT1 A 0 ThrustThingZ(0,1,0,1)
TNT1 A 0 A_ReFire(1)
HoverHold:
TNT1 A 0 A_JumpIfInventory("PharaohHover",28,"HoverFinish")
TNT1 A 0 A_PlaySoundEx("classes/float","Weapon")
TNT1 A 5 A_GiveInventory("PharaohM_Hover_P")
TNT1 A 0 A_ReFire(1)
Goto HoverFinish
TNT1 A 0 A_JumpIfInventory("PharaohHover",28,"HoverFinish")
TNT1 A 0 A_PlaySoundEx("classes/float","Body")
TNT1 A 5 A_GiveInventory("PharaohM_Hover_P")
TNT1 A 0 A_ReFire("HoverHold")
Goto HoverFinish
HoverFinish:
PHAA D 2 Offset(-187,227)//A_Stop
TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 0 A_TakeInventory("PharaohHoverFlag",99)
TNT1 A 0 A_TakeInventory("PharaohHover",99)

PHAA B 4 Offset(-41,49)
PHAA A 4 A_WeaponReady(14)

TNT1 A 0 A_ReFire("AltFireEnd")
Goto Ready1
AltFireEnd:
PHAA A 1 A_RailWait
PHAA A 0 A_ReFire("AltFireEnd")
Goto Ready1
}
}

actor ManInGauseAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 78//38
+INVENTORY.IGNORESKILL 
}

actor PharaohHover : Inventory
{
inventory.amount 1
inventory.maxamount 28
}

actor PharaohHoverFlag : OnceC {}

actor PharaohM_AmmoRage_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("ManInGauseAmmo",2)
stop
PickupR:
TNT1 A 0 A_GiveInventory("ManInGauseAmmo",4)
stop
}
}

actor PharaohM_Hover_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("PharaohAfterImage",0,0,0,0,0,0,0,1)
TNT1 A 0 A_FireCustomMissile("PharaohAura",0,0,0,0)
TNT1 A 0 A_GiveInventory("PharaohHover",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_Recoil(-6.25)
stop
}
}


actor PharaohAfterImage : BasicClientSide
{
renderstyle Translucent
alpha 0.75
States
{
Spawn:
PHAR JK 5
PHAR LLLLL 1 A_FadeOut(0.12)
stop
}
}

actor PharaohAura : BasicExplosion
{
damagetype "PharaohM_Aura"
Obituary "$OB_PHARAOHAURA"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(100,80,0)
stop
}
}

actor PharaohM_ChargeWarpFX : BasicExplosion
{
damagetype "PharaohM_Hold"
Obituary "$OB_PHARAOHSHOT"
+FORCEXYBILLBOARD
+BRIGHT
+NOTIMEFREEZE
Radius 20
Height 16
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 1 A_PlaySoundEx("weapon/Phar_Charge","Weapon")
Spawn_A:
TNT1 A 0 A_JumpIfInventory(ManInGauseAmmo,8,"Spawn_B",2)
TNT1 A 1 A_Warp(2,0,0,90,0,8)
TNT1 A 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_B:
X_4D B 0 A_JumpIfInventory(ManInGauseAmmo,16,"Spawn_C",2)
X_4D B 0 A_Warp(2,0,0,90,0,8)
X_4D B 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D B 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_C:
X_4D C 0 A_JumpIfInventory(ManInGauseAmmo,24,"Spawn_D",2)
X_4D C 0 A_Warp(2,0,0,90,0,8)
X_4D C 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D C 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_D:
X_4D D 0 A_JumpIfInventory(ManInGauseAmmo,32,"Spawn_E",2)
X_4D D 0 A_Warp(2,0,0,90,0,8)
X_4D D 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D D 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_E:
X_4D E 0 A_JumpIfInventory(ManInGauseAmmo,40,"Spawn_F",2)
X_4D E 0 A_Warp(2,0,0,90,0,8)
X_4D E 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D E 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_F:
X_4D F 0 A_JumpIfInventory(ManInGauseAmmo,48,"Spawn_G",2)
X_4D F 0 A_Warp(2,0,0,90,0,8)
X_4D F 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D F 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_G://Throw2 technically should be possible here!
X_4D G 0 A_JumpIfInventory(ManInGauseAmmo,58,"Spawn_H",2)
X_4D G 0 A_Warp(2,0,0,90,0,8)
X_4D G 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D G 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_H:
X_4D H 0 A_JumpIfInventory(ManInGauseAmmo,68,"Spawn_I",2)
X_4D H 0 A_Warp(2,0,0,90,0,8)
X_4D H 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D H 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_I:
X_4D I 0 A_JumpIfInventory(ManInGauseAmmo,78,"Spawn_JK_Snd",2)
X_4D I 0 A_Warp(2,0,0,90,0,8)
X_4D I 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D I 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Spawn_JK_Snd:
X_4D J 0 A_PlaySoundEx("weapon/Phar_ChargeLoop","Weapon",1)
Spawn_JK:
X_4D J 0 A_Warp(2,0,0,90,0,8)
X_4D J 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D J 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
X_4D J 0 A_Warp(2,0,0,90,0,8)
X_4D J 0 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D J 1 A_Explode(50,64,0)
X_4D J 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
X_4D J 0 A_Warp(2,0,0,90,0,8)
X_4D J 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D K 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
X_4D K 0 A_Warp(2,0,0,90,0,8)
X_4D K 0 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D K 1 A_Explode(50,64,0)
X_4D K 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
X_4D K 0 A_Warp(2,0,0,90,0,8)
X_4D K 1 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D K 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
X_4D K 0 A_Warp(2,0,0,90,0,8)
X_4D K 0 A_Warp(2,0,0,90-(z-ceilingz > -Height)*(Height+z-ceilingz),0,64+8)
X_4D K 1 A_Explode(50,64,0)
X_4D J 0 A_JumpIf(CallACS("cbm_Pharaoh_OOC")==0,"Death")
loop
Death:
TNT1 A 0 A_StopSound(1)
stop
}
}

actor PharaohShot1B
{
Translation "192:192=4:4", "198:198=216:216"
PROJECTILE
damagetype "PharaohM_Shot1"
Obituary "$OB_PHARAOHSHOT"
+FORCEXYBILLBOARD
+BRIGHT
damage (120)
Radius 10
Height 10
speed 35
scale 2.5
States
{
Spawn:
X_4D A 4
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("CBM_OilPitIgnite",0,0,8)
stop
}
}

actor PharaohShot1BB : PharaohShot1B{translation "192:192=205:205", "198:198=74:74"}
actor PharaohShot1BR : PharaohShot1B{translation "192:192=171:171", "198:198=41:41"}
actor PharaohShot1BO : PharaohShot1B{translation "192:192=104:104", "198:198=128:128"}
actor PharaohShot1BP : PharaohShot1B{translation "192:192=229:229", "198:198=232:232"}

actor PharaohShot2B : PharaohShot1B
{
Translation "192:192=4:4", "198:198=216:216"
damagetype "PharaohM_Shot"
Obituary "$OB_PHARAOHSHOT"
damage (250)//damage (400)
Radius 14//10
Height 14//10
States
{
Spawn:
X_4D H 4
loop
}
}

actor PharaohShot2BB : PharaohShot2B{translation "192:192=205:205", "198:198=74:74"}
actor PharaohShot2BR : PharaohShot2B{translation "192:192=171:171", "198:198=41:41"}
actor PharaohShot2BO : PharaohShot2B{translation "192:192=104:104", "198:198=128:128"}
actor PharaohShot2BP : PharaohShot2B{translation "192:192=229:229", "198:198=232:232"}

actor PharaohShot3B : PharaohShot2B
{
Translation "192:192=4:4", "198:198=216:216"
damagetype "PharaohM_Shot3"
Obituary "$OB_PHARAOHSHOT"
Radius 16//10
Height 16//10
States
{
Spawn:
X_4D JK 4
loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("CBM_OilPitIgnite",0,0,8)
TNT1 A 0 A_Explode(450,128,0,0,16)//A_Explode(650,128,0)//A_Explode(600,96,0,0,16)
//X_4D PQRSTYVWXY 1
X_4D LMNO 2
stop
}
}

actor PharaohShot3BB : PharaohShot3B{translation "192:192=205:205", "198:198=74:74"}
actor PharaohShot3BR : PharaohShot3B{translation "192:192=171:171", "198:198=41:41"}
actor PharaohShot3BO : PharaohShot3B{translation "192:192=104:104", "198:198=128:128"}
actor PharaohShot3BP : PharaohShot3B{translation "192:192=229:229", "198:198=232:232"}

actor PharaohShotWaveB
{
var int user_P;
PROJECTILE
Obituary "$OB_PHARAOHWAVE"
damagetype "PharaohM_Wave"
+RIPPER
+BRIGHT
Damage(90+user_P)
Radius 10
Height 32//10
speed 35
scale 2.5
States
{
Spawn:
PHAA W 2
PHAA W 2 A_SetUserVar("user_P",90)
PHAA W 2
wait
Death:
PHAA W 0
PHAA W 0 A_SpawnItemEx("CBM_OilPitIgnite",0,0,8)
PHAA W 0 A_Recoil(1)
PHAA W 1 A_FadeOut
wait
}
}

actor PharaohShotWaveBSpreadCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("ManInGauseAmmo")
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-45,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-90,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-135,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,180,1)
TNT1 A 0 A_JumpIfInventory("PowerSpread_ST",1,"PickupS")
stop
PickupS:
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,15,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-30,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,105,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-75,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-120,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,195,1)

TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-15,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-60,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,75,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-105,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,-150,1)
TNT1 A 0 A_SpawnItemEx("PharaohShotWaveB",8,0,32,35,0,0,165,1)
stop
}
}

actor PharaohmanMain1_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("PharaohShot1B",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("PharaohShot1BB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("PharaohShot1BR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("PharaohShot1BO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("PharaohShot1BP",0,1,8,0)
goto Done
Done:
TNT1 A 0 A_TakeInventory("ManInGauseAmmo")
stop
}
}

actor PharaohmanMain2_CI : PharaohmanMain1_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("PharaohShot2B",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("PharaohShot2BB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("PharaohShot2BR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("PharaohShot2BO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("PharaohShot2BP",0,1,8,0)
goto Done
}
}

actor PharaohmanMain3_CI : PharaohmanMain1_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("PharaohShot3B",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("PharaohShot3BB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("PharaohShot3BR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("PharaohShot3BO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("PharaohShot3BP",0,1,8,0)
goto Done
}
}


