//---------------------------MODIFIED WEAPONS
Actor "MaceOfContrition" : CWeapMace replaces CWeapMace
{
Tag "Mace Of Contrition"
Weapon.KickBack 0
Weapon.YAdjust 0
+UNDROPPABLE
+THRUGHOST
States
{
	Deselect:
		CMCE A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		CMCE A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Fire:
       CMCE B 2 Offset (60, 20)
       CMCE B 1 Offset (30, 33)
       CMCE B 2 Offset (8, 45)
       CMCE C 1 Offset (8, 45)
       CMCE D 1 Offset (8, 45)
       CMCE E 1 Offset (8, 45)
       CMCE E 1 Offset (-11, 58) A_CustomPunch(random(25,40)+(3*ACS_ExecuteWithResult(510,0,0,0)-30)+(10*ACS_ExecuteWithResult(516,4,0,0)),1,1,"HammerPuff",128)//A_CMaceAttack
       CMCE F 1 Offset (8, 45)
       CMCE F 2 Offset (-8, 74)
       CMCE F 1 Offset (-20, 96)
       CMCE F 8 Offset (-33, 160)
       CMCE A 1 Offset (8, 75) A_ReFire
	   CMCE A 1 Offset (8, 70)
       CMCE A 1 Offset (8, 65)
       CMCE A 2 Offset (8, 60)
       CMCE A 1 Offset (8, 55)
       CMCE A 2 Offset (8, 50)
       CMCE A 1 Offset (8, 45)
       Goto Ready
	AltFire:
       CMCE B 2 Offset (60, 20)
       CMCE B 1 Offset (30, 33)
       CMCE B 2 Offset (8, 45)
       CMCE C 1 Offset (8, 45)
       CMCE D 1 Offset (8, 45)
       CMCE E 1 Offset (8, 45)
       CMCE E 1 Offset (-11, 58) A_CustomPunch(random(35,60)+(5*ACS_ExecuteWithResult(510,0,0,0)-30)+(15*ACS_ExecuteWithResult(516,4,0,0)),1,1,"HammerPuff",128)//A_CMaceAttack
       CMCE F 1 Offset (8, 45)
       CMCE F 2 Offset (-8, 74)
       CMCE F 1 Offset (-20, 96)
       CMCE F 8 Offset (-33, 160)
	   TNT1 A 6
       CMCE A 1 Offset (8, 75) A_ReFire
	   CMCE A 1 Offset (8, 70)
       CMCE A 1 Offset (8, 65)
       CMCE A 2 Offset (8, 60)
       CMCE A 1 Offset (8, 55)
       CMCE A 2 Offset (8, 50)
       CMCE A 1 Offset (8, 45)
       Goto Ready
   }
}
Actor "SpikedGauntlets" : FWeapFist replaces FWeapFist
{
Tag "Spiked Gauntlets"
Weapon.KickBack 0
+UNDROPPABLE
+THRUGHOST
States
  {
  Deselect:
		FPCH A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		FPCH A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
  Ready:
  	FPCH A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FPCH A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FPCH A 0 A_TakeInventory("SpikedGauntletsCounter", 2)
    FPCH A 1 A_WeaponReady
    Loop
  Fire:
    FPCH B 5 Offset (5, 40)
    FPCH C 4 Offset (5, 40)
	FPCH C 0 Offset (5, 40) A_JumpIfCloser(144, "Hit")
	FPCH C 0 Offset (5, 40) A_TakeInventory("SpikedGauntletsCounter", 2)
	FPCH C 0 Offset (5, 40) A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FPCH C 0 Offset (5, 40) A_Jump(256,2)
	FPCH C 0 Offset (5, 40) A_CustomPunch(random(40,55)+4*ACS_ExecuteWithResult(510,0,0,0)-40,1,0,"CriticalPuff",128)
    FPCH D 4 Offset (5, 40) A_CustomPunch(random(40,55)+4*ACS_ExecuteWithResult(510,0,0,0)-40,1,0,"PunchPuff",128)
    FPCH C 4 Offset (5, 40)
    FPCH B 5 Offset (5, 40) A_ReFire
    Goto Ready
  Hit:
	FPCH C 0 Offset (5, 40) A_JumpIfInventory("SpikedGauntletsCounter", 2, "Fire2")
	FPCH C 0 Offset (5, 40) A_GiveInventory("SpikedGauntletsCounter")
	FPCH C 0 Offset (5, 40) A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FPCH C 0 Offset (5, 40) A_Jump(256,2)
	FPCH C 0 Offset (5, 40) A_CustomPunch(random(40,55)+4*ACS_ExecuteWithResult(510,0,0,0)-40,1,0,"CriticalPuff",128)
    FPCH D 4 Offset (5, 40) A_CustomPunch(random(40,55)+4*ACS_ExecuteWithResult(510,0,0,0)-40,1,0,"PunchPuff",128)
    FPCH C 4 Offset (5, 40)
    FPCH B 5 Offset (5, 40) A_ReFire
    Goto Ready
  MightyBlow:
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(18*ACS_ExecuteWithResult(516,11,0,0))+(9*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
    Goto Ready
  DeathBlow:
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
    Goto Ready
  Fire2:
	FPCH C 0 Offset (5, 40) A_TakeInventory("SpikedGauntletsCounter", 2)
	FPCH C 0 Offset (5, 40) A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FPCH C 0 Offset (5, 40) A_Jump(256,2)
	FPCH C 0 Offset (5, 40) A_CustomPunch(random(80,110)+8*ACS_ExecuteWithResult(510,0,0,0)-80,1,0,"CriticalPuff",128)
    FPCH D 0 Offset (5, 40) A_CustomPunch(random(80,110)+8*ACS_ExecuteWithResult(510,0,0,0)-80,1,0,"HammerPuff",128)
    FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60)
    FPCH E 1 Offset (35, 70)
    FPCH E 1 Offset (45, 80)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 10 Offset (0, 150)
    Goto Ready
  Altfire:
	FPCH B 5 Offset (5, 40)
    FPCH C 4 Offset (5, 40)
	FPCH C 0 Offset (5, 40) A_TakeInventory("SpikedGauntletsCounter", 2)
	FPCH C 0 Offset (5, 40) A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FPCH C 0 Offset (5, 40) A_Jump(256,2)
	FPCH C 0 Offset (5, 40) A_CustomPunch(random(80,110)+8*ACS_ExecuteWithResult(510,0,0,0)-80,1,0,"CriticalPuff",128)
    FPCH D 0 Offset (5, 40) A_CustomPunch(random(80,110)+8*ACS_ExecuteWithResult(510,0,0,0)-80,1,0,"HammerPuff",128)
    FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60)
    FPCH E 1 Offset (35, 70)
    FPCH E 1 Offset (45, 80)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 10 Offset (0, 150)
    Goto Ready
  }
}

Actor SpikedGauntletsCounter : Inventory
{
+INVENTORY.UNDROPPABLE
Inventory.MaxAmount 2
}

Actor TimonAxeGiver : CustomInventory replaces FWeapAxe
{
	Game Hexen
	SpawnID 27
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "TIMON'S AXE"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WFAX A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("Timon'sAxe", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaFighter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("Timon'sAxe", 1)
	Stop
	}
}

Actor "Timon'sAxe" : FWeapFist // Replaces FWeapAxe
{
	Tag "Timon's Axe"
  Weapon.SelectionOrder 1500
  +WEAPON.AXEBLOOD
  Weapon.AmmoUse1 2
  Weapon.AmmoGive1 25
  Weapon.KickBack 0
  Weapon.YAdjust 0
  Weapon.AmmoType1 "Mana1"
  Weapon.AmmoType2 "Mana1"
  Weapon.AmmoUse2 3
  +AMMO_OPTIONAL
  +ALT_AMMO_OPTIONAL
  +UNDROPPABLE
  +THRUGHOST
	Inventory.PickupMessage "$TXT_WEAPON_F2"
States
  {
  Spawn:
    WFAX A 0
    WFAX A -1
    Stop
	WFAX A -1
	Stop
  Select:
    FAXE A 0 A_JumpIfInventory("Mana1",2,3)
    FAXE A 1 A_Raise
    TNT1 A 0 A_Raise
	Goto Select+1
	FAXE L 1 A_Raise
	FAXE L 0 A_Raise
	FAXE L 1 A_Raise
	FAXE L 0 A_Raise
	FAXE L 1 A_Raise
	FAXE L 0 A_Raise
	FAXE M 1 A_Raise
	FAXE M 0 A_Raise
	FAXE M 1 A_Raise
	FAXE M 0 A_Raise
	FAXE M 1 A_Raise
	FAXE M 0 A_Raise
	FAXE Z 1 A_Raise
	FAXE Z 0 A_Raise
	FAXE Z 1 A_Raise
	FAXE Z 0 A_Raise
	FAXE Z 1 A_Raise
	FAXE Z 0 A_Raise
	Goto Select+3
  Deselect:
    FAXE A 0 A_JumpIfInventory("Mana1",2,3)
    FAXE A 1 A_Lower
    TNT1 A 0 A_Lower
	Goto DeSelect+1
	FAXE L 1 A_Lower
	FAXE L 0 A_Lower
	FAXE L 1 A_Lower
	FAXE L 0 A_Lower
	FAXE L 1 A_Lower
	FAXE L 0 A_Lower
	FAXE M 1 A_Lower
	FAXE M 0 A_Lower
	FAXE M 1 A_Lower
	FAXE M 0 A_Lower
	FAXE M 1 A_Lower
	FAXE M 0 A_Lower
	FAXE Z 1 A_Lower
	FAXE Z 0 A_Lower
	FAXE Z 1 A_Lower
	FAXE Z 0 A_Lower
	FAXE Z 1 A_Lower
	FAXE Z 0 A_Lower
	Goto DeSelect+3
   Ready:
    FAXE A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FAXE A 0 A_JumpIfInventory("Mana1",2,2)
    FAXE A 1 A_WeaponReady
    Loop
	FAXE L 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE L 1 A_WeaponReady
	FAXE L 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE L 1 A_WeaponReady
	FAXE L 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE L 1 A_WeaponReady
	FAXE M 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FAXE M 1 A_WeaponReady
	FAXE M 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE M 1 A_WeaponReady
	FAXE M 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE M 1 A_WeaponReady
	FAXE M 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE Z 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
    FAXE Z 1 A_WeaponReady
	FAXE Z 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE Z 1 A_WeaponReady
	FAXE Z 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	FAXE Z 1 A_WeaponReady
	FAXE Z 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FAXE L 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
	Loop
  Fire:
    FAXE B 4 Offset (15, 32) A_JumpIfInventory("Mana1",2,"FireGlow")
    FAXE C 3 Offset (15, 32)
    FAXE D 2 Offset (15, 32)
    FAXE D 1 Offset (-5, 70) A_CustomPunch((random(40,62)+2*ACS_ExecuteWithResult(510,0,0,0)-20)+(13*ACS_ExecuteWithResult(516,1,0,0)),1,0,"AxePuff",144)//A_FAxeAttack
	FAXE D 0 Offset (-5, 70) A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FAXE D 0 Offset (-5, 70) A_Jump(256,3)
	FAXE D 0 Offset (-5, 70) A_CustomPunch(random(40,62)+2*ACS_ExecuteWithResult(510,0,0,0-20)+(13*ACS_ExecuteWithResult(516,1,0,0)),1,0,"CriticalPuff",144)
	FAXE D 0 //Offset (-5, 70) ACS_ExecuteAlways(505,0,0,0)
    FAXE D 2 Offset (-25, 90)
    FAXE E 1 Offset (15, 32)
    FAXE E 2 Offset (10, 54)
    FAXE E 7 Offset (10, 150) A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
    FAXE A 1 Offset (0, 60) A_ReFire
    FAXE A 1 Offset (0, 52)
    FAXE A 1 Offset (0, 44)
    FAXE A 1 Offset (0, 36)
    FAXE A 1
    Goto Ready
  FireGlow:
	FAXE N 0 A_CheckReload
    FAXE N 4 Offset (15, 32)
    FAXE O 3 Offset (15, 32)
    FAXE P 2 Offset (15, 32)
	FAXE P 0 //A_TakeInventory("Mana1", 2)
    FAXE P 1 Offset (-5, 70) A_CustomPunch(random(80,124)+5*ACS_ExecuteWithResult(510,0,0,0)+(30*ACS_ExecuteWithResult(516,1,0,0))-50,1,0,"AxePuffGlow2",144)//A_FAxeAttack
	FAXE P 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FAXE P 0 A_Jump(256,3)
	FAXE P 0 A_CustomPunch(random(80,124)+5*ACS_ExecuteWithResult(510,0,0,0)+(30*ACS_ExecuteWithResult(516,1,0,0))-50,1,0,"CriticalPuff",144)
	FAXE P 0 //ACS_ExecuteAlways(505,0,0,0)
	FAXE P 0 //A_TakeInventory("mana1",2)
    FAXE P 2 Offset (-25, 90)
    FAXE Q 1 Offset (15, 32)
    FAXE Q 2 Offset (10, 54)
    FAXE Q 7 Offset (10, 150) A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
    FAXE M 1 Offset (0, 60) A_ReFire
    FAXE M 1 Offset (0, 52)
    FAXE Z 1 Offset (0, 44)
    FAXE Z 1 Offset (0, 36)
    FAXE Z 1
    Goto Ready
  MightyBlow:
    FAXE A 1 Offset (0, 52)
    FAXE A 1 Offset (0, 44)
    FAXE A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(16*ACS_ExecuteWithResult(516,11,0,0))+(8*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FAXE A 1 Offset (0, 36)
	FAXE A 1 Offset (0, 44)
	FAXE A 1 Offset (0, 52)
    Goto Ready
  DeathBlow:
    FAXE A 1 Offset (0, 52)
    FAXE A 1 Offset (0, 44)
    FAXE A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FAXE A 1 Offset (0, 36)
	FAXE A 1 Offset (0, 44)
	FAXE A 1 Offset (0, 52)
    Goto Ready
  Altfire:
	FAXE N 0 A_JumpIfNoAmmo("Fire")
    FAXE N 4 Offset (15, 32)
    FAXE O 3 Offset (15, 32)
    FAXE P 2 Offset (15, 32)
	FAXE P 0 A_PlaySound("FighterHammerMiss", CHAN_WEAPON, 1.0, 0)
    FAXE P 1 Offset (-5, 70) A_FireCustomMissile("ThrownAxe",0,1,0,0,0)
    FAXE P 2 Offset (-25, 90)
    FAXE Q 1 Offset (15, 32)
    FAXE Q 2 Offset (10, 54)
    FAXE Q 7 Offset (10, 150)
    FAXE M 1 Offset (0, 60) A_ReFire
    FAXE M 1 Offset (0, 52)
    FAXE Z 1 Offset (0, 44)
    FAXE Z 1 Offset (0, 36)
    FAXE Z 1
    Goto Ready
  }
}

ACTOR ThrownAxe
{
    PROJECTILE
	Species "Player"
	+THRUSPECIES
    Radius 6
    Height 8
    Speed 20
    Damage (random(1,8)*10+(acs_executewithresult(556))-10+(acs_executewithresult(599,26)*4))
    Scale 0.85
    DeathSound "weapons/skulprojdeath"
    States
    {
    Spawn:
	THAX ABC 2 Bright A_FadeOut(0.1)
	THAX D 0 Bright A_PlaySound("FighterHammerContinuous")
	THAX DEFG 2 Bright A_FadeOut(0.1)
	THAX H 0 Bright A_PlaySound("FighterHammerContinuous")
	THAX H 2 Bright A_FadeOut(0.1)
	Stop
    Death:
	FAXE R 0
	FAXE R 0 A_SetTranslucent(1,1)
	FAXE R 0 A_Explode(80+(acs_executewithresult(556))-10+(acs_executewithresult(599,26)*4),96,0)
	FAXE R 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")
	FAXE RR 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")// A_TakeFromTarget("Mana1", 2)
	FAXE ST 3
	FAXE UVWX 3 Bright
	Stop
    }
}

Actor AxePuffGlow2 : AxePuffGlow
{
	+PUFFGETSOWNER
	States
  {
  Crash:
  Spawn:
    FAXE R 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")
	FAXE RR 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")// A_TakeFromTarget("Mana1", 2)
	FAXE ST 3
	FAXE UVWX 3 Bright
    Stop
  Melee:
    FAXE R 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")
	FAXE R 0 Bright A_TakeFromTarget("Mana1", 2)
	FAXE RR 1 Bright A_SpawnItemEx("TimonsAxeFXSpawner")// A_TakeFromTarget("Mana1", 2)
	FAXE ST 3
	FAXE UVWX 3 Bright
    Stop
  }
 }

actor TimonsAxeFXSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
	states
    {
    Spawn:
    Active:
		TNT1 A 0
        TNT1 A 0 A_JumpIf(Args[1], "Circle")
        TNT1 A 2
        TNT1 A 0 A_SpawnItemEx ("TimonsAxeParticleFX", 0, 0, random(0, 8), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.5)*Random(-3, 3), random(0,360), 129, Args[2])
        TNT1 A 0 A_SpawnItemEx ("TimonsAxeParticleFX", 0, 0, random(0, 8), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.5)*Random(-3, 3), random(0,360), 129, Args[2]) 
        Stop
    Circle:
		TNT1 A 0
        TNT1 A 2 A_SpawnItemEx ("TimonsAxeParticleFX", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), Random(0, 360), 129, Args[2]) 
        Loop
    Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR TimonsAxeParticleFX
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.9
 Scale 0.5
 Gravity 0.25
 States
 {
  Spawn:
   FAXE RRSSTTUUVVWWXX 1 Bright A_FadeOut(0.04)
   Stop
 }
}

Actor HammerOfRetributionGiver : CustomInventory replaces FWeapHammer
{
	Game Hexen
	SpawnID 28
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "HAMMER OF RETRIBUTION"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WFHM A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("HammerOfRetribution", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaFighter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("HammerOfRetribution", 1)
	Stop
	}
}

Actor "HammerOfRetribution" : FighterWeapon
{
  Tag "Hammer of Retribution"
  //Game Hexen
  Weapon.SelectionOrder 900
  +BLOODSPLATTER
  +WEAPON.AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
  +WEAPON.MELEEWEAPON
  +UNDROPPABLE
  +THRUGHOST
  Weapon.AmmoUse1 3
  Weapon.AmmoUse2 3
  Weapon.AmmoGive1 25
  Weapon.KickBack 0
  Weapon.YAdjust 0
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoType2 "Mana2"
  Inventory.PickupMessage "$TXT_WEAPON_F3" // "HAMMER OF RETRIBUTION"
States
  {
  Spawn:
    WFHM A -1
    Stop
  Select:
	FHMR A 0 A_JumpIfInventory("Mana2", 3, 3)
    FHMR A 1 A_Raise
    TNT1 A 0 A_Raise
	Goto Select+1
	FHMR F 1 A_Raise
	FHMR F 0 A_Raise
	FHMR F 1 A_Raise
	FHMR F 0 A_Raise
	FHMR F 1 A_Raise
	FHMR F 0 A_Raise
	FHMR G 1 A_Raise
	FHMR G 0 A_Raise
	FHMR G 1 A_Raise
	FHMR G 0 A_Raise
	FHMR G 1 A_Raise
	FHMR G 0 A_Raise
	FHMR H 1 A_Raise
	FHMR H 0 A_Raise
	FHMR H 1 A_Raise
	FHMR H 0 A_Raise
	FHMR H 1 A_Raise
	FHMR H 0 A_Raise
	Goto Select+3
  DeSelect:
	FHMR A 0 A_JumpIfInventory("Mana2", 3, 3)
    FHMR A 1 A_Lower
    TNT1 A 0 A_Lower
	Goto DeSelect+1
	FHMR F 1 A_Lower
	FHMR F 0 A_Lower
	FHMR F 1 A_Lower
	FHMR F 0 A_Lower
	FHMR F 1 A_Lower
	FHMR F 0 A_Lower
	FHMR G 1 A_Lower
	FHMR G 0 A_Lower
	FHMR G 1 A_Lower
	FHMR G 0 A_Lower
	FHMR G 1 A_Lower
	FHMR G 0 A_Lower
	FHMR H 1 A_Lower
	FHMR H 0 A_Lower
	FHMR H 1 A_Lower
	FHMR H 0 A_Lower
	FHMR H 1 A_Lower
	FHMR H 0 A_Lower
	Goto DeSelect+3
  Ready:
	FHMR A 0 A_JumpIfInventory("Mana2", 3, "ReadyMana")
	FHMR A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
    FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR A 1 A_WeaponReady
    Loop
  ReadyMana:
	FHMR F 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR F 1 A_WeaponReady
	FHMR F 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR F 1 A_WeaponReady
	FHMR F 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR F 1 A_WeaponReady
	FHMR G 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR G 1 A_WeaponReady
	FHMR G 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR G 1 A_WeaponReady
	FHMR G 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR G 1 A_WeaponReady
	FHMR H 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR H 1 A_WeaponReady
	FHMR H 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR H 1 A_WeaponReady
	FHMR H 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FHMR A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FHMR H 1 A_WeaponReady
	Loop
  AltFire:
	FHMR I 0 A_JumpIfNoAmmo("Meleehammer")
    FHMR I 6 Offset (5, 0)
	FHMR J 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FHMR J 0 A_Jump(256,3)
	FHMR J 0 A_CustomPunch(random(60,123)+5*ACS_ExecuteWithResult(510,0,0,0)-50+(30*ACS_ExecuteWithResult(516,2,0,0)),1,0,"CriticalPuff",128)
	FHMR J 0 //ACS_ExecuteAlways(505,0,0,0)
    FHMR J 3 Offset (5, 0) A_CustomPunch(random(60,123)+5*ACS_ExecuteWithResult(510,0,0,0)-50+(30*ACS_ExecuteWithResult(516,2,0,0)),1,0,"FlamingHammerPuff",128)//A_CustomPunch(10*ACS_ExecuteWithResult(510,0,0,0),1,1,"HammerPuff")//A_FHammerAttack
    FHMR K 3 Offset (5, 0)
    FHMR L 2 Offset (5, 0)
	FHMR L 0 A_JumpIfNoAmmo(2)
	FHMR L 0 //A_FireCustomMissile("HammerMissile")//A_FireCustomMissile("HammerMissile")//,0,1,0,0,16)//A_FHammerThrow
	FHMR L 0 //A_Jump(256,2)
	FHMR L 0 //A_FireCustomMissile("MinotaurFX2",0,0)//doesn't use ammo!
    FHMR L 10 Offset (5, 150)
    FHMR F 1 Offset (0, 60)
    FHMR G 1 Offset (0, 55)
    FHMR G 1 Offset (0, 50)
    FHMR G 1 Offset (0, 45)
    FHMR H 1 Offset (0, 40)
    FHMR H 1 Offset (0, 35)
    FHMR H 1
    Goto Ready
  Fire:
	FHMR I 0 A_JumpIfNoAmmo("Meleehammer")
    FHMR I 6 Offset (5, 0)
    FHMR J 3 Offset (5, 0) //A_CustomPunch(10*ACS_ExecuteWithResult(510,0,0,0),1,1,"HammerPuff")//A_FHammerAttack
    FHMR K 3 Offset (5, 0)
    FHMR L 2 Offset (5, 0)
	FHMR L 0 A_PlaySoundEx("FighterHammerContinuous",Weapon)
	FHMR L 0 A_JumpIfNoAmmo(2)
	FHMR L 0 A_FireCustomMissile("HammerMissile")//A_FireCustomMissile("HammerMissile")//,0,1,0,0,16)//A_FHammerThrow
	FHMR L 0 //A_Jump(256,2)
	FHMR L 0 //A_FireCustomMissile("MinotaurFX2",0,0)//doesn't use ammo!
    FHMR L 10 Offset (5, 150)
    FHMR F 1 Offset (0, 60)
    FHMR G 1 Offset (0, 55)
    FHMR G 1 Offset (0, 50)
    FHMR G 1 Offset (0, 45)
    FHMR H 1 Offset (0, 40)
    FHMR H 1 Offset (0, 35)
    FHMR H 1
    Goto Ready
  Meleehammer:
    FHMR B 6 Offset (5, 0)
	FHMR D 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FHMR D 0 A_Jump(256,3)
	FHMR D 0 A_CustomPunch(random(60,123)+5*ACS_ExecuteWithResult(510,0,0,0)-50+(30*ACS_ExecuteWithResult(516,2,0,0)),1,0,"CriticalPuff",96)
	FHMR D 0 //ACS_ExecuteAlways(505,0,0,0)
    FHMR C 3 Offset (5, 0) A_CustomPunch(random(60,123)+5*ACS_ExecuteWithResult(510,0,0,0)-50+(30*ACS_ExecuteWithResult(516,2,0,0)),1,0,"HammerPuff",96)//A_FHammerAttack
    FHMR D 3 Offset (5, 0)
    Goto FinishAnim
  FinishAnim:
    FHMR E 2 Offset (5, 0)
    FHMR E 10 Offset (5, 150)
    FHMR A 1 Offset (0, 60)
    FHMR A 1 Offset (0, 55)
    FHMR A 1 Offset (0, 50)
    FHMR A 1 Offset (0, 45)
    FHMR A 1 Offset (0, 40)
    FHMR A 1 Offset (0, 35)
    FHMR A 1
    Goto Ready
  MightyBlow:
    FHMR A 1 Offset (0, 52)
    FHMR A 1 Offset (0, 44)
    FHMR A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(16*ACS_ExecuteWithResult(516,11,0,0))+(8*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70) //A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FHMR A 1 Offset (0, 36)
	FHMR A 1 Offset (0, 44)
	FHMR A 1 Offset (0, 52)
    Goto Ready
  DeathBlow:
    FHMR A 1 Offset (0, 52)
    FHMR A 1 Offset (0, 44)
    FHMR A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FHMR A 1 Offset (0, 36)
	FHMR A 1 Offset (0, 44)
	FHMR A 1 Offset (0, 52)
    Goto Ready
  }
}

Actor FlamingHammerPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	+PUFFGETSOWNER
	Radius 8
	Height 12
	Renderstyle Add
	Damagetype "Fire"
	SeeSound "FighterHammerHitThing"
	AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"

	States
	{
	Spawn:
	Melee:
	FHFX I 1 Bright
	FHFX I 0 A_TakefromTarget("Mana2", 3)
	FHFX I 2 Bright A_SetTranslucent(1,1)
    FHFX J 3 Bright
    FHFX K 3 Bright A_Explode(128+(acs_executewithresult(556))-10+(6*acs_executewithresult(557)), 128, 0)
    FHFX LM 3 Bright
    FHFX N 3
    FHFX OPQR 3 Bright
    Stop
	Crash:
	FHFX SS 0 A_SetTranslucent(0.6, 0)
	FHFX STUVW 4
	Stop
	}
}

ACTOR NewHammerMissile : HammerMissile Replaces HammerMissile
{
	Damage (random(1,8)*10+(acs_executewithresult(556))-10+(6*acs_executewithresult(557)))
	Species "Player"
	+THRUSPECIES
	States
  {
  Spawn:
    FHFX A 2 Bright
    FHFX B 2 Bright A_PlaySound("FighterHammerContinuous")
    FHFX CDEFGH 2 Bright
    Loop
  Death:
    FHFX I 3 Bright A_SetTranslucent(1,1)
    FHFX J 3 Bright
    FHFX K 3 Bright A_Explode(128+(acs_executewithresult(556))-10+(6*acs_executewithresult(557)), 128, 0)
    FHFX LM 3 Bright
    FHFX N 3
    FHFX OPQR 3 Bright
    Stop
  }
}

Actor DragonClawGiver : CustomInventory replaces FWeaponPiece3
{
	Game Hexen
	SpawnID 31
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "DRAGON CLAW"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WBLS A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("DragonClaw", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaFighter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("DragonClaw", 1)
	Stop
	}
}

ACTOR "DragonClaw" : FighterWeapon// replaces FWeaponPiece3
{
  -BLOODSPLATTER
  AttackSound "Weapons/BlasterShot"
  Weapon.SelectionOrder 500
  Weapon.KickBack 0
  Weapon.AmmoUse1 1
  Weapon.AmmoUse2 4
  Weapon.AmmoGive1 25
  Weapon.YAdjust 0
  Weapon.AmmoType1 "Mana1"
  Weapon.AmmoType2 "Mana1"
  Tag "Dragon Claw"
  +UNDROPPABLE
  Inventory.PickupMessage "DRAGON CLAW" // "DRAGON CLAW"

  States
  {
  Spawn:
    WBLS A -1
    Stop
  Ready:
	WRIP A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	WRIP A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    WRIP A 1 A_WeaponReady
    Loop
  Deselect:
    WRIP A 1 A_Lower
	TNT1 A 0 A_Lower
    Loop
  Select:
    WRIP A 1 A_Raise
	TNT1 A 0 A_Raise
    Loop
  Fire:
    WRIP BC 3
  Hold:
    WRIP D 2 A_FireBullets(2.565,2,1,5+acs_executewithresult(603), "BlasterPuff")
    WRIP CB 2
    WRIP A 0 A_ReFire
    Goto Ready
  AltFire:
	WRIP BC 3
  AltHold:
	WRIP D 3 Bright A_FireBullets(7.675,6,12,acs_executewithresult(603), "BlasterPuff")
	WRIP CB 3
	WRIP A 5
	WRIP A 0 A_ReFire
	Goto Ready
  MightyBlow:
    WRIP A 1 Offset (0, 52)
    WRIP A 1 Offset (0, 44)
    WRIP A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(16*ACS_ExecuteWithResult(516,11,0,0))+(8*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70) //A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	WRIP A 1 Offset (0, 36)
	WRIP A 1 Offset (0, 44)
	WRIP A 1 Offset (0, 52)
    Goto Ready
  DeathBlow:
    WRIP A 1 Offset (0, 52)
    WRIP A 1 Offset (0, 44)
    WRIP A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	WRIP A 1 Offset (0, 36)
	WRIP A 1 Offset (0, 44)
	WRIP A 1 Offset (0, 52)
    Goto Ready
  }
}

Actor VorpalBladeGiver : CustomInventory replaces FWeaponPiece2
{
	Game Hexen
	SpawnID 30
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "VORPAL BLADE"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WVBL A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("VorpalBlade", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaFighter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("VorpalBlade", 1)
	Stop
	}
}

ACTOR "VorpalBlade" : FighterWeapon// Replaces FWeaponPiece2
{
  Weapon.Ammotype Mana2
  Weapon.Ammouse 4
  +AXEBLOOD
  +WEAPON.AMMO_OPTIONAL
  Weapon.KickBack 0
  Weapon.AmmoGive1 25
  Weapon.SelectionOrder 10
  Tag "Vorpal Blade"
  +UNDROPPABLE
  +THRUGHOST
  Inventory.Pickupmessage "VORPAL BLADE"
  States
  {
  Spawn:
    WVBL A -1 Bright
    Stop
  Ready:
	SWRD A 0 A_JumpIfInventory("MightyBlowing", 1, "MightyBlow")
	SWRD A 0 A_JumpIfInventory("DeathBlowing", 1, "DeathBlow")
	SWRD A 1 A_WeaponReady
	Loop
  Deselect:
	SWRD A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
  Select:
	SWRD A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
  Fire:
	TNT1 A 0 A_JumpIfNoAmmo("MeleeSlash")
	TNT1 A 4
	TNT1 A 0 A_PlaySound("weapons/vorpalbladeswing", 8, 1.0, 0)
	SWRD BCD 2
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"FlailPuff2",150)
	SWRD E 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	SWRD E 0 A_Jump(256,2)
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"CriticalPuff",150)
	SWRD E 0 A_FireCustomMissile("VorpalBladeSlash")
	SWRD E 2
	SWRD FG 2
	TNT1 A 3
	Goto Ready
  Altfire:
	TNT1 A 4
	TNT1 A 0 A_PlaySound("weapons/vorpalbladeswing", 8, 1.0, 0)
	SWRD BCD 2
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"FlailPuff2",150)
	SWRD E 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	SWRD E 0 A_Jump(256,2)
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"CriticalPuff",150)
	SWRD E 2
	SWRD FG 2
	TNT1 A 3
	Goto Ready
  MeleeSlash:
	TNT1 A 4
	TNT1 A 0 A_PlaySound("weapons/vorpalbladeswing", 8, 1.0, 0)
	SWRD BCD 2
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"FlailPuff2",150)
	SWRD E 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	SWRD E 0 A_Jump(256,2)
	SWRD E 0 A_CustomPunch(random(60,123)+4*ACS_ExecuteWithResult(510,0,0,0)-40+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"CriticalPuff",150)
	SWRD E 2
	SWRD FG 2
	TNT1 A 3
	Goto Ready
  MightyBlow:
    SWRD A 1 Offset (0, 52)
    SWRD A 1 Offset (0, 44)
    SWRD A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(16*ACS_ExecuteWithResult(516,11,0,0))+(8*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70) //A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	SWRD A 1 Offset (0, 36)
	SWRD A 1 Offset (0, 44)
	SWRD A 1 Offset (0, 52)
    Goto Ready
  DeathBlow:
    SWRD A 1 Offset (0, 52)
    SWRD A 1 Offset (0, 44)
    SWRD A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	SWRD A 1 Offset (0, 36)
	SWRD A 1 Offset (0, 44)
	SWRD A 1 Offset (0, 52)
    Goto Ready
  }
}

ACTOR VorpalBladeSlash
{
   Radius 8
   Height 16
   Speed 25
   Damage (10+(1*acs_executewithresult(556))+2*(acs_executewithresult(599,16)))
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.75
   Reactiontime 15
   +RIPPER
   +NODAMAGETHRUST
   Species "Player"
	+THRUSPECIES
   States
   {
   Spawn:
      VFX4 A 1 Bright A_SpawnItem("SlashTrail",0,0)
      VFX4 A 0 Bright A_Explode(10+(1*acs_executewithresult(556))+2*(acs_executewithresult(599,16)),30,0)
	  VFX4 A 0 Bright A_Countdown
      Loop
   Death:
      VFX4 A 1 Bright
	  Stop
   }
}

ACTOR SlashTrail
{
   Radius 3
   Height 3
   Species "Player"
   PROJECTILE
   +THRUSPECIES
   RENDERSTYLE ADD
   ALPHA 0.80
   States
   {
   Spawn:
      NULL A 1
      VFX4 A 2 Bright A_FadeOut(0.10)
      Goto Spawn+1
   }
}

Actor QuietusGiver : CustomInventory replaces FWeaponPiece1
{
	Game Hexen
	SpawnID 29
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "QUIETUS"
	Inventory.PickupSound "Pickup/four"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	QUTP Z -1 BRIGHT
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("Quietus", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaFighter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("Quietus", 1)
	Stop
	}
}

ACTOR "Quietus" : FWeapQuietus// Replaces FWeaponPiece1
{
Tag "Quietus"
Weapon.KickBack 0
Weapon.YAdjust 0
+WEAPON.AMMO_OPTIONAL
+WEAPON.ALT_AMMO_OPTIONAL
+UNDROPPABLE
+THRUGHOST
Inventory.PickupSound "pickup/four"
Inventory.PickupMessage "QUIETUS"
States
  {
  Spawn:
    QUTP Z -1
    Stop
  Select:
	FSRD D 0 Bright A_JumpIfInventory("Mana1", 6, 1)
	Goto SelectNoMana
	FSRD D 0 Bright A_JumpIfInventory("Mana2", 6, 1)
	Goto SelectNoMana
    FSRD A 1 Bright A_Raise
	TNT1 A 0 A_Raise
    Loop
  Deselect:
	FSRD D 0 Bright A_JumpIfInventory("Mana1", 6, 1)
	Goto DeSelectNoMana
	FSRD D 0 Bright A_JumpIfInventory("Mana2", 6, 1)
	Goto DeSelectNoMana
    FSRD A 1 Bright A_Lower
	TNT1 A 0 A_Lower
    Loop
  Ready:
	FSRD D 0 Bright A_JumpIfInventory("Mana1", 6, 1)
	Goto ReadyNoMana
	FSRD D 0 Bright A_JumpIfInventory("Mana2", 6, 1)
	Goto ReadyNoMana
    FSRD A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD A 1 Bright A_WeaponReady
	FSRD A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD A 1 Bright A_WeaponReady
	FSRD A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD A 1 Bright A_WeaponReady
	FSRD A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD A 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD B 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD B 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD B 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD B 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD C 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD C 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD C 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
	FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
    FSRD C 1 Bright A_WeaponReady
    Loop
	ReadyNoMana:
   FSRD A 0 A_JumpIfInventory("MightyBlowing",1,"MightyBlow")
   FSRD A 0 A_JumpIfInventory("DeathBlowing",1,"DeathBlow")
   FSD2 A 1 A_WeaponReady
   Goto Ready
   SelectNoMana:
   FSD2 A 1 A_Raise
   TNT1 A 0 A_Raise
   Goto Select
   DeselectNoMana:
   FSD2 A 1 A_Lower
   TNT1 A 0 A_Lower
   Goto Deselect
  AltFire:
	FSRD D 0 Bright A_JumpIfInventory("Mana1", 6, 1)
	Goto FireNoMana
	FSRD D 0 Bright A_JumpIfInventory("Mana2", 6, 1)
	Goto FireNoMana
    FSRD DE 3 Bright Offset(5, 36)
    FSRD F 2 Bright Offset(5, 36)
	FSD2 D 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	FSD2 D 0 A_Jump(256,3)
	FSD2 D 0 A_CustomPunch(random(240,360)+15*ACS_ExecuteWithResult(510,0,0,0)-150+(30*ACS_ExecuteWithResult(516,3,0,0)),1,0,"CriticalPuff",144)//doesn't have an associated mastery
	FSD2 D 0 //ACS_ExecuteAlways(505,0,0,0)
	FSD2 D 0 //A_CustomPunch(13*ACS_ExecuteWithResult(510,0,0,0),0,1,"PunchPuff",150)//doesn't have an associated mastery
    FSRD GGG 1 Bright Offset(5, 36) A_CustomPunch(random(80,120)+5*ACS_ExecuteWithResult(510,0,0,0)-50+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"QuietusPuff",144)
    FSRD H 2 Bright Offset(5, 36)
    FSRD I 2 Bright Offset(5, 36)
    FSRD I 10 Bright Offset(5, 150)
    FSRD A 1 Bright Offset(5, 60)
    FSRD B 1 Bright Offset(5, 55)
    FSRD C 1 Bright Offset(5, 50)
    FSRD A 1 Bright Offset(5, 45)
    FSRD B 1 Bright Offset(5, 40)
    Goto Ready
  Fire:
	FSRD D 0 Bright A_JumpIfInventory("Mana1", 14, 1)
	Goto AltFire
	FSRD D 0 Bright A_JumpIfInventory("Mana2", 14, 1)
	Goto AltFire
    FSRD DE 3 Bright Offset(5, 36)
    FSRD F 2 Bright Offset(5, 36)
    FSRD G 3 Bright Offset(5, 36) A_FSwordAttack
    FSRD H 2 Bright Offset(5, 36)
    FSRD I 2 Bright Offset(5, 36)
    FSRD I 10 Bright Offset(5, 150)
    FSRD A 1 Bright Offset(5, 60)
    FSRD B 1 Bright Offset(5, 55)
    FSRD C 1 Bright Offset(5, 50)
    FSRD A 1 Bright Offset(5, 45)
    FSRD B 1 Bright Offset(5, 40)
    Goto Ready
  MightyBlow:
    FSRD A 1 Offset (0, 52)
    FSRD A 1 Offset (0, 44)
    FSRD A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
    FPCH E 1 Offset (15, 50) A_CustomPunch(25+(16*ACS_ExecuteWithResult(516,11,0,0))+(8*ACS_ExecuteWithResult(510,0,0,0)),1,0,"MightyBlowPuff",128)
    FPCH E 1 Offset (25, 60)
    FPCH E 1 Offset (35, 70) //A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("MightyBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FSRD A 1 Offset (0, 36)
	FSRD A 1 Offset (0, 44)
	FSRD A 1 Offset (0, 52)
    Goto Ready
  DeathBlow:
    FSRD A 1 Offset (0, 52)
    FSRD A 1 Offset (0, 44)
    FSRD A 1 Offset (0, 36)
	FPCH DE 4 Offset (5, 40)
	FPCH E 0 A_JumpIfInventory("DeathBlow", random(0,30), 2)
	FPCH E 0 A_Jump(256,2)
	FPCH E 0 A_CustomPunch(10000,1,0,"DeathBlowPuff",128)
    FPCH E 1 Offset (15, 50)
    FPCH E 1 Offset (25, 60) //A_RadiusThrust(20+(20*ACS_ExecuteWithResult(501,0,0,0)), 128, 0)
    FPCH E 1 Offset (35, 70)// A_TakeInventory("MP",2)
    FPCH E 1 Offset (45, 80) A_TakeInventory("DeathBlowing",2)
    FPCH E 1 Offset (55, 90)
    FPCH E 1 Offset (65, 90)
    FPCH E 1 Offset (0, 150)
	FSRD A 1 Offset (0, 36)
	FSRD A 1 Offset (0, 44)
	FSRD A 1 Offset (0, 52)
    Goto Ready
  FireNoMana:
	   FSD2 BC 3 Offset (5, 36)
	   FSD2 D 2 Offset (5, 36)
	   FSD2 D 0 A_JumpIfInventory("CriticalStrike",Random(0,30),2)
	   FSD2 D 0 A_Jump(256,3)
	   FSD2 D 0 A_CustomPunch(random(60,90)+9*ACS_ExecuteWithResult(510,0,0,0)+(30*ACS_ExecuteWithResult(516,3,0,0)),1,0,"CriticalPuff",128)//doesn't have an associated mastery
	   FSD2 D 0 //ACS_ExecuteAlways(505,0,0,0)
	   FSD2 D 0 //A_CustomPunch(13*ACS_ExecuteWithResult(510,0,0,0),0,1,"PunchPuff",150)//doesn't have an associated mastery
	   FSD2 EEE 1 Offset (5, 36) A_CustomPunch(random(20,30)+3*ACS_ExecuteWithResult(510,0,0,0)+(10*ACS_ExecuteWithResult(516,3,0,0)),1,0,"HammerPuff",128)
	   FSD2 F 10 Offset (5, 150)
	   FSD2 A 1 Offset (5, 60)
	   FSD2 A 1 Offset (5, 55)
	   FSD2 A 1 Offset (5, 50)
	   FSD2 A 1 Offset (5, 45)
	   FSD2 A 1 Offset (5, 40)
  Goto Ready
  }
}

ACTOR QuietusPuff : AxePuffGlow
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +EXTREMEDEATH
    +PUFFGETSOWNER
    RenderStyle Add
    Alpha 0.75
    Scale 0.85
    States
    {
    Crash:
	Spawn:
	QUFX ABCDEFG 4 Bright
	Stop
	Melee:
	QUFX A 1
	QUFX A 0 A_TakeFromTarget("Mana1", 2)
	QUFX A 2 A_TakeFromTarget("Mana2", 2)
	QUFX BCDEFG 3 Bright
	Stop
    }
}

Actor NewFSwordMissile : FSwordMissile replaces FSwordMissile
{
	Damage (random(1,8)*8+(acs_executewithresult(556))-10+5*(acs_executewithresult(599,16)))
	Species "Player"
	+THRUSPECIES
	States
	{
	Spawn:
    FSFX ABC 3 Bright A_CustomMissile("FSwordFireTrail",0,0,0,6)
    Loop
	Death:
    FSFX D 3 Bright
    FSFX E 2 Bright A_FSwordFlames
    FSFX F 3 Bright A_Explode(64+acs_executewithresult(556)-10+5*(acs_executewithresult(599,16)), 128, 0)
    FSFX G 2 Bright
    FSFX H 3 Bright
    FSFX I 2 Bright
    FSFX J 3 Bright
    FSFX KLM 2 Bright
    Stop
	}
}

actor FSwordFireTrail
{
    Radius 4
    Height 0
    Speed 0
    Damage 0
    Projectile
	+CLIENTSIDEONLY
    RenderStyle Add
    States
    {
    Spawn:
	FSFX NOPQRST 4 Bright A_LowGravity
	Loop
    Death:
	FSFX U 4 Bright
	FSFX VW 4 Bright
	Stop
    }
}

Actor SerpentStaffSpawnThing : CustomInventory replaces CWeapStaff
{
	Game Hexen
	SpawnID 32
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("SerpentStaffRGiver")
	TNT1 A 0 A_SpawnItem("EnchantedBowRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor DummiestItemEvar : Inventory
{
	Inventory.MaxAmount 2500
}

Actor SerpentStaffRGiver : Randomspawner
{
	DropItem "SerpentStaffGiver"
}

Actor SerpentStaffGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "SERPENT STAFF"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WCSS A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("SerpentStaff", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaCleric", 1, "PickupCleric")
	Fail
	TNT1 A 0
	Fail
	PickupCleric:
	TNT1 A 0 A_GiveInventory("SerpentStaff", 1)
	Stop
	}
}

Actor EnchantedBowRGiver : Randomspawner
{
	DropItem "EnchantedBowGiver"
}

Actor EnchantedBowGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "ENCHANTED BOW"
	Inventory.RespawnTics 35
	Inventory.PickupSound "PickupWeapon"
	States
	{
	Spawn:
	BWPU A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("EnchantedBow", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaHunter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("EnchantedBow", 1)
	Stop
	}
}

Actor "SerpentStaff" : CWeapStaff// replaces CWeapStaff
{
	Tag "Serpent Staff"
	Weapon.KickBack 0
	Weapon.YAdjust 0
	+UNDROPPABLE
	Weapon.AmmoType2 "Mana1"
	Weapon.AmmoUse2 1
	States
	{
	Select:
    CSSF C 1 A_Raise
	TNT1 A 0 A_Raise
    Loop
	Deselect:
    CSSF B 1 A_Lower
	TNT1 A 0 A_Lower
	CSSF B 1 A_Lower
	TNT1 A 0 A_Lower
	CSSF B 1 A_Lower
	TNT1 A 0 A_Lower
    CSSF C 1 A_Lower
    CSSF C 0 A_Lower
    Goto Deselect+6
	Fire:
    CSSF A 1 Offset (0, 45) //A_JumpIfCloser(96, "Sap")
    CSSF J 1 Offset (0, 50) A_CStaffAttack
    CSSF J 1 Offset (0, 48)
	CSSF J 1 Offset (0, 46)
    CSSF J 1 Offset (0, 44)
	CSSF J 1 Offset (0, 42)
    CSSF A 2 Offset (0, 40)
    CSSF A 2 Offset (0, 36)
    Goto Ready + 2
  Altfire:
	CSSF J 0 A_JumpIfCloser(96, "Sap")
	CSSF J 5 A_PlaySound ("SerpentFXContinuous", CHAN_WEAPON)
	CSSF B 0 A_StopSound(CHAN_WEAPON)
	Goto Ready + 2
  Sap:
    CSSF K 10 Offset (0, 36) A_CustomPunch(random(20,40)+ACS_ExecuteWithResult(510,0,0,0)-10, 1, 0, "SerpentStaffPuff", 96)
    Goto Ready + 2
	}
}

ACTOR SerpentStaffPuff
{
  +NOBLOCKMAP
  +NOGRAVITY
  //Translation "0:32=186:202"
  +PUFFONACTORS
  +PUFFGETSOWNER
  RenderStyle Add
  Alpha 0.6
  SeeSound "ClericCStaffHitThing"
  States
  {
  Spawn:
    SSPF S 1
	SSPF S 0 A_TakeFromTarget("Mana1", 1)
	SSPF S 3 A_GiveToTarget("BluePotionVial")//acs_executealways(607, 0, 5)
	SSPF TUVW 4
    Stop
  }
}

Actor SerpentStaffHealth : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	States
	{
	Use:
		TNT1 A 0 ACS_ExecuteAlways(554,0,5,0,0)
		Stop
	}
}

Actor MorningStarSpawnThing : CustomInventory replaces CWeaponPiece3
{
	Game Hexen
	SpawnID 35
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("MorningStarRGiver")
	TNT1 A 0 A_SpawnItem("GlacialCrossbowRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor MorningStarRGiver : Randomspawner
{
	DropItem "MORNINGSTARGiver"
}

Actor MORNINGSTARGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "MORNING STAR"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	MRNS A -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("MorningStar", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaCleric", 1, "PickupCleric")
	Fail
	TNT1 A 0
	Fail
	PickupCleric:
	TNT1 A 0 A_GiveInventory("MorningStar", 1)
	Stop
	}
}

Actor GlacialCrossbowRGiver : Randomspawner
{
	DropItem "GlacialCrossbowGiver"
}

Actor GlacialCrossbowGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "GLACIAL CROSSBOW"
	Inventory.RespawnTics 35
	Inventory.PickupSound "PickupWeapon"
	States
	{
	Spawn:
	XBOW Z -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("GlacialCrossbow", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaHunter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("GlacialCrossbow", 1)
	Stop
	}
}

Actor "MorningStar" : ClericWeapon //replaces CWeaponPiece3
{
	Inventory.PickupMessage "MORNING STAR"
   	Inventory.PickupSound "misc/w_pkup"
	Tag "Morning Star"
	Weapon.Ammotype1 "Mana1"
	Weapon.AmmoUse1 3
	Weapon.Ammotype2 "Mana1"
	Weapon.AmmoUse2 3
	Weapon.AmmoGive1 25
	Weapon.KickBack 0
	Weapon.SelectionOrder 400
	+WEAPON.AMMO_OPTIONAL
	+UNDROPPABLE
	+WEAPON.ALT_AMMO_OPTIONAL
	+THRUGHOST
States
{
	Select:
		MSTS E 0 A_JumpIfInventory("Mana1", 3, "SelectMana")
		MSTS E 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	SelectMana:
		MNST E 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	DeSelect:
		MSTS E 0 A_JumpIfInventory("Mana1", 3, "DeSelectMana")
		MSTS E 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	DeSelectMana:
		MNST E 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Ready:
		MSTS E 0 A_JumpIfInventory("Mana1", 3, "ReadyMana")
		MSTS E 1 A_WeaponReady
		Loop
	ReadyMana:
		MNST E 1 A_WeaponReady
		Loop
	Fire:
		MNST F 0 A_JumpIfNoAmmo("NoManaHit")
	   MNST F 3
	TNT1 A 0 A_PlayWeaponSound("weapons/morningstar/swing")
	MNST G 3
	MNST H 1 offset(30,32)
	MNST H 1 offset(28,34)
	MNST H 1 offset(26,36)
	MNST I 1 offset(36,32)
	MNST I 1 offset(30,36)
	MNST I 1 offset(24,40)
	MNST I 1 offset(15,44) A_CustomPunch(random(60,124)+(9*ACS_ExecuteWithResult(510,0,0,0))/2-45+(10*ACS_ExecuteWithResult(516,5,0,0)),1,0,"FlailPuff",144)
	MNST J 1 offset(26,32) 
	MNST J 1 offset(20,34) 
	MNST J 1 offset(15,37) 
	MNST K 3
	TNT1 A 3
	TNT1 A 0 A_Refire
	Goto Ready
	Spawn:
		MRNS A -1
		Stop
	NoManaHit:
	MSTS F 3
	TNT1 A 0 A_PlayWeaponSound("weapons/morningstar/swing")
	MSTS G 3
	MSTS H 1 offset(30,32)
	MSTS H 1 offset(28,34)
	MSTS H 1 offset(26,36)
	MSTS I 1 offset(36,32)
	MSTS I 1 offset(30,36)
	MSTS I 1 offset(24,40)
	MSTS I 1 offset(15,44) A_CustomPunch(random(30,62)+(3*ACS_ExecuteWithResult(510,0,0,0))-30+(10*ACS_ExecuteWithResult(516,5,0,0)),1,0,"FlailPuff2",128)
	MSTS J 1 offset(26,32) 
	MSTS J 1 offset(20,34) 
	MSTS J 1 offset(15,37) 
	MSTS K 3
	TNT1 A 3
	TNT1 A 0 A_Refire
	goto Ready
   Altfire:
	MNST F 0 A_JumpIfNoAmmo("NoManaHit2")
	MNST E 3
	MNST A 0 A_PlayWeaponSound("weapons/morningstar/swing")
	MNST A 1 offset(0,32)
	MNST A 1 offset(8,32)
	MNST A 1 offset(16,32)
	MNST B 2 offset(32,32)
	MNST B 2 offset(38,32)
	MNST C 2 offset(32,32) A_CustomPunch(random(80,140)+(9*ACS_ExecuteWithResult(510,0,0,0))/2-45+(10*ACS_ExecuteWithResult(516,5,0,0)),1,0,"FlailPuff",172)
	MNST C 2 offset(38,32)
	MNST D 4 offset(32,32)
	NULL A 12
	NULL A 0 A_Refire
	goto Ready
   NoManaHit2:
	MSTS E 3
	MSTS A 0 A_PlayWeaponSound("weapons/morningstar/swing")
	MSTS A 1 offset(0,32)
	MSTS A 1 offset(8,32)
	MSTS A 1 offset(16,32)
	MSTS B 2 offset(32,32)
	MSTS B 2 offset(38,32)
	MSTS C 2 offset(32,32) A_CustomPunch(random(40,70)+(3*ACS_ExecuteWithResult(510,0,0,0))-30+(10*ACS_ExecuteWithResult(516,5,0,0)),1,0,"FlailPuff2",144)
	MSTS C 2 offset(38,32)
	MSTS D 4 offset(32,32)
	NULL A 12
	NULL A 0 A_Refire
	goto Ready
   }
}

Actor FlailPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	+PUFFGETSOWNER
	Radius 8
	Height 12
	Renderstyle Add
	Damagetype "Fire"
	SeeSound "FighterHammerHitThing"
	AttackSound "FighterHammerHitWall"
  //ActiveSound "FighterHammerMiss"

	States
	{
	Spawn:
	Melee:
	CFCF Q 1 Bright A_NoGravity
	CFCF Q 0 Bright A_TakeFromTarget("Mana1", 3)
	CFCF QQQ 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF R 0 Bright A_Scream
	CFCF RRR 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF S 0 Bright A_Explode(35+ACS_ExecuteWithResult(556,0,0,0)-10+(5*ACS_ExecuteWithResult(599,14,0,0)), 64, 0)
	CFCF SSSS 1 Bright A_SpawnItemEx("FlailPuffParticleFXSpawner")
    CFCF T 3 Bright
    CFCF U 4 Bright
    CFCF W 3 Bright
    CFCF X 4 Bright
    CFCF Z 3 Bright
    Stop
	Crash:
	FHFX SS 0 A_SetTranslucent(0.6, 0)
	FHFX STUVW 4
	Stop
	}
}

actor FlailPuffParticleFXSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
    states
	{
	Spawn:
	Active:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(Args[1], "Circle")
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("FlailPuffParticleFX", random(-1, 1), random(-2, 2), random(-2, 2), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.4)*Random(-3, 3), 0 , SXF_ABSOLUTEMOMENTUM, Args[2])
		TNT1 A 0 A_SpawnItemEx ("FlailPuffParticleFX", random(-1, 1), random(-2, 2), random(-2, 2), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.4)*Random(-3, 3), 0 , SXF_ABSOLUTEMOMENTUM, Args[2]) 
		Stop
	Circle:
		TNT1 A 0
		TNT1 A 2 A_SpawnItemEx ("FlailPuffParticleFX", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), 0 , 129, Args[2]) 
		Loop
	Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR FlailPuffParticleFX
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.8
 Scale 0.7
 Gravity 0.25
 States
 {
  Spawn:
   CFCF QQRRSSTTUUVVWWXXZZ 1 Bright A_FadeOut(0.06)
   Stop
 }
}

Actor FlailPuff2
{
	+NOBLOCKMAP
	+NOGRAVITY
	+PUFFONACTORS
	+PUFFGETSOWNER
	Radius 8
	Height 12
	Alpha 0.6
	Renderstyle Translucent
	SeeSound "FighterHammerHitThing"
	AttackSound "FighterHammerHitWall"
  //ActiveSound "FighterHammerMiss"

	States
	{
	Spawn:
	FHFX STUVW 4
	Stop
	}
}

Actor LightbringerSpawnThing : CustomInventory replaces CWeaponPiece2
{
	Game Hexen
	SpawnID 34
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("LightbringerRGiver")
	TNT1 A 0 A_SpawnItem("BlunderbussRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor LightbringerRGiver : Randomspawner
{
	DropItem "LightbringerGiver"
}

Actor LightbringerGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "Lightbringer"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	LTBR A -1
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("LightBringer", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaCleric", 1, "PickupCleric")
	Fail
	TNT1 A 0
	Fail
	PickupCleric:
	TNT1 A 0 A_GiveInventory("Lightbringer", 1)
	Stop
	}
}

Actor BlunderbussRGiver : Randomspawner
{
	DropItem "BlunderbussGiver"
}

Actor BlunderbussGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "Blunderbuss"
	Inventory.RespawnTics 35
	Inventory.PickupSound "PickupWeapon"
	States
	{
	Spawn:
	BLUN Z -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("Blunderbuss", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaHunter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("Blunderbuss", 1)
	Stop
	}
}

Actor Lightbringer : ClericWeapon// replaces CWeaponPiece2
{
  Inventory.PickupSound "Misc/W_PkUp"
  Inventory.PickupMessage "Lightbringer"
  Obituary "%o was seared by %k"
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoGive1 25
  Weapon.AmmoUse1 5
  Weapon.AmmoType2 "Mana2"
  Weapon.AmmoUse2 2
  Weapon.KickBack 0
  Weapon.SelectionOrder 90
  +UNDROPPABLE
  States
  {
  Spawn:
    LTBR A -1
    Loop
  Select:
    LTBR M 1 A_Raise
	TNT1 M 0 A_Raise
    Loop
  Deselect:
    LTBR O 0 A_StopSoundEx("SoundSlot7")
    LTBR O 0 A_JumpIfInventory("Mana2", 5, 1)
    Goto Deselect2
    LTBR O 1 Bright A_Lower
	TNT1 M 0 A_Lower
	LTBR O 1 Bright A_Lower
	TNT1 M 0 A_Lower
	LTBR O 1 Bright A_Lower
	TNT1 M 0 A_Lower
	LTBR O 1 Bright A_Lower
    LTBR M 1 A_Lower
	TNT1 A 0 A_Lower
    Goto Deselect+7
  Ready:
    LTBR M 4 A_JumpIfInventory("Mana2", 5, 1)
    Goto Ready2
    LTBR N 0 A_PlaySoundEx("Weapons/Lightbringer/Recharge", "SoundSlot6", 0)
    LTBR NO 4 Bright
    LTBR B 0 Bright A_JumpIfInventory("Mana2", 5, 1)
    Goto Ready2
    LTBR B 0 Bright A_StopSoundEx("SoundSlot7")
    LTBR BBBBCCCCDDDDEEEE 1 Bright A_WeaponReady
    Goto Ready+4
  Fire:
    LTBR F 0 A_PlayWeaponSound("Weapons/Lightbringer/Fire") 
    LTBR F 3 Bright A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
    LTBR G 3 Bright Offset (0,34) A_FireCustomMissile("SunProjectile", 0, 1, 0, 0)
    LTBR H 3 Bright Offset (0,36)
    LTBR I 3 Bright Offset (0,32)
    LTBR BCD 3 Bright
    LTBR A 0 A_Refire
    LTBR I 0 A_JumpIfInventory("Mana2", 5, 1)
    Goto NoAmmo
    LTBR I 0
    Goto Ready+4
  NoAmmo:
    LTBR ON 4 Bright
    Goto Ready2
  Deselect2:
	TNT1 M 0 A_Lower
    LTBR M 1 A_Lower
    Loop
  Ready2:
    LTBR M 0 A_StopSoundEx("SoundSlot7")
    LTBR M 0 A_JumpIfInventory("Mana2", 5, "Ready")
    LTBR M 1 A_WeaponReady
    Loop
  AltFire:
    LTBR F 0 A_PlayWeaponSound("Weapons/Lightbringer/Fire") 
    LTBR G 3 Bright Offset (0,34) A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
	LTBR H 3 Bright Offset (0,36) A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
	LTBR I 3 Bright Offset (0,38) A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
  AltHold:
	//LTBR F 0 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 1, 0, 0)
    //LTBR F 1 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 1, 0, 0)
	LTBR F 2 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 1, 0, 0)
	LTBR G 2 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 0, 0, 0)
	LTBR H 2 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 0, 0, 0)
	LTBR I 2 Bright Offset (0,38) A_FireCustomMissile("SunProjectile2", 0, 0, 0, 0)
	LTBR A 0 A_Refire
    LTBR B 3 Bright Offset (0,36) A_StopSoundEx("SoundSlot7")
	LTBR C 3 Bright Offset (0,34)
	LTBR D 3 Bright Offset (0,32)
    LTBR I 0 A_JumpIfInventory("Mana2", 5, 1)
    Goto NoAmmo
    LTBR I 0
    Goto Ready+4
  }
}

Actor SunProjectile : FastProjectile
{
  Radius 16
  Height 8
  Damage (Random(120,160)+(4*ACS_ExecuteWithResult(556,0,0,0)-40))
  Alpha 1.0
  Scale 1.25
  Renderstyle Add
  BounceFactor 1.0
  Projectile
  +CanBounceWater
  +ForceXYBillboard
  Species "Player"
	+THRUSPECIES
  speed 120
  //Reactiontime 100
  SeeSound "Weapons/Lightbringer/Bounce"
  States
  {
  Spawn:
    SUNP AB 1 Bright A_SpawnItemEx("SunProjectileTrail", -2/10, 0, 0, 0, 0, 0, 0, 138)
    Loop
  Death:
    SUNP A 0 A_StopSoundEx("SoundSlot7")
    SUNP A 0 A_Stop
    SUNP CDEFGH 2 Bright
    Stop
  }
}

Actor SunProjectileTrail
{
  Height 2
  Radius 6
  Damage 0
  Speed 0.2
  RenderStyle Add
  Alpha 0.9
  Scale 1.5
  +ForceXYBillBoard
  +NoGravity
  +ClientsideOnly
  +NoInteraction
  +DropOff
  States
  {
  Spawn:
    SUNP A 2 Bright A_FadeOut(0.2)
    Loop
  }
}

Actor SunProjectile2
{
  Radius 4
  Height 6
  Damage (Random(1,4)*4+ACS_ExecuteWithResult(556,0,0,0)-10)
  Alpha 1.0
  Renderstyle Add
  Projectile
  +ForceXYBillboard
  Species "Player"
	+THRUSPECIES
  speed 55
  Scale 0.5
  //Reactiontime 100
  SeeSound "forcecube/fire"
  DeathSound "Weapons/Lightbringer/2HIT"
  States
  {
  Spawn:
    SUP2 AAAABBBBCCCCDDDD 1 Bright A_SpawnItemEx("SunProjectileTrail2",  -(MomX/1.2), -(MomY/1.2), (MomZ/1.2*-1), (MomX/1.2), (MomY/1.2), (MomZ/1.2), 0, 138)
    Loop
  Death:
    TNT1 A 0 A_StopSoundEx("SoundSlot7")
	SUP2 AAAABBBBCCCCDDDD 1 Bright A_FadeOut(0.05)
    Stop
  }
}

Actor SunProjectileTrail2
{
  Height 2
  Radius 6
  Damage 0
  RenderStyle Add
  Alpha 1
  Scale 0.5
  PROJECTILE
  +ForceXYBillBoard
  +NoGravity
  +ClientsideOnly
  +DropOff
  States
  {
  Spawn:
    SUP2 AAAABBBBCCCCDDDD 1 Bright A_FadeOut(0.05)
    Stop
  }
}

Actor FireStormSpawnThing : CustomInventory replaces CWeapFlame
{
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("FirestormRGiver")
	TNT1 A 0 A_SpawnItem("EtherealCrossbowRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor FirestormRGiver : Randomspawner
{
	DropItem "FirestormGiver"
}

Actor FireStormGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "FIRESTORM"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WCFM ABCDEFGH 4 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("FireStorm", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaCleric", 1, "PickupCleric")
	Fail
	TNT1 A 0
	Fail
	PickupCleric:
	TNT1 A 0 A_GiveInventory("FireStorm", 1)
	Stop
	}
}

Actor EtherealCrossbowRGiver : Randomspawner
{
	DropItem "EtherealCrossbowGiver"
}

Actor EtherealCrossbowGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "Ethereal Crossbow"
	Inventory.RespawnTics 35
	Inventory.PickupSound "PickupWeapon"
	States
	{
	Spawn:
	WBOW B -1
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("EtherealCrossbow", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaHunter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("EtherealCrossbow", 1)
	Stop
	}
}

Actor "Firestorm" : CWeapFlame// replaces CWeapFlame
{
	Weapon.KickBack 0
	Weapon.YAdjust 0
	+UNDROPPABLE
	Weapon.AmmoType2 "Mana2"
	Weapon.AmmoUse2 5
	Weapon.SelectionOrder 10
	States
	{
	Select:
		CFLM A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Deselect:
		CFLM A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Fire:
    CFLM A 2 Offset(0, 40)
    CFLM D 1 Offset(0, 45)
	CFLM D 1 Offset(0, 50)
	CFLM D 1 Offset(0, 43)
    CFLM D 1 Offset(0, 36)
    CFLM E 4 Bright
    CFLM F 4 Bright A_CFlameAttack
    CFLM E 4 Bright
    CFLM G 2 Offset(0, 40)
    CFLM G 2
    Goto Ready
	AltFire:
    CFLM A 2 Offset(0, 40)
    CFLM D 1 Offset(0, 45)
	CFLM D 1 Offset(0, 50)
	CFLM D 1 Offset(0, 43)
    CFLM D 1 Offset(0, 36)
    CFLM E 4 Bright A_PlayWeaponSound("MageStaffFire")
	CFLM F 0 Bright A_FireCustomMissile("FireStreak",0,1,10,0)
    CFLM F 4 Bright A_FireCustomMissile("FireStreak",0,0,-10,0)
    CFLM EFE 4 Bright
    CFLM G 2 Offset(0, 40)
    CFLM G 2
    Goto Ready
	}
}

Actor NewCFlameMissile : CFlameMissile Replaces CFlameMissile
{
Damage (Random(1,8)*8+ACS_ExecuteWithResult(556,0,0,0)-10)
Species "Player"
	+THRUSPECIES
States
  {
  Spawn:
    CFFX A 4 Bright
    CFFX A 1 A_CFlamePuff
    Goto Death+1
  Death:
    CFFX A 0 Bright A_CFlameMissile
    CFFX AAABBBCCC 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX DDDD 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX EEE 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX FFFF 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX GGG 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX HHHH 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX III 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX JJJJ 1 Bright A_SpawnItemEx("FirestormFXSpawner")
    CFFX K 3 Bright
    CFFX L 4 Bright
    CFFX M 3 Bright
    Stop
  }
}

ACTOR FireStreak
{
   Radius 5
   Height 12
	Mass 9
   Speed 40
   damage (Random(1,8)*5+ACS_ExecuteWithResult(556,0,0,0)-10)
   PROJECTILE
   RenderStyle Add
   Damagetype fire
   Species "Player"
	+THRUSPECIES
   +FLOORHUGGER
   ReactionTime 10
   DeathSound "minotaur/fx2hit"
   States
   {
   Spawn:
	FX13 A 0 Bright A_CountDown
    FX13 a 2 Bright A_SpawnItemEx("FireStreakTrail",random(-2,2),random(-2,2),0)
    Loop
   Death:
    FX13 I 2 Bright A_Explode(64+ACS_ExecuteWithResult(556,0,0,0)-10, 45, 0)
    FX13 J 2 Bright
    FX13 K 2 Bright
    FX13 L 2 Bright
    FX13 M 2 Bright
    stop
   }
}

ACTOR FireStreakTrail
{
   Speed 5
   Height 3
   Radius 3
   Mass 9
   Damage 0
   PROJECTILE
   RENDERSTYLE ADD
   +FLOORHUGGER
   +clientsideonly
   +NOINTERACTION
   States
   {
   Spawn:
    FX13 DC 2 Bright
    FX13 BCDE 3 Bright
    FX13 FGH 2 Bright
	Stop
   Death: 
      TNTA A 1
      Stop
   }
}

actor FirestormFXSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
    states
	{
	Spawn:
	Active:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(Args[1], "Circle")
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("FirestormParticleFX", 0, 0, random(0, 8), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.5)*Random(-3, 3), 0 , 129, Args[2])
		TNT1 A 0 A_SpawnItemEx ("FirestormParticleFX", 0, 0, random(0, 8), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.5)*Random(-3, 3), 0 , 129, Args[2]) 
		Stop
	Circle:
		TNT1 A 0
		TNT1 A 2 A_SpawnItemEx ("NewCFlameFloorParticleFX", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), 0 , 129, Args[2]) 
		Loop
	Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR FirestormParticleFX
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.8
 Scale 0.4
 Gravity 0.25
 States
 {
  Spawn:
   CFFX AABBCCDDEEFFGGHHIIJJ 1 Bright A_FadeOut(0.06)
   Stop
 }
}

actor NewCFlameFloorFXSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
    states
	{
	Spawn:
	Active:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(Args[1], "Circle")
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("NewCFlameFloorParticleFX", 0, 0, random(-2, -2), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.4)*Random(-3, 3), 0 , 129, Args[2])
		TNT1 A 0 A_SpawnItemEx ("NewCFlameFloorParticleFX", 0, 0, random(2, 2), (0.1)*Random(-3, 3), (0.5)*Random(-3, 3), (0.4)*Random(-3, 3), 0 , 129, Args[2]) 
		Stop
	Circle:
		TNT1 A 0
		TNT1 A 2 A_SpawnItemEx ("NewCFlameFloorParticleFX", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), 0 , 129, Args[2]) 
		Loop
	Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR NewCFlameFloorParticleFX
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.8
 Scale 0.5
 Gravity 0.25
 States
 {
  Spawn:
   CFFX NNNOOOOPPP 1 Bright A_FadeOut(0.06)
   Stop
 }
}

ACTOR NewCFlameFloor replaces CFlameFloor
{
  +NOBLOCKMAP
  +NOGRAVITY
  RenderStyle Add
  States
  {
  Spawn:
    CFFX NNNNN 1 Bright A_SpawnItemEx("NewCFlameFloorFXSpawner")
    CFFX OO 1 Bright A_SpawnItemEx("NewCFlameFloorFXSpawner")
	CFFX O 2 Bright
    CFFX P 3 Bright
    Stop
  }
}

Actor NewCircleFlame : CircleFlame Replaces CircleFlame
{
Damage (Random(1,8)*2+ACS_ExecuteWithResult(556,0,0,0)/2-5)
Species "Player"
+THRUSPECIES
 States
  {
  Death:
    CFCF QR 3 Bright
    CFCF S 3 Bright A_Explode(20+ACS_ExecuteWithResult(556,0,0,0)/2-5, 20, 0)
    CFCF TUVWXYZ 3 Bright
    Stop
  }
}

Actor WraithvergeSpawnThing : CustomInventory replaces CWeaponPiece1
{
	Game Hexen
	SpawnID 33
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("WraithVergeRGiver")
	TNT1 A 0 A_SpawnItem("HFCannonRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor WraithVergeRGiver : Randomspawner
{
	DropItem "WraithVergeGiver"
}

Actor WraithVergeGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "WRAITHVERGE"
	Inventory.PickupSound "pickup/four"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
	WVRG Z -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("WraithVerge", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaCleric", 1, "PickupCleric")
	Fail
	TNT1 A 0
	Fail
	PickupCleric:
	TNT1 A 0 A_GiveInventory("Wraithverge", 1)
	Stop
	}
}

Actor HFCannonRGiver : Randomspawner
{
	DropItem "HFCannonGiver"
}

Actor HFCannonGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "HELLFORGE CANNON"
	Inventory.RespawnTics 35
	Inventory.PickupSound "pickup/four"
	States
	{
	Spawn:
	WHFC A -1 BRIGHT
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("HellForgeCannon", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaHunter", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("HellForgeCannon", 1)
	Stop
	}
}

Actor "Wraithverge" : CWeapWraithverge// replaces CWeaponPiece1
{
	Weapon.KickBack 0
	Inventory.PickupSound "pickup/four"
	Inventory.PickupMessage "WRAITHVERGE"
	+UNDROPPABLE
	+WEAPON.ALT_AMMO_OPTIONAL
	States
	{
	Spawn:
		WVRG Z -1
		Stop
	Select:
		CHLY A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Deselect:
		CHLY A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	AltFire:
		CHLY A 0 Bright A_JumpIfInventory("Mana1", 10, 1)
		Goto Ready
		CHLY A 0 Bright A_JumpIfInventory("Mana2", 10, 1)
		Goto Ready
		CHLY AB 1 Bright Offset (0, 40)
		CHLY CD 2 Bright Offset (0, 43)
		TNT1 A 0 A_PlaySound("weapons/wraithverge/fire", CHAN_WEAPON, 0.5, 0)
		CHLY E 2 Bright Offset (0, 45)
		CHLY F 0 Bright Offset (0, 48) A_SetBlend("Gray",0.35,8)
		CHLY F 0 Bright A_TakeInventory("Mana1", 10)
		CHLY F 0 Bright A_TakeInventory("Mana2", 10)
		CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("HolyWVSpell1",0,0,0,0)
		CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("HolyWVSpell2",0,0,0,0)
		CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("HolyWVSpell3",0,0,0,0)
		CHLY F 6 Bright Offset (0, 48) A_FireCustomMissile("HolyWVSpell4",0,0,0,0)
		CHLY G 4 Bright Offset (0, 40)
		CHLY G 2 Offset (0, 36)
		Goto Ready
	}
}

Actor NewHolyMissile : HolyMissile Replaces HolyMissile
{
Damage (Random(1,8)*4+ACS_ExecuteWithResult(556,0,0,0)-10)
Renderstyle Add
Alpha 1
}

Actor NewHolySpirit : HolySpirit Replaces HolySpirit
{
Damage (Random(1,2)+(ACS_ExecuteWithResult(556))+ACS_ExecuteWithResult(599,6))
Renderstyle Add
Alpha 1
}

Actor NewHolyPuff : HolyPuff replaces HolyPuff
{
	Renderstyle Add
	Alpha 1
}

Actor NewHolyMissilePuff : HolyMissilePuff replaces HolyMissilePuff
{
	Renderstyle Add
	Alpha 1
}

ACTOR HolyWVSpell1
{
    Speed 35
	Damage (random(1,8)*5+(ACS_ExecuteWithResult(556))-10)
    Scale 0.35
    Radius 6
    Height 12
    RenderStyle Add
    Alpha 0.75
    PROJECTILE
    +SEEKERMISSILE
    +EXTREMEDEATH
    +DONTREFLECT
	Species "Player"
	+THRUSPECIES
    SeeSound "whiteballbsee"
    DeathSound "whiteballbdeth"
    States
    {
    Spawn:
	PSMM A 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM A 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM A 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM A 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM B 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM B 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM B 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM B 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM C 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM C 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM C 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM D 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM D 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM E 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM E 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM F 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM F 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Goto Spawn+33
    Death:
	PSMM G 0 A_Explode(64+(ACS_ExecuteWithResult(556))-10,128,0)
	PSMM GGHHIIJJKKLLMM 2 Bright A_FadeOut(0.05)
	Stop
    }
}

ACTOR HolyWVSpell2 : HolyWVSpell1
{
    States
    {
    Spawn:
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Goto Spawn+48
    }
}

ACTOR HolyWVSpell3 : HolyWVSpell1
{
    States
    {
    Spawn:
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Goto Spawn+36
    }
}

ACTOR HolyWVSpell4 : HolyWVSpell1
{
    States
    {
    Spawn:
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM A 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM B 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM C 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_BishopMissileWeave
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Goto Spawn+72
    }
}

Actor "SapphireWand" : MWeapWand replaces MWeapWand
{
	Tag "Sapphire Wand"
	Weapon.YAdjust 0
	+UNDROPPABLE
	States
	{
	Select:
		MWND A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
		Deselect:
		MWND A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Fire:
		MWND A 6
		MWND B 2 Bright Offset (0, 48) A_FireCustomMissile ("NewMageWandMissile")
		MWND B 2 Bright Offset (0, 46)
		MWND B 1 Bright Offset (0, 44)
		MWND B 1 Bright Offset (0, 42)
		MWND A 2 Offset (0, 40)
		MWND A 1 Offset (0, 39)
		MWND A 1 Offset (0, 38) A_ReFire
		MWND A 2 Offset (0, 36)
		Goto Ready
	AltFire:
		MWND A 6
		MWND B 2 Bright Offset (0, 48) A_FireCustomMissile ("NewMageWandMissile", random(-6,6))
		MWND A 2 Bright Offset (0, 46)
		MWND B 2 Bright Offset (0, 48) A_FireCustomMissile ("NewMageWandMissile", random(-6,6))
		MWND A 2 Bright Offset (0, 46)
		MWND B 2 Bright Offset (0, 48) A_FireCustomMissile ("NewMageWandMissile", random(-6,6))
		MWND B 2 Bright Offset (0, 46)
		MWND B 1 Bright Offset (0, 44)
		MWND B 1 Bright Offset (0, 42)
		MWND A 2 Offset (0, 40)
		MWND A 2 Offset (0, 39)
		MWND A 2 Offset (0, 38)
		MWND A 2 Offset (0, 36) A_ReFire
		Goto Ready
	}
}

Actor HeartOfYorickRGiver : Randomspawner
{
	DropItem "HeartOfYorickGiver"
}

Actor FrostShardRGiver : Randomspawner
{
	DropItem "FrostShardsGiver"
}

Actor FrostShardsGiverSpot : CustomInventory replaces MWeapFrost
{
	Game Hexen
	SpawnID 36
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("HeartOfYorickRGiver")
	TNT1 A 0 A_SpawnItem("FrostShardRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor HeartOfYorickGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "HEART OF YORICK"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	Scale 0.85
	States
	{
	Spawn:
    WHRT ABCDABCDABCDABCDABC 4 Bright
	WHRT D 4 Bright
	Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("HeartOfYorick", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaWarlock", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("HeartOfYorick", 1)
	Stop
	}
}

Actor FrostShardsGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "FROST SHARDS"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    WMCS ABC 8 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("FrostShards", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaMage", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("FrostShards", 1)
	Stop
	}
}

Actor "FrostShards" : MWeapFrost// replaces MWeapFrost
{
	Tag "Frost Shards"
	Weapon.KickBack 0
	Weapon.YAdjust 0
	Weapon.AmmoType2 "mana1"
	Weapon.AmmoUse2 6
	Weapon.SelectionOrder 10
	+UNDROPPABLE
	+THRUGHOST
	States
	{
	Select:
		CONE A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Deselect:
		CONE A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	AltFire:
		CONE B 3 //A_PlaySound("FrostFang/Fire2", CHAN_AUTO, 1.0, 0)
		CONE C 4
		AltHold:
		CONE D 3
		CONE E 5
		CONE E 3 A_PlaySound("FrostFang/Fire2", CHAN_WEAPON, 1.0, 0)
		CONE F 3 A_FireCustomMissile("IceComet")
		CONE G 3
		CONE A 13
		Goto Ready
	}
}

Actor FrostShardMelee
{
+NOBLOCKMAP
  +NOGRAVITY
  Speed 48
  Translation "0:32=186:202"
  +PUFFONACTORS
  Damage (5*ACS_ExecuteWithResult(598,0,0,0))
  +PUFFGETSOWNER
  RenderStyle Translucent
  SeeSound "MageShardsFire"
  Alpha 0.6
  States
  {
  Spawn:
	TNT1 A 2
  Death:
	TNT1 A 0 A_TakeFromTarget("Mana1", 3)
	Stop
  }
}

ACTOR IceComet
{
    PROJECTILE
    +NODAMAGETHRUST
    Speed 20
    Damage (random(1,8)*15+(acs_executewithresult(556)))
    Radius 10
    Height 14
    RenderStyle Add
	+THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
    DamageType "Ice"
    DeathSound "absolutezero/explode"
    States
    {
    Spawn:
	FX05 AAABBBCCC 1 Bright A_SpawnItemEx("IceCometTrail",0,0,0,0,0,0,0,128)
	Loop
    Death:
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,0,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,8,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,16,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,24,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,32,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,40,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,48,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,56,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,64,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,72,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,80,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,88,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,96,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,104,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,112,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,120,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,128,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,136,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,144,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,152,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,160,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,168,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,176,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,184,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,192,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,200,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,208,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,216,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,224,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,232,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,240,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,248,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,256,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,264,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,272,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,280,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,288,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,296,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,304,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,312,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,320,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,328,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,336,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,344,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",0,0,352,6,0)
	TNT1 DEFG 4
	Stop
    }
}

ACTOR iceCometTrail
{       
   	PROJECTILE
   	+NOCLIP
	+NOINTERACTION
    	Renderstyle ADD
	Alpha 0.6
	States
	{   
	Spawn:
	    TGTR ABCDEFGHI 4 Bright 
	    Stop
	}
}

Actor NewFrostMissile : FrostMissile replaces FrostMissile
{
	Damage (random(1,8)+(acs_executewithresult(556))/2-5)
	Renderstyle Add
	Damagetype "Ice"
	+THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
	States
  {
  Spawn:
    SHRD AA 1 Bright A_SpawnItemEx("FrostMissileFog", 0, 0, 1, 4, 0, Random(-0.5, 0.5), Random(-10, 10), 128)
	SHRD A 0 Bright A_ShedShard
    SHRD AAA 1 Bright A_SpawnItemEx("FrostMissileFog", 0, 0, 1, 4, 0, Random(-0.5, 0.5), Random(-10, 10), 128)
    SHRD BBB 1 Bright A_SpawnItemEx("FrostMissileFog", 0, 0, 1, 4, 0, Random(-0.5, 0.5), Random(-10, 10), 128)
    SHRD CCC 1 Bright A_SpawnItemEx("FrostMissileFog", 0, 0, 1, 4, 0, Random(-0.5, 0.5), Random(-10, 10), 128)
    Loop
	}
}

Actor FrostMissileFog
{
  Radius 1
  Height 1
  +NoGravity
  +NoClip
  +CLIENTSIDEONLY
  RenderStyle Add
  Alpha 0.2
  XScale 0.4
  YScale 0.2
  States
  {
  Spawn:
    FFFG A 4 A_FadeOut(0.1)
    Loop
  }
}

actor ZeroKExplosion
{
    Radius 6
    Height 8
    Speed 5
    Damage ((acs_executewithresult(556))/10)
    PROJECTILE
    RENDERSTYLE ADD
    +Ripper
	+BLOODLESSIMPACT
	+THRUGHOST
	+WINDTHRUST
	Damagetype Ice
    States
    {
    Spawn:
    	TGBL ABCDEFGHIJK 2 Bright
        stop
    }
}

ACTOR NewMageWandMissile : MageWandMissile Replaces MageWandMissile
{
	Radius 1
	Height 1
	Renderstyle Add
	Damage (random(1,8)*2+acs_executewithresult(556)/2-5)
	Species "Player"
	+THRUSPECIES
}

Actor NewMageWandSmoke : MageWandSmoke Replaces MageWandSmoke
{
	+NOBLOCKMAP
	  +NOGRAVITY
	  +SHADOW
	  +NOTELEPORT
	  +CANNOTPUSH
	  +NODAMAGETHRUST
	  +CLIENTSIDEONLY
	  +NOINTERACTION
	RenderStyle Add
	Alpha 0.6
	Scale 0.8
	States
	{
	Spawn:
		MWND C 0
		MWND C 0 A_Jump (80, "Spawn1", "Spawn2")
	Spawn1:
		MWND CCCC 1 A_FadeOut(0.05)
	Spawn2:
		MWND DDDD 1 A_FadeOut(0.05)
		Goto Spawn1
	}
}

Actor JadeWandGiverSpot : CustomInventory replaces MWeaponPiece3
{
	Game Hexen
	SpawnID 39
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("NecroGauntletsRGiver")
	TNT1 A 0 A_SpawnItem("JadeWandRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor NecroGauntletsRGiver : Randomspawner
{
	DropItem "NecroGauntletsGiver"
}

Actor JadeWandRGiver : Randomspawner
{
	DropItem "JadeWandGiver"
}

Actor NecroGauntletsGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "GAUNTLETS OF THE NECROMANCER"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    WGNT A -1
    Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("GauntletsOfTheNecromancer", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaWarlock", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("GauntletsOfTheNecromancer", 1)
	Stop
	}
}

Actor JadeWandGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "JADE WAND"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    JADE C -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("JadeWand", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaMage", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("JadeWand", 1)
	Stop
	}
}

ACTOR JadeWand : MageWeapon //replaces MWeaponPiece3
{
   //$Category Weapons
   Inventory.PickupMessage "JADE WAND"
   Weapon.AmmoType1 "Mana1"
   Weapon.AmmoGive1 25
   Weapon.SelectionOrder 1400
   Weapon.AmmoUse1 2
   Weapon.KickBack 0
   Weapon.AmmoType2 "Mana1"
   Weapon.AmmoUse2 1
   +UNDROPPABLE
   Tag "Jade Wand"
   AttackSound "weapons/jadewand"
   States
   {
   Spawn:
      JADE C -1 Bright
      Loop
   Ready:
      JADE A 1 A_WeaponReady
      Loop
   Deselect:
      JADE A 1 A_Lower
	  TNT1 A 0 A_Lower
      Loop
   Select:
      JADE A 1 A_Raise
	  TNT1 A 0 A_Raise
      Loop
   Fire:
      JADE A 2 Bright
	  JADE B 0 A_PlaySoundEx("weapons/jadefire","auto")
      JADE B 2 Bright Offset(0, 48) A_FireBullets (6, 4.25, 5, acs_executewithresult(603)/2,"JadePuff")
      JADE B 2 Offset(0, 40)
	  JADE B 1 Offset(0, 38)
	  JADE B 1 Offset(0, 37)
	  JADE A 3 Offset(0, 36)
      JADE A 0 A_Refire
      Goto Ready
   AltFire:
      JADE A 2 Bright Offset(0, 36)
	  JADE B 0 A_PlaySoundEx("weapons/jadefire","auto")
      JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart")
	  JADE A 1 Bright Offset(0, 40)
	  JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart", random(-2,2),0)
	  JADE A 1 Bright Offset(0, 40)
	  JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart", random(-4,4),0)
	  JADE A 1 Bright Offset(0, 40)
	  JADE A 3 Offset(0, 36) A_Refire
	  Goto Ready
   AltHold:
	  JADE B 0 A_PlaySoundEx("weapons/jadefire","auto")
      JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart", random(-8,8))
	  JADE A 1 Bright Offset(0, 40)
	  JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart", random(-8,8),0)
	  JADE A 1 Bright Offset(0, 40)
	  JADE B 1 Bright Offset(0, 40) A_FireCustomMissile("JadeDart", random(-8,8),0)
	  JADE A 1 Bright Offset(0, 40)
	  JADE A 3 Offset(0, 36) A_Refire
      Goto Ready
   }
}

ACTOR JadeDart
{
  Speed 35
  Radius 4
  Height 4
  SeeSound "weapons/jadedart"
  Damage (random(1,8) + ACS_ExecuteWithResult(556) - 10)
  PROJECTILE
  Species "Player"
	+THRUSPECIES
  +PAINLESS
  Renderstyle Add
  States
  {
  Spawn:
    JWPR NOP 3 Bright
    Loop
  }
}

actor JadePuff
{
  renderstyle Add
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +PAINLESS
  Scale .5
  states
  {
  Spawn:
    IDSE AABBCCDD 1 bright A_FadeOut(0.05)
    stop
  }
}

Actor ArcOfDeathGiverSpot : CustomInventory replaces MWeapLightning
{
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("LichStaffRGiver")
	TNT1 A 0 A_SpawnItem("ArcOfDeathRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor LichStaffRGiver : Randomspawner
{
	DropItem "LichStaffGiver"
}

Actor ArcOfDeathRGiver : Randomspawner
{
	DropItem "ArcOfDeathGiver"
}

Actor LichStaffGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "LICH STAFF"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    WLIC A -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("LichStaff", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaWarlock", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("LichStaff", 1)
	Stop
	}
}

Actor ArcOfDeathGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "ARC OF DEATH"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    WMLG ABCDEFGH 4 Bright
     Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("ArcOfDeath", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaMage", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("ArcOfDeath", 1)
	Stop
	}
}


ACTOR "ArcOfDeath" : MWeapLightning// replaces MWeapLightning
{
	Tag "Arc Of Death"
  Game Hexen
  +NOGRAVITY
  Weapon.SelectionOrder 5
  Weapon.AmmoUse1 5
  Weapon.AmmoGive1 25
  Weapon.KickBack 0
  Weapon.YAdjust 0
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoUse2 6
  Weapon.AmmoType2 "Mana2"
  +UNDROPPABLE
  Inventory.PickupMessage "$TXT_WEAPON_M3" // "ARC OF DEATH"

  States
  {
  Select:
     MLNG A 1 Bright A_Raise
	 TNT1 A 0 Bright A_Raise
     Loop
  Deselect:
     MLNG A 1 Bright A_Lower
	 TNT1 A 0 Bright A_Lower
     Loop
  Ready:
     MLNG AAAAA 1 Bright A_WeaponReady
     MLNG A 1 Bright //A_LightningReady
     MLNG BBBBBB 1 Bright A_WeaponReady
     MLNG CCCCC 1 Bright A_WeaponReady
     MLNG C 1 Bright //A_LightningReady
     MLNG BBBBBB 1 Bright A_WeaponReady
     Loop
  Fire:
     MLNG DE 3 Bright
	 MLNG F 4 Bright
	 MLNG F 0 A_JumpIfInventory("EnergyAbsorbing",1,"FirePoweredUp1")
     MLNG F 0 Bright A_MLightningAttack
		//MLNG F 0 acs_execute(605)
     MLNG G 4 Bright
     MLNG HI 3 Bright
     MLNG I 6 Bright Offset (0, 199)
     MLNG C 2 Bright Offset (0, 55)
     MLNG B 2 Bright Offset (0, 50)
     MLNG B 2 Bright Offset (0, 45)
     MLNG B 2 Bright Offset (0, 40)
     Goto Ready
  FirePoweredUp1:
     MLNG F 0 A_JumpIfInventory("EnergyAbsorbing",32,"FirePoweredUp2")
	 MLNG F 0 Bright A_MLightningAttack
		//MLNG F 0 acs_execute(605)
		MLNG F 0 Bright A_MLightningAttack
	 MLNG G 4 Bright A_TakeInventory("EnergyAbsorbing",6)
     MLNG HI 3 Bright
     MLNG I 6 Bright Offset (0, 199)
     MLNG C 2 Bright Offset (0, 55)
     MLNG B 2 Bright Offset (0, 50)
     MLNG B 2 Bright Offset (0, 45)
     MLNG B 2 Bright Offset (0, 40)
  Goto Ready
  FirePoweredUp2:
     MLNG F 0 A_JumpIfInventory("EnergyAbsorbing",64,"FirePoweredUp3")
	 //MLNG F 0 acs_execute(604)
		MLNG F 0 Bright A_MLightningAttack
		//MLNG F 0 acs_execute(605)
		MLNG F 0 Bright A_MLightningAttack
		//MLNG F 0 acs_execute(604)
		MLNG F 0 Bright A_MLightningAttack
	 MLNG G 4 Bright A_TakeInventory("EnergyAbsorbing",6)
     MLNG HI 3 Bright
     MLNG I 6 Bright Offset (0, 199)
     MLNG C 2 Bright Offset (0, 55)
     MLNG B 2 Bright Offset (0, 50)
     MLNG B 2 Bright Offset (0, 45)
     MLNG B 2 Bright Offset (0, 40)
  Goto Ready
  FirePoweredUp3:
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,1,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
     //MLNG F 0 A_JumpIfInventory("EnergyAbsorbing",5,"FirePoweredUp2")
	 //MLNG F 0 A_FireCustomMissile("NewLightningCeiling",0,1,0,0)//A_MLightningAttack
	 //MLNG F 0 A_FireCustomMissile("NewLightningFloor",0,0,0,0)
	 MLNG F 0 Bright A_MLightningAttack
		MLNG FF 0 Bright A_MLightningAttack
	  MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	  MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG F 2 A_FireCustomMissile("ArchEffects",0,0,0,0)
	 MLNG G 4 Bright A_TakeInventory("EnergyAbsorbing",12)
     MLNG HI 3 Bright
     MLNG I 6 Bright Offset (0, 199)
     MLNG C 2 Bright Offset (0, 55)
     MLNG B 2 Bright Offset (0, 50)
     MLNG B 2 Bright Offset (0, 45)
     MLNG B 2 Bright Offset (0, 40)
	 Goto Ready
	 AltFire:
	MLNG DE 3 Bright
	MLNG E 0 Bright A_PlaySound("MageLightningFire", CHAN_WEAPON, 1.0, 0)
	MLNG F 4 Bright A_FireCustomMissile("ArcShot")
	MLNG G 4 Bright
	MLNG HI 3 Bright
	MLNG I 6 Bright Offset (0, 199)
	TNT1 A 6
	MLNG C 2 Bright Offset (0, 55)
	MLNG B 2 Bright Offset (0, 50)
	MLNG B 2 Bright Offset (0, 45)
	MLNG B 2 Bright Offset (0, 40)
	Goto Ready
  }
}

actor ArcShot
{
  Damage (random(1,8)*12+ACS_ExecuteWithResult(556)-10)
  RenderStyle Add
  alpha 0.5
  height 10
  radius 10
  Decal none
  Speed 30
  PROJECTILE
  Species "Player"
	+THRUSPECIES
  States
  {
  Spawn: 
    MRS2 A 1 bright A_SpawnItem("TeslaTail1")
	MRS2 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra3",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	MRS2 B 1 bright A_SpawnItem("TeslaExtra3")
	MRS2 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTail1",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
    Loop
	death:
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra3",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTail",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra3",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTail",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra3",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTail",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 1 bright A_Explode(4+ACS_ExecuteWithResult(556)/3-10/3,64,0)
	Stop
  }
}
Actor TeslaExtra
{
	Projectile
	Damage 0
	+RIPPER
	+BLOODLESSIMPACT
	+NOINTERACTION
	+CLIENTSIDEONLY
	+NOCLIP
	Speed 0
	Radius 1
	Height 1
	Scale 0.2
	RenderStyle Add
	States
	{
	Spawn:
		ZAPR ABC 1 Bright
		NULL A 0 A_Jump(160,1)
		Loop
		ZAPR ABC 1 Bright
		ZAPR DE 1 Bright A_FadeOut
		Wait
	Death:
		NULL A 1
		Stop
	}
}
Actor Teslatail
{
	Projectile
	Damage 0
	+RIPPER
	+BLOODLESSIMPACT
	+NOINTERACTION
	+CLIENTSIDEONLY
	+NOCLIP
	Speed 0
	Radius 1
	Height 1
	Scale 0.05
	RenderStyle Add
	States
	{
	Spawn:
		MRS2 AB 1 bright A_FadeOut
		wait
	}
}
Actor TeslaExtra1 : TeslaExtra
{
Scale 0.1
}
Actor TeslaExtra3 : TeslaExtra
{
Scale 0.6
}
Actor Teslatail1 : Teslatail
{
Scale 0.3
}

ACTOR ArchEffects
{
  Speed 40
  Radius 12
  Height 10
  Damage (4+ACS_ExecuteWithResult(556)-10)
  Species "Player"
  DamageType "Lightning"
  RenderStyle Add
  Projectile
  +THRUSPECIES
  +SEEKERMISSILE
  //DeathSound "MageLightningFire"//MageLightningFire       lite2
  States
  {
  Spawn:
      DLIT ABC 1 Bright A_SeekerMissile(35,40)
      Loop
   Death:
      DLIT DEFGHIJKLMNO 1 Bright
      Stop
  }
}

Actor NewLightningFloor : LightningFloor replaces LightningFloor
{
Damage (Random(1,8)*8+ACS_ExecuteWithResult(556)/2-5)
Species "Player"
	+THRUSPECIES
}

Actor NewLightningCeiling : LightningCeiling replaces LightningCeiling
{
Damage (Random(1,8)*8+ACS_ExecuteWithResult(556)/2-5)
Species "Player"
	+THRUSPECIES
}

Actor NewLightningZap : LightningZap Replaces LightningZap
{
Damage (Random(1,8)*2+ACS_ExecuteWithResult(556)/2-5)
Species "Player"
	+THRUSPECIES
}

Actor SkullStaffGiverSpot : CustomInventory replaces MWeaponPiece2
{
	Game Hexen
	SpawnID 38
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("DarkPhoenixRodRGiver")
	TNT1 A 0 A_SpawnItem("SkullstaffRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor DarkPhoenixRodRGiver : Randomspawner
{
	DropItem "DarkPhoenixRodGiver"
}

Actor DarkPhoenixRodGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "DARK PHOENIX ROD"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    WPHX A -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("DarkPhoenixRod", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaWarlock", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("DarkPhoenixRod", 1)
	Stop
	}
}

Actor SkullstaffRGiver : Randomspawner
{
	DropItem "SkullstaffGiver"
}

Actor SkullstaffGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "SKULL STAFF"
	Inventory.PickupSound "PickupWeapon"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    SKST A -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("SkullStaff", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaMage", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("Skullstaff", 1)
	Stop
	}
}

ACTOR "Skullstaff" : MageWeapon //replaces MWeaponPiece2
{
	Tag "Skull Staff"
  //$Category Pickups
  Scale .75
  Weapon.SelectionOrder 17
  Weapon.KickBack 0
  Weapon.YAdjust 0
  Weapon.AmmoUse1 2
  Weapon.AmmoGive1 25
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoUse2 7
  Weapon.AmmoType2 "Mana2"
  +UNDROPPABLE
  Inventory.PickupMessage "SKULLSTAFF"
  States
  {
  Select:
    SKST B 1 A_Raise
	TNT1 B 0 A_Raise
    Loop
  Deselect:
    SKST B 1 A_Lower
	TNT1 A 0 A_Lower
    Loop
  Ready:
    SKST B 1 A_WeaponReady
    Loop
  Fire:
    SKST B 2 Bright
  Hold:
    SKST C 2 Bright
    SKST D 2 Bright
    SKST E 2 Bright
    SKST F 2 Bright A_FireCustomMissile ("SkullStafProj")
    SKST E 2 Bright A_ReFire
    Goto Ready
  AltFire:
    SKST G 2 Bright
    SKST H 2 Bright
    SKST I 3 Bright
    SKST J 2 Bright A_FireCustomMissile ("SkullStafProjRed")
	SKST I 2 Bright
    SKST H 3 Bright
    SKST G 2 Bright
    SKST B 2 Bright A_ReFire
    Goto Ready
  SPAWN:
    SKST A -1 Bright
    Stop
  }
}

ACTOR SkullStafProj
{
  Health 140
  Radius 12
  Height 8
  Speed 40
  Damage (random(1,8)*8+(2*acs_executewithresult(556)-20))
  Scale .75
  Projectile
  RenderStyle Add
  +SEEKERMISSILE
  Species "Player"
	+THRUSPECIES
  SeeSound "weapons/skulprojshot"
  DeathSound "weapons/skulprojdeath"
  States
  {
  Spawn:
	SKPJ A 0 Bright
    SKPJ AAA 1 BRIGHT A_CustomMissile("SpikeLightSpawner",0,0,0,4)//A_SpawnItemEx("SkullStaffTrailer")
	SKPJ B 0 Bright A_SeekerMissile(30, 45)
    SKPJ BBB 1 BRIGHT A_CustomMissile("SpikeLightSpawner",0,0,0,4)//A_SpawnItemEx("SkullStaffTrailer")
    SKPJ CCC 1 BRIGHT A_CustomMissile("SpikeLightSpawner",0,0,0,4)//A_SpawnItemEx("SkullStaffTrailer")
	SKPJ D 0 Bright A_SeekerMissile(30, 45)
    SKPJ DDD 1 BRIGHT A_CustomMissile("SpikeLightSpawner",0,0,0,4)//A_SpawnItemEx("SkullStaffTrailer")
    Loop
  Death:
    SKPJ EFGHIJ 3 BRIGHT
    SKPJ K -1
    Stop
  }
}

Actor SkullStafProjRed : HornRodFX2
{
SeeSound "weapons/hornrodpowshoot"
+SPAWNSOUNDSOURCE
Species "Player"
	+THRUSPECIES
DeathSound "DemonMissileExplode"
Speed 35
Damage (random(1,8)*10+(acs_executewithresult(556)-10))
States
  {
  Spawn:
    FX00 CCC 1 Bright A_CustomMissile("RedLightSpawner",0,0,0,4)
    FX00 D 0 Bright A_SeekerMissile(10, 30)
    FX00 DDDEEE 1 Bright A_CustomMissile("RedLightSpawner",0,0,0,4)
    FX00 F 0 Bright A_SeekerMissile(10, 30)
	FX00 FFF 1 Bright A_CustomMissile("RedLightSpawner",0,0,0,4)
    Loop
  Death:
    FX00 H 5 Bright A_AddPlayerRain
    FX00 I 5 Bright
    FX00 J 4 Bright
    FX00 KLM 3 Bright
    FX00 G 1 A_HideInCeiling
    FX00 G 1 A_SkullRodStorm
    Wait
  }
}

ACTOR SkullRainPillar replaces RainPillar
{
  Radius 5
  Height 12
  Speed 12
  Damage (random(1,8)*5+(acs_executewithresult(556))/4-10/4)
  Mass 5
  Projectile
  -ACTIVATEPCROSS
  -ACTIVATEIMPACT
  Species "Player"
	+THRUSPECIES
  RenderStyle Add
  Obituary "$OB_MPPSKULLROD"
  States
  {
  Spawn:
    FX22 A -1 Bright
    Stop
  Death:
    FX22 B 0 Bright A_CheckFloor("NotFloor")
	FX22 B 0 Bright A_Jump(38, "Disappear")
	FX22 GHI 4 Bright
    Stop
  NotFloor:
    FX22 B 0 Bright A_Jump(38, "Disappear")
    FX22 BCDEF 4 Bright
    Stop
  Disappear:
	TNT1 A 1 Bright
	Stop
  }
}

actor SpikeLightSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
        states
        {
        Spawn:
           Active:
        	TNT1 A 0
        	TNT1 A 0 A_JumpIf(Args[1], "Circle")
        	TNT1 A 2
        	TNT1 A 0 A_SpawnItemEx ("SpikeLight", 0, random(-4, 4), random(-3, 3), 0, (0.1)*Random(-3, 3), (0.1)*Random(-3, 3), random(0,360), 129, Args[2])
                TNT1 A 0 A_SpawnItemEx ("SpikeLight", 0, random(-4, 4), random(-3, 3), 0, (0.1)*Random(-3, 3), (0.1)*Random(-3, 3), random(0,360), 129, Args[2]) 
        	Stop
           Circle:
        	TNT1 A 0
        	TNT1 A 2 A_SpawnItemEx ("SpikeLight", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), Random(0, 360), 129, Args[2]) 
        	Loop
           Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR SpikeLight
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.01
 Scale 0.06
 Gravity 0.25
 States
 {
  Spawn:
   SKLT AAAA 1 Bright A_FadeIn(0.25)
   TNT1 A 0 A_Jump(80,8)
   TNT1 A 0 A_Jump(80,6)
   TNT1 A 0 A_Jump(80,4)   
   TNT1 A 0 A_Jump(80,2)   
   SKLT AAAAA 4 Bright
   SKLT AAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
   Stop
 }
}

actor RedLightSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
        states
        {
        Spawn:
           Active:
        	TNT1 A 0
        	TNT1 A 0 A_JumpIf(Args[1], "Circle")
        	TNT1 A 2
        	TNT1 A 0 A_SpawnItemEx ("RedSpikeLight", 0, random(-8, 8), random(-8, 8), 0, (0.3)*Random(-3, 3), (0.3)*Random(-3, 3), random(0,360), 129, Args[2])
                TNT1 A 0 A_SpawnItemEx ("RedSpikeLight", 0, random(-8, 8), random(-8, 8), 0, (0.3)*Random(-3, 3), (0.3)*Random(-3, 3), random(0,360), 129, Args[2]) 
        	Stop
           Circle:
        	TNT1 A 0
        	TNT1 A 2 A_SpawnItemEx ("SpikeLight", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), Random(0, 360), 129, Args[2]) 
        	Loop
           Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR RedSpikeLight
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.01
 Scale 0.1
 Gravity 0.25
 States
 {
  Spawn:
   SKLT BBBB 1 Bright A_FadeIn(0.25)
   TNT1 A 0 A_Jump(80,8)
   TNT1 A 0 A_Jump(80,6)
   TNT1 A 0 A_Jump(80,4)   
   TNT1 A 0 A_Jump(80,2)   
   SKLT BBBBB 4 Bright
   SKLT BBBBBBBBBBBBBBBBBBBB 1 Bright A_FadeOut(0.06)
   Stop
 }
}


actor SkullStaffTrailer
{
+CLIENTSIDEONLY
Speed		1
Damage		0
Radius 8
Height 6
PROJECTILE
Renderstyle Add
alpha	0.8
scale 0.75
States
{
Spawn:
SKPJ AAABBBCCCDDD 1 A_Fadeout
Stop
}
}

Actor BloodScourgeGiverRGiver : CustomInventory replaces MWeaponPiece1
{
	Game Hexen
	SpawnID 37
	Inventory.RespawnTics 0x7FFFFFFF
	+INVENTORY.QUIET
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("RavenStaffGiverRGiver")
	TNT1 A 0 A_SpawnItem("BloodScourgeRGiver")
	TNT1 A -1
	Stop
	Pickup:
	TNT1 A 0 A_GiveInventory("DummiestItemEvar")
	Stop
	}
}

Actor RavenStaffGiverRGiver : Randomspawner
{
	DropItem "RavenStaffGiver"
}

Actor RavenStaffGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "RAVEN STAFF"
	Inventory.PickupSound "Pickup/four"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    RVNS A -1 Bright
    Loop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("RavenStaff", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaWarlock", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("RavenStaff", 1)
	Stop
	}
}

Actor BloodScourgeRGiver : Randomspawner
{
	DropItem "BloodScourgeGiver"
}

Actor BloodScourgeGiver : CustomInventory
{
	Inventory.MaxAmount 0
	+INVENTORY.AUTOACTIVATE
	Inventory.PickupMessage "BLOODSCOURGE"
	Inventory.PickupSound "Pickup/four"
	Inventory.RespawnTics 35
	States
	{
	Spawn:
    BDSC Z -1 BRIGHT
	Stop
	Pickup:
	TNT1 A 0 A_JumpIf(acs_executewithresult(600,0,0,0), 2)
	TNT1 A 0 A_JumpIfInventory("BloodScourge", 1, 2)
	TNT1 A 0 A_JumpIfInventory("ImaMage", 1, "PickupWeapon")
	Fail
	TNT1 A 0
	Fail
	PickupWeapon:
	TNT1 A 0 A_GiveInventory("Bloodscourge", 1)
	Stop
	}
}


Actor BloodScourge : MWeapBloodScourge// replaces MWeaponPiece1
{
	Tag "BloodScourge"
	Weapon.YAdjust 0
	Weapon.KickBack 0
	+UNDROPPABLE
	+WEAPON.ALT_AMMO_OPTIONAL
	Inventory.PickupSound "pickup/four"
	Inventory.PickupMessage "BLOODSCOURGE"
	States
	{
	Select:
		MSTF A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Deselect:
		MSTF A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Spawn:
		BDSC Z -1
		Stop
	Ready:
		MSTF A 0 A_StopSound(CHAN_WEAPON)
		MSTF AAAAAABBBBBBCCCCCCDDDDDDEEEEEEFFFFF 1 A_WeaponReady
		Loop
	AltFire:
		MSTF H 0 A_JumpIfInventory("Mana1", 2, 1)
		Goto Ready
		MSTF H 0 A_JumpIfInventory("Mana2", 2, 1)
		Goto Ready
		MSTF G 4 Offset (0, 40)
    AltHold:
		MSTF H 0 A_JumpIfInventory("Mana1", 2, 1)
		Goto Ready
		MSTF H 0 A_JumpIfInventory("Mana2", 2, 1)
		Goto Ready
		MSTF H 0 Bright A_PlaySound("weapons/bloodscourge/flame", CHAN_WEAPON, 1.0, 0)
		MSTF H 0 Bright A_TakeInventory("Mana1", 2)
		MSTF H 0 Bright A_TakeInventory("Mana2", 2)
		MSTF H 2 Bright Offset (0, 48) A_FireCustomMissile("MageStaffFlame",random(-3,3),0,0,4)
		MSTF HHHHH 2 Bright Offset (0, 48) A_FireCustomMissile("MageStaffFlame",random(-3,3),0,0,4)
		MSTF I 0 Offset (0, 48) A_ReFire
		MSTF I 4 Offset (0, 48) A_StopSound(CHAN_WEAPON)
		MSTF I 1 Offset (0, 40)
		MSTF J 5 Offset (0, 36)
		Goto Ready
	}
}

ACTOR MageStaffFlame
{
  Radius 5
  Height 8
  Speed 19
  Damage (random(1,8)*3+ACS_ExecuteWithResult(556)-10)
  Projectile
  +DOOMBOUNCE
  +EXPLODEONWATER
  Species "Player"
	+THRUSPECIES
  BounceFactor 1.0
  XScale 0.85
  RenderStyle Add
  Damagetype "Fire"
  States
  {
  Spawn:
	FX06 A 0
	FX06 A 0 Bright ThrustThingZ(0,random(-3,3),0,1)
    FX06 ABC 2 Bright A_FadeOut
    Loop
  Death:
    FX06 DEFG 5 Bright
    Stop
  }
}

Actor NewMageStaffFX2 : MageStaffFX2 Replaces MageStaffFX2
{
Damage (Random(1,8)*4+ACS_ExecuteWithResult(556)-10)
Species "Player"
	+THRUSPECIES
States
  {
  Spawn:
	MSP2 A 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 A 1 Bright A_MStaffTrack
	MSP2 A 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 A 1 Bright
	MSP2 B 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 B 1 Bright A_MStaffTrack
	MSP2 B 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 B 1 Bright
	MSP2 C 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 C 1 Bright A_MStaffTrack
	MSP2 C 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 C 1 Bright
	MSP2 D 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 D 1 Bright A_MStaffTrack
	MSP2 D 0 Bright A_CustomMissile("BloodscourgeFXSpawner",0,0,0,4)
    MSP2 D 1 Bright
    Loop
  Death:
	MSP2 E 0 Bright A_ChangeFlag("NODAMAGETHRUST", 1)
    MSP2 E 4 Bright A_SetTranslucent(1,1)
    MSP2 F 5 Bright A_Explode(80+(4*ACS_ExecuteWithResult(556))-40, 192, 0)
    MSP2 GH 5 Bright
    MSP2 I 4 Bright
    Stop
}
}

actor BloodscourgeFXSpawner
{
	+NoBlockMap +NoGravity +NoSector +NoInteraction +NoClip -Solid +CLIENTSIDEONLY
        states
        {
        Spawn:
           Active:
        	TNT1 A 0
        	TNT1 A 0 A_JumpIf(Args[1], "Circle")
        	TNT1 A 2
        	TNT1 A 0 A_SpawnItemEx ("BloodScourgeParticleFX", 0, random(-6, 6), random(-6, 6), 0, (0.5)*Random(-4, 4), (0.5)*Random(-4, 4), random(0,360), 129, Args[2])
            //    TNT1 A 0 A_SpawnItemEx ("BloodScourgeParticleFX", 0, random(-6, 6), random(-6, 6), 0, (0.5)*Random(-3, 3), (0.5)*Random(-3, 3), random(0,360), 129, Args[2]) 
        	Stop
           Circle:
        	TNT1 A 0
        	TNT1 A 2 A_SpawnItemEx ("BloodScourgeParticleFX", random(-Args[0], Args[0]), 0, random(0, 8), (0.1)*Random(1, 3), 0, (0.1)*Random(1, 10), Random(0, 360), 129, Args[2]) 
        	Loop
           Inactive:
		TNT1 A 1
		Loop
        }     
        
}

ACTOR BloodScourgeParticleFX
{
 +Missile
 +NoBlockmap
 +NoInteraction
 -Solid
 +CLIENTSIDEONLY
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.5
 Scale 0.35
 Gravity 0.25
 States
 {
  Spawn:
   MSP2 AABBCCDD 1 Bright A_FadeOut(0.02)
   Loop
 }
}

//Hunter Weaponry

ACTOR Machete : Weapon   //At least I don't have to compensate for reloading. :P
{
   +NOAUTOFIRE
   Weapon.SelectionOrder 1001
   Inventory.PickupMessage "Machete"
   Weapon.Kickback 0
   Weapon.YAdjust 0
   +UNDROPPABLE
   +THRUGHOST
   AttackSound "weapons/knifehit"
   Scale 0.5
   States
   {
   Spawn:
      SHET A -1
      Loop
   Ready:
	  //KNFG A 0 A_JumpIfInventory("BlockingItem", 1, "Block")
	  KNF6 A 0 A_UnSetReflectiveInvulnerable
	  KNF6 A 0 A_UnSetInvulnerable
      KNFG A 1 A_WeaponReady
      Goto Ready
   Deselect:
      KNFX A 0 A_TakeInventory("MacheteAttack", 99)
      KNFX A 1 A_Lower
	  TNT1 A 0 A_lower
      Loop
   Select:
      KNFG A 1 A_Raise
	  TNT1 A 0 A_Raise
      Loop
   Fire:
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 7, 171)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 6, 123)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 5, 103)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 4, 83)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 3, 73)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 2, 31)
      TNT1 A 0 A_JumpIfInventory("MacheteAttack", 1, 9)
      
      KNFX ABCDZZZZ 1
      
      //Attack1: Right-angled Swipe
      KNFG B 1
      KNFG C 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNFG D 1
      KNFG EFG 1 A_CustomPunch(random(8,16)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNFG HI 1
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 2) //Attack 2
      TNT1 AAAAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      Goto Ready
      
      //Attack2: Left-angled Swipe
      TNT1 A 4
      KNF2 A 1
      KNF2 B 1 
      KNF2 C 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF2 D 1
      KNF2 EFG 1 A_CustomPunch(random(8,16)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF2 H 1
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 3) //Attack 3
      TNT1 AAAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 4) //Attack 4
      TNT1 AAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 6) //Attack 6
      TNT1 AAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      Goto Ready
      
      //Attack3: Overhand Chop (Finisher)
      TNT1 A 8
      KNF7 A 1 A_Recoil(-1)
      KNF7 B 1
      KNF7 C 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF7 DE 1 A_CustomPunch(random(15,30)+(2*ACS_ExecuteWithResult(510,0,0,0))-20+(ACS_ExecuteWithResult(516,6,0,0)*3), 1, 0, "MachetePuff", 128)
      KNF7 F 1
      KNF7 G 1
      TNT1 A 10 A_TakeInventory("MacheteAttack", 99)
      Goto Ready
      
      //Attack4: Diagonal Swing - Right
      KNF4 A 1 A_Recoil(-1)
      KNF4 B 1
      KNF4 C 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF4 DE 1 A_CustomPunch(random(12,24)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF4 F 1
      KNF4 G 1
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 5) //Attack 5
      TNT1 AAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      Goto Ready
      
      //Attack5: Diagonal Swing - Left
      KNF3 A 1
      KNF3 B 1
      KNF3 C 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF3 DE 1 A_CustomPunch(random(12,24)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF3 F 1
      KNF3 G 1
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_GiveInventory("MacheteAttack", 3) //Attack 3
      TNT1 AAAAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      Goto Ready
      
      //Attack6: Slice N' Dice
      TNT1 A 0 A_Recoil(-1)
      TNT1 A 0 A_JumpIfInventory("MacheteSkewerStage", 8, 34)
      
      TNT1 A 0 A_Jump(85,8)
      TNT1 A 0 A_Jump(128,13)
      
      KNF6 E 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF6 C 1
      TNT1 A 0 A_CustomPunch(random(4,16)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF6 B 1
      KNF6 C 1
      KNF6 E 1 A_WeaponReady
      Goto Fire+142
      
      KNF6 E 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF6 G 1
      TNT1 A 0 A_CustomPunch(random(4,16)+(ACS_ExecuteWithResult(510,0,0,0))-10+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF6 F 1
      KNF6 G 1
      KNF6 E 1 A_WeaponReady
      Goto Fire+142
      
      KNF6 E 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF6 I 1
      TNT1 A 0 A_CustomPunch(5+(ACS_ExecuteWithResult(510,0,0,0))+(ACS_ExecuteWithResult(516,6,0,0)*2), 1, 0, "MachetePuff", 128)
      KNF6 H 1
      KNF6 I 1
      KNF6 E 1 A_WeaponReady
      
      TNT1 A 0 A_GiveInventory("MacheteSkewerStage", 1)
      TNT1 AAAAAAAAAA 1 A_WeaponReady
      TNT1 A 0 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_TakeInventory("MacheteSkewerStage", 99)
      Goto Ready
      
      //Attack6: Slice N' Dice (Finisher)
      KNF6 E 1 A_Recoil(-11)
      KNF6 D 1 A_PlayWeaponSound("weapons/knifeswing1")
      KNF6 C 1
      KNF6 BA 1 A_CustomPunch(random(40,80)+(ACS_ExecuteWithResult(510,0,0,0)*2)-20+(ACS_ExecuteWithResult(516,6,0,0)*3), 1, 0, "MachetePuff", 128)
      KNF6 A 10 //A_Saw
      KNF6 BCDE 1
      TNT1 A 10 A_TakeInventory("MacheteAttack", 99)
      TNT1 A 0 A_TakeInventory("MacheteSkewerStage", 99)
      Goto Ready
      
      //Attack7: Block Finisher
	  KNF6 A 0 A_UnSetReflectiveInvulnerable
	  KNF6 A 0 A_UnSetInvulnerable
      KNF6 A 1 A_Recoil(-6)
      KNF6 A 1 A_PlaySound("weapons/knifeswing1")
      KNF6 B 1 A_CustomPunch(random(40,80)+(ACS_ExecuteWithResult(510,0,0,0)*2)-20+(ACS_ExecuteWithResult(516,6,0,0)*2)+(ACS_ExecuteWithResult(516,10,0,0)*15), 1, 0, "MachetePuff", 144)
      KNF6 C 1 A_CustomPunch(random(40,80)+(ACS_ExecuteWithResult(510,0,0,0)*2)-20+(ACS_ExecuteWithResult(516,6,0,0)*2)+(ACS_ExecuteWithResult(516,10,0,0)*15), 1, 0, "MachetePuff", 144)
      KNF6 DE 1
      TNT1 A 10 A_TakeInventory("MacheteAttack", 99)
	  TNT1 A 0 A_TakeInventory("BlockingItem")
      Goto Ready
      
    AltFire:
	  TNT1 A 0 A_JumpIfInventory("Block", 9, "Block5")
	  TNT1 A 0 A_JumpIfInventory("Block", 7, "Block4")
	  TNT1 A 0 A_JumpIfInventory("Block", 5, "Block3")
	  TNT1 A 0 A_JumpIfInventory("Block", 3, "Block2")
	  TNT1 A 0 A_JumpIfInventory("Block", 1, 1)
	  Goto Ready
      KNF5 A 1
      KNF5 B 1 A_GiveInventory("MacheteAttack", 7) //Altfire Finisher
      KNF5 C 1 A_PlayWeaponSound("weapons/knifeblock")
      KNF5 DEFGGGGG 1 A_SpawnItem("KnifeBlock",32)
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 FEDCB 1 
      KNF5 A 1 A_TakeInventory("MacheteAttack", 99)
	  KNF5 A 0 A_TakeInventory("BlockingItem")
      Goto Ready
   Block2:
      KNF5 A 0
      KNF5 B 1 A_GiveInventory("MacheteAttack", 7) //Altfire Finisher
      KNF5 C 1 A_PlayWeaponSound("weapons/knifeblock")
      KNF5 DEFGGGGG 1 A_SpawnItem("KnifeBlock",32)
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SpawnItem("KnifeBlock",32)
      KNF5 G 1 A_WeaponReady
      KNF5 FEDCB 1 
      KNF5 A 1 A_TakeInventory("MacheteAttack", 99)
	  KNF5 A 0 A_TakeInventory("BlockingItem")
      Goto Ready
   Block3:
      KNF5 A 0 A_UnSetInvulnerable
      KNF5 B 1 A_GiveInventory("MacheteAttack", 7) //Altfire Finisher
      KNF5 C 1 A_PlayWeaponSound("weapons/knifeblock")
      KNF5 DEFGGGGG 1 A_SetInvulnerable
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 FEDCB 1 A_UnSetInvulnerable
      KNF5 A 1 A_TakeInventory("MacheteAttack", 99)
	  KNF5 A 0 A_TakeInventory("BlockingItem")
      Goto Ready 
   Block4:
      KNF5 A 0 A_UnSetReflectiveInvulnerable
      KNF5 B 1 A_GiveInventory("MacheteAttack", 7) //Altfire Finisher
      KNF5 C 1 A_PlayWeaponSound("weapons/knifeblock")
      KNF5 DEFGGGGG 1 A_SetReflectiveInvulnerable
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 FEDCB 1 A_UnSetReflectiveInvulnerable
      KNF5 A 1 A_TakeInventory("MacheteAttack", 99)
	  KNF5 A 0 A_TakeInventory("BlockingItem")
      Goto Ready
   Block5:
      KNF5 A 0 A_UnSetReflectiveInvulnerable
      KNF5 B 1 A_GiveInventory("MacheteAttack", 7) //Altfire Finisher
      KNF5 C 1 A_PlayWeaponSound("weapons/knifeblock")
      KNF5 DEFGGGGG 1 A_SetReflectiveInvulnerable
   AltHold:
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
      KNF5 G 0 A_SetReflectiveInvulnerable
      KNF5 G 1 A_WeaponReady
	  KNF5 G 0 A_Refire
      KNF5 FEDCB 1 A_UnSetReflectiveInvulnerable
      KNF5 A 1 A_TakeInventory("MacheteAttack", 99)
	  KNF5 A 0 A_TakeInventory("BlockingItem")
      Goto Ready
      TNT1 A 1 
      Goto Fire
   }
}

ACTOR BlockingItem : Inventory
{
   Inventory.MaxAmount 1
}

ACTOR KnifeBlock
{

	Health 5
	height 35
	radius 16
	Speed  0
	RENDERSTYLE NONE
	+NOBLOOD
	+SHOOTABLE
	+NOGRAVITY
	+NODAMAGE
	Health 1000
	States
	{
		Spawn: 
		TNT1 A 2
		Stop
		Death: 
		TNT1 A 1
		Stop
	}
}

ACTOR MacheteAttack : Inventory
{
   Inventory.MaxAmount 99
}

ACTOR MacheteSkewerStage : Inventory
{
   Inventory.MaxAmount 99
}

Actor MachetePuff : BulletPuff
{
	AttackSound "weapons/knifewall"
	MeleeSound "weapons/knifehit"
}


///////////////////

/////////////WEAPON
Actor EnchantedBow : Weapon
{
Inventory.PickUpMessage "Enchanted Bow"
Weapon.AmmoUse 2
Tag "Enchanted Bow"
Weapon.AmmoGive 25
Weapon.AmmoType "Mana1"
Weapon.KickBack 0
Weapon.SelectionOrder 600
+UNDROPPABLE
AttackSound "weapons/lightningbow"
States
{
Select:
   TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Select_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Select_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Select_Thunder")
   EBOW A 1 A_Raise
   TNT1 A 0 A_Raise
   Loop
Select_Ice:
   PBOW A 1 A_Raise
   TNT1 A 0 A_Raise
   Loop
Select_Fire:
   PBO2 A 1 A_Raise
   TNT1 A 0 A_Raise
   Loop
Select_Thunder:
   PBO3 A 1 A_Raise
   TNT1 A 0 A_Raise
   Loop
Deselect:
   TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Deselect_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Deselect_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Deselect_Thunder")
   EBOW A 1 A_Lower
   TNT1 A 0 A_Lower
   Loop
Deselect_Ice:
   PBOW A 1 A_Lower
   TNT1 A 0 A_Lower
   Loop
Deselect_Fire:
   PBO2 A 1 A_Lower
   TNT1 A 0 A_Lower
   Loop
Deselect_Thunder:
   PBO3 A 1 A_Lower
   TNT1 A 0 A_Lower
   Loop
Ready:
   TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Ready_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Ready_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Ready_Thunder")
   EBOW AAAEEE 1 A_WeaponReady
   Loop
Ready_Ice:
	PBOW A 0 A_JumpIfInventory("MP", 6, 2)
	PBOW A 0 A_TakeInventory("IceSpellInv")
	Goto Ready
   PBOW AAAEEE 1 A_WeaponReady
   Goto Ready
Ready_Fire:
	PBOW A 0 A_JumpIfInventory("MP", 4, 2)
	PBOW A 0 A_TakeInventory("FireSpellInv")
	Goto Ready
   PBO2 AAAEEE 1 A_WeaponReady
   Goto Ready
Ready_Thunder:
	PBOW A 0 A_JumpIfInventory("MP", 8, 2)
	PBOW A 0 A_TakeInventory("ThunderSpellInv")
	Goto Ready
   PBO3 AAAEEE 1 A_WeaponReady
   Goto Ready
Spawn:
	BWPU A -1
	Stop
Fire:
	TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Fire_Ice")
	TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Fire_Fire")
	TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Fire_Thunder")
	EBOW B 3
	EBOW C 3 A_PlayWeaponSound("ARROW1")
	Goto Hold
Hold:
	TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Hold_Ice")
	TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Hold_Fire")
	TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Hold_Thunder")
	EBOW DF 3
	TNT1 A 0 A_Refire
	NULL A 0 A_FireCustomMissile("MagicalArrow",0,1,8,0)
	NULL A 0 A_PlaySoundEx("ARROW3",0)
	DBOW E 3 A_PlayWeaponSound("BowString")
	DBOW F 3
	EBOW BA 3
	Goto Ready
Fire_Ice:
	PBOW B 4
	PBOW C 4 A_PlayWeaponSound("ARROW1")
	Goto Hold
Hold_Ice:
	PBOW DF 4
	TNT1 A 0 A_Refire
	TNT1 A 0 A_TakeInventory("MP", 6)
	TNT1 A 0 A_JumpIfInventory("IceArrowSkill", 7, "Hold_Ice3")
	TNT1 A 0 A_JumpIfInventory("IceArrowSkill", 4, "Hold_Ice2")
	NULL A 0 A_FireCustomMissile("IceArrow",3,0,8,0)
	NULL A 0 A_FireCustomMissile("IceArrow",0,1,8,0)
	NULL A 0 A_FireCustomMissile("IceArrow",-3,0,8,0)
	NULL A 0 A_PlaySoundEx("ARROW3",0)
	DBOW E 4 A_PlayWeaponSound("BowString")
	DBOW F 4
	PBOW BA 4
	Goto Ready
Hold_Ice2:
	NULL A 0 A_FireCustomMissile("IceArrow", 0, 1, 8, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 11, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 5, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, 4)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, -4)
	NULL A 0 A_PlaySoundEx("ARROW3",0)
	DBOW E 4 A_PlayWeaponSound("BowString")
	DBOW F 4
	PBOW BA 4
	Goto Ready
Hold_Ice3:
	NULL A 0 A_FireCustomMissile("IceArrow", 0, 1, 8, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 11, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 5, 0)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, 4)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, -4)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, 4)
	TNT1 A 0 A_FireCustomMissile("IceArrow", random(-5,5), 0, 8, -4)
	NULL A 0 A_PlaySoundEx("ARROW3",0)
	DBOW E 4 A_PlayWeaponSound("BowString")
	DBOW F 4
	PBOW BA 4
	Goto Ready
Fire_Fire:
	PBO2 B 4
	PBO2 C 4 A_PlayWeaponSound("ARROW1")
	Goto Hold
Hold_Fire:
	PBO2 DF 4
	TNT1 A 0 A_Refire
	TNT1 A 0 A_TakeInventory("MP", 4)
	NULL A 0 A_FireCustomMissile("FlameArrow",0,1,5,0)
	NULL A 0 A_PlaySoundEx("ARROW5",0)
	DBOW E 4 A_PlayWeaponSound("BowString")
	DBOW F 4
	PBO2 BA 4
	Goto Ready
Fire_Thunder:
	PBO3 B 4
	PBO3 C 4 A_PlayWeaponSound("ARROW1")
	Goto Hold
Hold_Thunder:
	PBO3 DF 4
	TNT1 A 0 A_Refire
	TNT1 A 0 A_TakeInventory("MP", 8)
	TNT1 A 0 A_JumpIfInventory("LightningArrow", 7, "Hold_Thunder2")
	TNT1 A 0 A_JumpIfInventory("LightningArrow", 4, "Hold_Thunder2")
	NULL A 0 A_RailAttack(50+(acs_executewithresult(516,7)*4)+(acs_executewithresult(516,9)*7)+(acs_executewithresult(516,8)*10)+(acs_executewithresult(603)*3), 8, 1, "none", "yellow", 0, 999)
	NULL A 0 A_PlaySoundEx("ARROW7",0)
	DBOW E 4 A_PlayWeaponSound("ARROW2")
	DBOW F 4
	PBO3 BA 4
	Goto Ready
Hold_Thunder2:
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(75+(acs_executewithresult(516,7)*4)+(acs_executewithresult(516,9)*7)+(acs_executewithresult(516,8)*10)+(acs_executewithresult(603)*3), 8, 1, "none", "yellow", 0, 999)
	NULL A 0 A_PlaySoundEx("ARROW7",0)
	DBOW E 4 A_PlayWeaponSound("ARROW2")
	DBOW F 4
	PBO3 BA 4
	Goto Ready
Hold_Thunder3:
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(00, 8, 0, "none", "yellow", 0, 999)
	NULL A 0 A_RailAttack(100+(acs_executewithresult(516,7)*4)+(acs_executewithresult(516,9)*7)+(acs_executewithresult(516,8)*10)+(acs_executewithresult(603)*3), 8, 1, "none", "yellow", 0, 999)
	NULL A 0 A_PlaySoundEx("ARROW7",0)
	DBOW E 4 A_PlayWeaponSound("ARROW2")
	DBOW F 4
	PBO3 BA 4
	Goto Ready
AltFire:
	EBOW A 0 A_JumpIfInventory("ThunderSpellInv", 1, "ThunderSpellInv")
	EBOW A 0 A_JumpIfInventory("IceSpellInv", 1, "IceSpellInv")
	EBOW A 0 A_JumpIfInventory("FireArrowSkill", 1, "FireSpellInv")
	EBOW AE 3
	Goto Ready
FireSpellInv:
	EBOW A 0 A_JumpIfInventory("FireSpellInv", 1, 3)
	PBO2 AE 3 A_GiveInventory("FireSpellInv", 1)
	Goto Ready
	EBOW A 0 A_TakeInventory("FireSpellInv", 1)
	EBOW A 0 A_TakeInventory("IceSpellInv", 1)
	EBOW A 0 A_TakeInventory("ThunderSpellInv", 1)
	EBOW A 0 A_JumpIfInventory("IceArrowSkill", 1, "IceSpellInv")
	EBOW AE 3
	Goto Ready
IceSpellInv:
	EBOW A 0 A_JumpIfInventory("IceSpellInv", 1, 3)
	PBOW AE 3 A_GiveInventory("IceSpellInv", 1)
	Goto Ready
	EBOW A 0 A_TakeInventory("FireSpellInv", 1)
	EBOW A 0 A_TakeInventory("IceSpellInv", 1)
	EBOW A 0 A_TakeInventory("ThunderSpellInv", 1)
	EBOW A 0 A_JumpIfInventory("LightningArrow", 1, "ThunderSpellInv")
	EBOW AE 3
	Goto Ready
ThunderSpellInv:
	EBOW A 0 A_JumpIfInventory("ThunderSpellInv", 1, 3)
	PBO3 AE 3 A_GiveInventory("ThunderSpellInv", 1)
	Goto Ready
	EBOW A 0 A_TakeInventory("FireSpellInv", 1)
	EBOW A 0 A_TakeInventory("IceSpellInv", 1)
	EBOW AE 3 A_TakeInventory("ThunderSpellInv", 1)
	Goto Ready
}
}

ACTOR FlameArrow
{ 
	Obituary "%o was burned alive by %k's fire arrows." 
   Radius 3 
   Height 2 
   Speed 66
   Decal "Scorch"
   Scale .5
   Damage 0
   Obituary "%o was scorched by %k's fire arrows." 
   PROJECTILE 
   +NOGRAVITY
   +NODAMAGETHRUST
   +FORCERADIUSDMG
   Species "Player"
	+THRUSPECIES
   Damagetype "Fire"
   renderstyle add
   alpha 1.0
   SeeSound "firearrow/shoot"
   DeathSound "firearrow/explode"
   States 
   { 
   Spawn: 
      FARW A 2 bright A_SpawnItemEx("Flamearrowtrail",0,0,0,0,0,0,0,128) 
	  Loop
   Death: 
      FARW A 0 A_Explode(100+(acs_executewithresult(556)*2)-20+(acs_executewithresult(599,17)*2)-20+(acs_executewithresult(599,19)*14)+(acs_executewithresult(599,18)*11),96,0)
      MSP1 GHIJKLMNOP 2 bright A_FadeOut(0.05)
      Stop 
   } 
} 

ACTOR Flamearrowtrail
{
	- SOLID
	+NOGRAVITY
	+CLIENTSIDEONLY
	alpha 0.7
	renderstyle add
	States
	{
	Spawn:
	WBAL CDE 4 bright
	Stop
	}
}

ACTOR IceSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}

ACTOR FireSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}

ACTOR ThunderSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}


actor MagicalArrow : FastProjectile
{
	PROJECTILE
	Species "Player"
	+THRUSPECIES
	scale 0.4
	Speed 70
	Height	7
	Radius	6
	renderstyle add
	SeeSound "DemonMissileFire"
  DeathSound "DemonMissileExplode"
	Damage (random(1,8)*12+(acs_executewithresult(556))-10+(acs_executewithresult(599,17)*2)-20+(acs_executewithresult(599,18)*11))
	states
	{
	Spawn:
		GOSS A 1 Bright A_SpawnItemEx("MagicalArrowTrail", -(MomX/1.2), -(MomY/1.2), (MomZ/1.2*-1), (MomX/3), (MomY/3), (MomZ/3), 0, 138)
		Loop
		Death:
		OXPL ABCDEFGHIJKLM 1 Bright A_FadeOut(0.01)
		stop
	}
}

Actor MagicalArrowTrail
{
	Radius 6
	Height 8
	-SOLID
	+NOBLOCKMAP
	RenderStyle Add
	Alpha 0.5
	Scale 0.8
	+PAINLESS
	+CLIENTSIDEONLY
	+NOGRAVITY
	+NOTELEPORT
	States
	{
	Spawn:
	MART AABBCCDDEE 1 Bright A_FadeOut(0.05)
	Loop
	}
}

ACTOR IceArrow
{ 
	Obituary "%o was frozen by %k's ice arrows." 
   Radius 3 
   Height 2 
   Speed 38
   Scale .5
   Damage (random(1,8)*5+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*2)+(acs_executewithresult(599,20)*2))
   PROJECTILE 
   damagetype "Ice"
   renderstyle add
   alpha 0.8
   +NOGRAVITY 
   +NOEXTREMEDEATH
   +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
   renderstyle translucent
   alpha 1.0
   SeeSound "weapons/icearrow"
   DeathSound "weapons/arrowshatter"
   States 
   { 
   Spawn: 
      SHRD ABC 2 bright A_SpawnItemEx("Icearrowtrail",-4,0,0,0,0,0,0,128) 
	  Loop
   Death: 
      SHEX ABCDEFGHIJ 2 bright A_FadeOut(0.05)
      Stop 
   } 
} 


ACTOR Icearrowtrail
{
	- SOLID
	+NOGRAVITY
	+CLIENTSIDEONLY
	alpha 0.9
	renderstyle add
	scale 0.3
	States
	{
	Spawn:
		CRYT ABCD 4 bright
		Stop
	}
}

ACTOR GlacialCrossBow : Weapon
{
  Weapon.SelectionOrder 1800
  Weapon.AmmoUse1 2
  Weapon.KickBack 0
  Weapon.AmmoGive1 25
  Weapon.AmmoType1 "Mana1"
  Weapon.AmmoType2 "Mana1"
  Weapon.AmmoUse2 4
  +UNDROPPABLE
  +THRUGHOST
  Inventory.PickupMessage "Glacial Crossbow" // "ETHEREAL CROSSBOW"
  Obituary "%o should know that %k's is not a licensed acupuncturist"
  Tag "Glacial Crossbow"
  States
  {
  Spawn:
    XBOW Z -1
    Stop
  Ready:
    XBOW J 1 A_WeaponReady
    Loop
  Deselect:
    XBOW J 1 A_Lower
	TNT1 A 0 A_Lower
    Loop
  Select:
    XBOW J 1 A_Raise
	TNT1 A 0 A_Raise
    Loop
  Fire:
    XBOW B 1 //A_TakeInventory("IronBoltAmmo", 1)
  Hold:
    XBOW H 1 A_PlaySound("BowString")
	XBOW H 0 A_FireCustomMissile ("Glacialbolt", 3, 0)
	XBOW H 0 A_FireCustomMissile ("Glacialbolt", -3, 0)
    XBOW H 0 A_FireCustomMissile ("Glacialbolt")
    XBOW H 2 Offset(0, 48)
	XBOW H 1 Offset(0, 47)
	XBOW H 1 Offset(0, 46)
	XBOW H 2 Offset(0, 44)
	XBOW H 2 Offset(0, 42)
    XBOW I 2 Offset(0, 40)
	XBOW I 2 Offset(0, 38)
	XBOW I 2 Offset(0, 36)
	XBOW J 2 Offset(0, 35)
	XBOW J 2 Offset(0, 34)
	XBOW J 2 Offset(0, 33)
    XBOW J 1 A_ReFire
    goto Ready
  AltFire:
    XBOW B 1 //A_TakeInventory("IronBoltAmmo", 1)
  AltHold:
    XBOW H 2 A_PlaySound("BowString")
    XBOW H 0 A_FireCustomMissile ("Glacialbolt2")
    XBOW H 2 Offset(0, 48)
	XBOW H 2 Offset(0, 47)
	XBOW H 2 Offset(0, 46)
	XBOW H 2 Offset(0, 44)
	XBOW H 2 Offset(0, 42)
    XBOW I 2 Offset(0, 40)
	XBOW I 2 Offset(0, 38)
	XBOW I 2 Offset(0, 36)
	XBOW J 2 Offset(0, 35)
	XBOW J 2 Offset(0, 34)
	XBOW J 2 Offset(0, 33)
    XBOW J 2 A_ReFire
    goto Ready
  }
}

actor Glacialbolt
{
  height 3
  radius 3
  damage (random(1,8)*4+(acs_executewithresult(556))+(acs_executewithresult(599,17))+(acs_executewithresult(599,18)*2))
  speed 45
  seesound "misc/shot"
  deathsound "misc/shotx"
  PROJECTILE
  +SEEKERMISSILE
  +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
  Renderstyle Add
  Damagetype "Ice"
  
  states
  {
  Spawn:
	CBLT AAAAA 1 A_SpawnItemEx("GlacialboltTrail2",0,0,0,0,0,0,0,8)
  Home:
    CBLT A 1 A_SeekerMissile(45,50)
	CBLT A 0 A_SpawnItemEx("GlacialboltTrail2",0,0,0,0,0,0,0,8)
	Loop
  Death:
   	TNT1 AAAAAA 0 A_SpawnItemEx("GlacialBoltLightSpawner")
    CTFX B 4 Bright
    CTFX C 3 Bright
    CTFX D 4 Bright
    CTFX E 3 Bright
    CTFX F 2 Bright
	Stop
  }
}

Actor Glacialbolt2
{
radius 3
height 3
damage ((acs_executewithresult(599,18)*10))
speed 45
Projectile
+EXTREMEDEATH
+SEEKERMISSILE
+FORCERADIUSDMG
+DONTFALL
+NODAMAGETHRUST
+THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
Damagetype "ICE"
Renderstyle Add
states
{
Spawn:
CBLT A 0 A_SpawnItemEx("GlacialboltTrail2",0,0,0,0,0,0,0,8)
CBLT A 1
Loop
CBLT A 0 A_SpawnItemEx("FrostFangFog2", 0, 0, 0)
CBLT A 0 A_Stop
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1 A_Fire(34)
Goto Death+2
Death:
CBLT A 0
Goto Spawn+3
CTFX BB 0 A_PlaySound("FrostFang/Hit2")
CTFX B 0 A_Explode(30+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10,50,0)
TNT1 AAAAAA 0 A_SpawnItemEx("GlacialBoltLightSpawner")
CTFX B 4 Bright
CTFX C 3 Bright
CTFX D 4 Bright
CTFX E 3 Bright
CTFX F 2 Bright
stop
Crash:
CBLT A 0 A_SpawnItemEx("FrostFangFog2", 0, 0, 0)
CBLT A 0 A_Stop
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
CBLT A 0 A_Explode(1+(acs_executewithresult(556))/5+(acs_executewithresult(599,17))/5,8,0)
CBLT A 1
SHEX B 0 A_PlaySound("FrostFang/Hit2")
TNT1 AAAAAA 0 A_SpawnItemEx("GlacialBoltLightSpawner")
CTFX B 0 A_Explode(30+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10,50,0)
CTFX B 4 Bright
CTFX C 3 Bright
CTFX D 4 Bright
CTFX E 3 Bright
CTFX F 2 Bright
Stop
}
}

ACTOR GlacialboltTrail2
{
		Radius 1
		Height 1
		Damage 0
		Speed 0
		Scale 0.5
		PROJECTILE
		+CLIENTSIDEONLY
		+NOINTERACTION
		RenderStyle Add
		Alpha 0.25
		States
		{
		Spawn:
   			GXBT BCDEFGH 3 BRIGHT
			Stop
   		}
}

ACTOR GlacialboltTrail
{
		Radius 1
		Height 1
		Damage 0
		Speed 0
		Scale 0.1
		PROJECTILE
		+CLIENTSIDEONLY
		+NOINTERACTION
		RenderStyle Add
		//Alpha 0.50
		States
		{
		Spawn:
			TNT1 A 0
   			FFFG A 2 BRIGHT A_FadeOut(0.09)
			Loop
   		}
}

ACTOR GlacialBoltLightSpawner
{
		+NOBLOCKMAP
		+NOGRAVITY
		+NOSECTOR
		+NOINTERACTION
		+NOCLIP
		-SOLID
		+CLIENTSIDEONLY
        States
        {
        Spawn:
        Active:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(Args[1], "Circle")
			TNT1 A 2
			TNT1 A 0 A_SpawnItemEx ("GlacialboltTrail", 0, 0, 0, random(-1,1), random(-1,1), random(-1,1), random(0,360), 129, Args[2])
			TNT1 A 0 A_SpawnItemEx ("GlacialboltTrail", 0, 0, 0, random(-1,1), random(-1,1), random(-1,1), random(0,360), 129, Args[2])
			Stop
        Circle:
			TNT1 A 0
			TNT1 A 2 A_SpawnItemEx ("GlacialboltTrail", 0, 0, 0, random(-1,1), random(-1,1), random(-1,1), random(0,360), 129, Args[2])
			Loop
        Inactive:
			TNT1 A 1
			Loop
        }
}

ACTOR Blunderbuss : Weapon
{
  Weapon.SelectionOrder 1800
  Weapon.AmmoUse1 4
  Weapon.KickBack 0
  Weapon.AmmoGive 25
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoType2 "Mana2"
  Weapon.AmmoUse2 5
  Inventory.PickupMessage "Blunderbuss" // "ETHEREAL CROSSBOW"
  Obituary "%o should know that %k's is not a licensed acupuncturist"
  AttackSound "weapons/blunderfire"
  Tag "Blunderbuss"
  +UNDROPPABLE
  +THRUGHOST
  States
  {
  Spawn:
    BLUN Z -1
    Stop
  Ready:
    BLUN B 1 A_WeaponReady
    Loop
  Deselect:
    BLUN B 1 A_Lower
	TNT1 B 0 A_Lower
    Loop
  Select:
    BLUN B 1 A_Raise
	TNT1 B 0 A_Raise
    Loop
  Fire:
	BLUN A 2
	BLUN C 3 BRIGHT 
	BLUN D 0 BRIGHT A_GunFlash
	BLUN D 3 BRIGHT A_FireBullets(5.625,4.255, 7, (acs_executewithresult(516,7))+(acs_executewithresult(516,9)), "BlunderbussPuff")
	BLUN D 0 A_CheckReload
	BLUN EFGHI 2
	TNT1 A 15
	BLUN JKLMNOP 2
	BLUN B 6 A_PlaySound("weapons/blunderload")
	Goto Ready
  AltFire:
	BLUN A 2
	BLUN C 3 BRIGHT 
	BLUN D 0 Bright A_PlayWeaponSound ("weapons/blunderfire")
	BLUN D 0 BRIGHT A_GunFlash
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 0 BRIGHT A_FireCustomMissile("BlunderbussCannonball", random(-5,5), 0, 4, 0, 1, random(-4,4))
	BLUN D 3 BRIGHT A_FireCustomMissile("BlunderbussCannonball")//A_FireBullets(8.625,6.255, 7, (acs_executewithresult(516,7))+(acs_executewithresult(516,9)), "BlunderbussPuff")
	BLUN D 0 A_CheckReload
	BLUN EFGHI 2
	TNT1 A 15
	BLUN JKLMNOP 2
	BLUN B 6 A_PlaySound("weapons/blunderload")
	Goto Ready
  }
}

ACTOR BlunderbussCannonball
{
  Radius 8
  Height 6
  Speed 55
  Damage (random(1,8)+(acs_executewithresult(556)/2)-5+(acs_executewithresult(599,17)/2)-5+(acs_executewithresult(599,18)))
  Projectile
  Scale 0.5
  BounceFactor 1.0
  +DOOMBOUNCE
  +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
  BounceCount 3
  Obituary "$OB_MPMACE"
	DeathSound "weapons/firex2"
  States
  {
  Spawn:
    FX02 CD 4
    Loop
  Death:
	FX02 F 0 Bright A_Explode(16+(acs_executewithresult(556)/2)-5+(acs_executewithresult(599,17)/2)-5+(acs_executewithresult(599,18)), 36, 0)
    FX02 F 4 Bright A_SetTranslucent(1,1)
    FX02 GHIJ 4 Bright
    Stop
  }
}

ACTOR BlunderbussPuff
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  RenderStyle Add
  Alpha 0.9
  States
  {
  Spawn:
    FHFX STUVW 4
    Stop
  }
}


actor EtherealCrossbow : Weapon
{
  obituary "%o was splattered by %k's Ethereal Crossbow."
  radius 20
  height 16
  attacksound "weapons/sshotf"
  inventory.pickupmessage "Ethereal Crossbow"
  weapon.selectionorder 10
  weapon.ammotype1 "Mana2"
  Weapon.KickBack 0
  weapon.ammouse1 4
  weapon.ammogive1 25
  Weapon.AmmoType2 "Mana2"
  Weapon.AmmoUse2 5
  Tag "Ethereal Crossbow"
  +UNDROPPABLE
  states
  {
  Ready: 
    CRB2 ABC 6 A_WeaponReady
    loop
  Deselect:
    CRB2 A 1 A_Lower
	TNT1 A 0 A_Lower
	CRB2 B 1 A_Lower
	TNT1 A 0 A_Lower
	CRB2 C 1 A_Lower
	TNT1 A 0 A_Lower
    loop
  Select:
    CRB2 A 1 A_Raise
	TNT1 A 0 A_Raise
	CRB2 B 1 A_Raise
	TNT1 A 0 A_Raise
	CRB2 C 1 A_Raise
	TNT1 A 0 A_Raise
    loop
  Fire:
    CRB2 A 3 Offset(0, 48)
	CRB2 D 0 A_PlaySound("weapons/bowshoot")
	CRB2 D 0 A_PlaySound("weapons/bowshoot")
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX1",0,2,7,0)
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX1",0,0,-7,0)
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX3",2,0,0,10)
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX3",-2,0,0,10)
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX3",2,0,0,-10)
    CRB2 D 0 A_FireCustomMissile("ECrossbowFX3",-2,0,0,-10)
    CRB2 D 2 Offset(0, 46)
	CRB2 D 1 Offset(0, 44)
    CRB2 E 2 Offset(0, 42)
	CRB2 E 2 Offset(0, 40)
    CRB2 F 2 Offset(0, 38)
	CRB2 F 2 Offset(0, 37)
    CRB2 G 2 Offset(0, 34)
	CRB2 G 2 Offset(0, 33)
    CRB2 H 1 Offset(0, 33)
    CRB2 H 5 Offset(0, 32) A_ReFire
    CRB2 A 4 Offset(0, 32) A_ReFire
    goto Ready
  AltFire:
    CRB2 A 3 Offset(0, 48)
	CRB2 D 0 A_PlaySound("weapons/ebowhit")
    CRB2 D 2 Offset(0, 46) A_RailAttack(60+(acs_executewithresult(516,7)*5)+(acs_executewithresult(603)*5), 0, 1, "Green", "Yellow", 0, 0)
	CRB2 D 2 Offset(0, 44)
    CRB2 E 2 Offset(0, 42)
	CRB2 E 2 Offset(0, 40)
    CRB2 F 2 Offset(0, 38)
	CRB2 F 3 Offset(0, 37)
    CRB2 G 3 Offset(0, 34)
	CRB2 G 2 Offset(0, 33)
    CRB2 H 3 Offset(0, 33)
    CRB2 H 5 Offset(0, 32) A_ReFire
    CRB2 A 4 Offset(0, 32) A_ReFire
    goto Ready
  Flash:
    CRB2 I 4 bright A_Light1
    CRB2 J 3 bright A_Light2
    CRB2 J 0 bright A_Light0
    stop
  Spawn:
    WBOW B -1
    stop
  }
}

ACTOR ECrossbowFX1
{
  Radius 11
  Height 8
  Speed 30
  Damage (random(1,8)*6+(acs_executewithresult(556))-10+(acs_executewithresult(599,18)*4))
  Projectile
  Species "Player"
	+THRUSPECIES
  RenderStyle Add
  SeeSound "weapons/ebowshoot"
  DeathSound "weapons/ebowhit"
  States
  {
  Spawn:
    FX03 B 1 BRIGHT A_SpawnItemEx("CrossbowFX4", random2[BoltSpark]()*0.015625, random2[BoltSpark]()*0.015625,
                                  0, 0,0,0,0,SXF_ABSOLUTEPOSITION, 50)
    Loop
  Death:
    FX03 HIJ 8 BRIGHT
    Stop
  }
}

ACTOR ECrossbowFX3 : ECrossbowFX1
{
  Speed 20
  +THRUGHOST
	+WINDTHRUST
  Damage (random(1,8)*2+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*4))
  SeeSound ""
  States
  {
  Spawn:
    FX03 A 1 BRIGHT
    Loop
  Death:
    FX03 CDE 8 BRIGHT
    Stop
  }
}

ACTOR HellforgeCannon : Weapon
{	
   Inventory.PickupMessage "HELLFORGE CANNON"
   Obituary "%k ripped %o apart with a hellforge Cannon."
   Weapon.AmmoType1 "Mana1"
   Weapon.AmmoGive1 20
   Weapon.AmmoType2 "Mana2"
   Weapon.AmmoGive2 20
   Weapon.SelectionOrder 18
   Weapon.AmmoUse1 5
   Weapon.AmmoUse2 5
   +PRIMARY_USES_BOTH
   +ALT_AMMO_OPTIONAL
   Weapon.KickBack 0
   +UNDROPPABLE
   Tag "Hellforge Cannon"
   States
   {
   Spawn:
      WHFC A -1 Bright
      Loop
   Ready:
      HFCA A 1 A_WeaponReady
      Loop
   Deselect:
      HFCA A 1 A_Lower
	  TNT1 A 0 A_Lower
      Loop
   Select:
      HFCA A 1 A_Raise
	  TNT1 A 0 A_Raise
      Loop
   Fire:
      HFCA B 2 Offset(0, 34)
	  HFCA B 1 Offset(0, 38)
	  HFCA D 2 Offset(0, 40)
	  HFCA D 1 Offset(0, 44)
      HFCA D 0 A_GunFlash
      HFCA D 2 Bright A_FireCustomMissile("Ripper1",0,1,0,0)
      HFCA EFG 2 BRIGHT
      HFCA C 1 Offset(0, 44) A_Refire
	  HFCA C 1 Offset(0, 42)
	  HFCA C 1 Offset(0, 40)
	  HFCA B 1 Offset(0, 38)
	  HFCA B 1 Offset(0, 36)
	  HFCA B 1 Offset(0, 34)
      Goto Ready
   HOLD:
      HFCA D 2 Bright A_FireCustomMissile("Ripper1",0,1,0,0)
      HFCA EFG 2 BRIGHT
	  HFCA C 1 Offset(0, 44) A_Refire
	  HFCA C 1 Offset(0, 42)
	  HFCA C 1 Offset(0, 40)
	  HFCA B 1 Offset(0, 38)
	  HFCA B 1 Offset(0, 36)
	  HFCA B 1 Offset(0, 34)
      Goto Ready
   AltFire:
	  HFCA B 0 A_JumpIfInventory("Mana1", 4, 1)
	  Goto Ready
	  HFCA B 0 A_JumpIfInventory("Mana2", 4, 1)
	  Goto Ready
      HFCA B 2 Offset(0, 34)
	  HFCA B 1 Offset(0, 38)
	  HFCA D 2 Offset(0, 40)
	  HFCA D 1 Offset(0, 44)
      HFCA D 0 A_GunFlash
	  HFCA B 0 A_TakeInventory("Mana1", 4)
	  HFCA B 0 A_TakeInventory("Mana2", 4)
      HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright
	  HFCA E 1 Bright
	  HFCA D 0 Bright A_Refire
      HFCA FG 2 BRIGHT
	  HFCA C 1 Offset(0, 44) 
	  HFCA C 1 Offset(0, 42)
	  HFCA C 1 Offset(0, 40)
	  HFCA B 1 Offset(0, 38)
	  HFCA B 1 Offset(0, 36)
	  HFCA B 1 Offset(0, 34)
      Goto Ready
   AltHOLD:
	  HFCA B 0 A_JumpIfInventory("Mana1", 3, 1)
	  Goto Ready
	  HFCA B 0 A_JumpIfInventory("Mana2", 3, 1)
	  Goto Ready
	  HFCA B 0 A_TakeInventory("Mana1", 3)
	  HFCA B 0 A_TakeInventory("Mana2", 3)
	  HFCA D 0 A_GunFlash
      HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright A_FireCustomMissile("Ripper3",random(-4,4),0,0,0)
	  HFCA E 1 Bright
	  HFCA D 2 Bright
	  HFCA E 1 Bright
	  HFCA D 0 Bright A_Refire
      HFCA FG 2 BRIGHT
	  HFCA C 1 Offset(0, 44) 
	  HFCA C 1 Offset(0, 42)
	  HFCA C 1 Offset(0, 40)
	  HFCA B 1 Offset(0, 38)
	  HFCA B 1 Offset(0, 36)
	  HFCA B 1 Offset(0, 34)
      Goto Ready
   }
}

ACTOR Ripper3
{
   Radius 5
   Height 5
   Damage (random(1,8)*5+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*2))
   PROJECTILE
   RENDERSTYLE Normal
   Damagetype normal
   +FORCEXYBILLBOARD
   +EXTREMEDEATH
   +DOOMBOUNCE
   -NOGRAVITY
   +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
   Gravity 0.25
   BounceFactor 0.7
   Speed 24
   SeeSound "FireDemonAttack"
   DeathSound "weapons/firex2"
   //BounceSound "weapons/hellforgecannon/bounce"
   States
   {
   Spawn:
      RIP2 AAA 1 Bright A_SpawnItemEx("Ripper3Trail")
      RIP2 BBB 1 Bright A_SpawnItemEx("Ripper3Trail")
      loop
   Death:
      RIP2 C 0 Bright A_SetTranslucent (0.67,1)
      RIP2 CDEFG 3 Bright
      stop
   }
}

ACTOR Ripper3Trail
{
   Radius 5
   Height 5
   PROJECTILE
   Damagetype normal
   +FORCEXYBILLBOARD
   +EXTREMEDEATH
   +DOOMBOUNCE
   +NOINTERACTION
	RenderStyle Add
	Alpha 0.5
   DeathSound "weapons/firex2"
   States
   {
   Spawn:
      RIP2 AB 2 Bright A_Fadeout(0.07)
      loop
   }
}

ACTOR Ripper1
{
   Radius 8
   Height 8
   Speed 30
   Damage (random(1,8)*10+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*2))
   RENDERSTYLE Normal
   Damagetype fire
   PROJECTILE
   +FORCEXYBILLBOARD
   +EXTREMEDEATH
   +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
   Seesound "weapons/macefi"
   DeathSound "weapons/maceex"
   States
   {
   Spawn:
      RIPP AAABBBCCC 1 Bright A_SpawnItemEx("RedPuff",0,0,0,0,0,0,0,8)
      loop
   Death:
      RIP1 D 0 Bright A_SetTranslucent (0.75,1)
      RIP1 D 1 Bright A_Explode(64+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*2),64,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,0,0,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,60,0,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,120,0,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,180,0,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,240,0,0)
      RIP1 D 0 Bright A_SpawnItemEx("Ripper2",0,0,0,40,0,0,300,0,0)
      RIP1 EFGH 3 Bright
      stop
   }
}

ACTOR Ripper2
{
   Radius 5
   Height 5
   Damage (random(1,8)*5+(acs_executewithresult(556))-10+(acs_executewithresult(599,17))-10+(acs_executewithresult(599,18)*2))
   PROJECTILE
   RENDERSTYLE Normal
   Damagetype normal
   +FORCEXYBILLBOARD
   +EXTREMEDEATH
   +HEXENBOUNCE
   +THRUGHOST
	+WINDTHRUST
	Species "Player"
	+THRUSPECIES
   BounceCount 2
   BounceFactor 1.0
   DeathSound "weapons/firex2"
   States
   {
   Spawn:
      RIP2 A 3 Bright
      RIP2 B 3 Bright
      loop
   Death:
      RIP2 C 0 Bright A_SetTranslucent (0.67,1)
      RIP2 CDEFG 3 Bright
      stop
   }
}

ACTOR RedPuff
{   
   Radius 0
   Height 1
   +NOGRAVITY
   +NOBLOCKMAP
   +FORCEXYBILLBOARD
   RENDERSTYLE ADD
   ALPHA 0.85
   States
   {
   Spawn:
      NULL A 3 Bright
      RPUF BCDE 3 Bright
      Stop 
   }
}


//			Necromancer Weapons

ACTOR Sickle : Weapon
{
    +MELEEWEAPON
    +NOEXTREMEDEATH
    +INVENTORY.UNDROPPABLE
	+THRUGHOST
	Weapon.KickBack 0
	+UNDROPPABLE
	Weapon.KickBack 0
    States
    {
    Select:
	SCKL A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	SCKL A 1 A_lower
	TNT1 A 0 A_lower
	Loop
    Ready:
	SCKL A 1 A_weaponready
	Loop
    Fire:
	SCKL A 1 Offset (32,32)
	SCKL A 1 Offset (28,32)
	SCKL A 1 Offset (24,32)
	SCKL B 1 Offset (22,32)
	SCKL B 1 Offset (15,32)
	SCKL B 1 Offset (10,32)
	SCKL C 1 Offset (20,33) A_Custompunch(random(35,45)+(2*ACS_ExecuteWithResult(510,0,0,0)-20),1,0,"HammerPuff",136)
	SCKL C 1 Offset (12,34)
	SCKL C 1 Offset (0,36)
	SCKL C 1 Offset (-10,36)
	SCKL D 1 Offset (40,36)
	SCKL D 1 Offset (36,39)
	SCKL D 1 Offset (32,42)
	TNT1 A 4
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	goto Ready
    Altfire:
	SCKL N 2
	TNT1 A 2
	AltHold:
	SCKL I 2 Offset (36,38)
	SCKL I 2 Offset (32,32)
	SCKL J 2
	SCKL K 2
	SCKL L 1 Offset (38,28)
	SCKL L 1 Offset (32,32)
	SCKL L 1 Offset (28,38)
	SCKL H 1 Offset (39,32) A_CustomPunch(random(50,70)+(5*ACS_ExecuteWithResult(510,0,0,0)-50),1,0,"HammerPuff",136)
	TNT1 A 12
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    }
}

ACTOR HeartOfYorick : Weapon
{
	Weapon.KickBack 0
	+UNDROPPABLE
    Weapon.AmmoType1 "Mana1"
    Weapon.AmmoType2 "Mana1"
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 1
    Weapon.AmmoUse2 4
    Inventory.PickupMessage "HEART OF YORICK"
	Tag "Heart of Yorick"
    States
    {
    Spawn:
	WHRT ABCDABCDABCDABCDABC 4 Bright
	WHRT D 4 Bright
	Loop
    Ready:
	LORC A 0 A_JumpIfInventory("BeatCheck",75,3)
	LORC A 0 A_GiveInventory("BeatCheck",1)
	LORC A 1 A_WeaponReady
	Goto Ready
	LORC H 4 A_WeaponReady
	LORC H 0 A_TakeInventory("BeatCheck",75)
	LORC H 0 A_PlaySound("weapons/heart/beat", CHAN_WEAPON, 0.6, 0)
	Loop
    Deselect:
	LORC A 1 A_Lower
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 A 0 A_Lower
	Loop
    Select:
	LORC A 1 A_Raise
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 A 0 A_Raise
	Loop
    Fire:
	LORC BCD 3
    Hold:
	LORC E 2 Bright A_FireCustomMissile("HeartOfYorickBeam",random(-4,4),1,random(8,12),random(5,7))
	LORC EM 1 Bright A_FireCustomMissile("HeartOfYorickBeam",random(-4,4),0,random(8,12),random(5,7))
	LORC E 2 Bright A_FireCustomMissile("HeartOfYorickBeam",random(-4,4),0,random(8,12),random(5,7))
	LORC MM 1 Bright A_FireCustomMissile("HeartOfYorickBeam",random(-4,4),0,random(8,12),random(5,7))
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
    AltFire:
	LORC B 0 A_PlaySoundEx("weapon/heart/charge", "SoundSlot7", 0)
	LORC BCD 3
    AltHold:
	LORC E 2 Bright
	LORC M 2 Bright //A_PlaySound("weapons/heart/alt/fire", CHAN_WEAPON, 0.6, 0)
	LORC F 4 Bright A_FireCustomMissile("HeartOfYorickBloodBall",0,1,0,4)
	LORC G 3
	LORC A 4
	Goto Ready
    }
}

ACTOR HeartOfYorickBeam
{
   Radius 2
   Height 4
   Speed 10
   Damage (random(1,8)+(ACS_ExecuteWithResult(556)/2-5))
   Scale 0.50
   PROJECTILE
   +FLOATBOB
   +SeekerMissile
   Species "Player"
	+THRUSPECIES
   Renderstyle Add
   States
   {
   Spawn:
      VAM2 A 0 Bright A_PlaySound("vampire/beam")
	  VAM2 A 0 Bright A_PlaySound("vampire/beam")
	  VAM2 A 0 Bright A_PlaySound("vampire/beam")
	  VAM2 A 0 Bright A_PlaySound("vampire/beam")
	  VAM2 A 0 Bright A_PlaySound("vampire/beam")
      VAM2 A 1 Bright A_CStaffMissileSlither
      VAM2 A 0 Bright //A_SpawnItemEx("VampireRoundBeamTrail", 0, 0, 0, 0, 0, 0, 0, 128)
      VAM2 A 1 Bright A_CStaffMissileSlither
      VAM2 A 0 Bright A_SpawnItemEx("VampireRoundBeamTrail", 0, 0, 0, 0, 0, 0, 0, 128)
      VAM2 A 1 Bright A_CStaffMissileSlither
      VAM2 A 0 Bright //A_SpawnItemEx("VampireRoundBeamTrail", 0, 0, 0, 0, 0, 0, 0, 128)
      VAM2 A 1 Bright A_CStaffMissileSlither
      VAM2 A 0 Bright A_SpawnItemEx("VampireRoundBeamTrail", 0, 0, 0, 0, 0, 0, 0, 128)
      VAM2 A 0 Bright A_SeekerMissile(5,5)
      loop
   Death:
      VAM2 CDEFGH 3 Bright
      stop
   }
}

Actor HeartOfYorickBloodBall
{
  Speed 30
  Radius 8
  Height 12
  Damage (random(1,8)*15+(ACS_ExecuteWithResult(556)-10))
  Projectile
  +SeekerMissile
  Species "Player"
	+THRUSPECIES
  SeeSound "weapons/heart/alt/fire"
  DeathSound "weapons/heart/alt/hit"
  Scale 1.5
  Decal BigBloodSmear
  Renderstyle Add
  States
  {
  Spawn:
    BSBL AABBCC 1 Bright A_SpawnItemEx("HeartOfYorickBloodBallTrail", Random(-5, 5), Random(-6, 6), Random(-6, 6), 0, 0, 0, 0, 128)
    BSBL C 0 A_SeekerMissile(45, 45)
    BSBL DDEEFF 1 Bright A_SpawnItemEx("HeartOfYorickBloodBallTrail", Random(-5, 5), Random(-6, 6), Random(-6, 6), 0, 0, 0, 0, 128)
    BSBL F 0 A_SeekerMissile(45, 45)
    Loop
  Death:
    TNT1 A 0 A_Explode(64+(ACS_ExecuteWithResult(556))-10, 172, 0)
    TNT1 A 1 A_SpawnItemEx("HeartOfYorickBloodBallDeath", 0, 0, 0, 0, 0, 0, 0, 128)
    Stop
  }
}

Actor HeartOfYorickBloodBallTrail
{
  Radius 1
  Height 1
  +NoGravity
  +NoClip
  Scale 2.0
  States
  {
  Spawn:
    BSFX A 0
    BSFX A 0 A_Jump(192, 2, 3, 4, 5)
    BSFX B 16
    Stop
    BSFX C 16
    Stop
    BSFX D 16
    Stop
    BSFX E 16
    Stop
    BSFX F 16
    Stop
  }
}

Actor HeartOfYorickBloodBallDeath
{
  Radius 1
  Height 1
  +NoGravity
  +NoClip
  RenderStyle Add
  Alpha 0.8
  States
  {
  Spawn:
    BSBL GHIJKL 3 Bright
    BSBL L 2 Bright A_FadeOut(0.05)
    Goto Spawn+6
  }
}

ACTOR BeatCheck : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 75
}


ACTOR Lichstaff : Weapon
{  
		Weapon.SelectionOrder 45 
		Weapon.AmmoType1 "Mana2" 
		Weapon.AmmoType2 "Mana2" 
		Weapon.AmmoGive1 25 
		Weapon.AmmoGive2 0 
		Weapon.AmmoUse1 4
		Weapon.AmmoUse2 3
		Weapon.KickBack 0
		+UNDROPPABLE
		Inventory.PickupMessage "LICH STAFF"
		Tag "Lich Staff"
		States
		{
		Ready: 
			LICS A 1 A_WeaponReady 
			Loop 
		Deselect: 
			LICS A 1 A_Lower 
			TNT1 A 0 A_Lower
			Loop
		Select: 
			LICS A 1 A_Raise 
			TNT1 A 0 A_Raise
			Loop
		Fire: 
			LICS B 2 Bright Offset(0, 36)
			LICS B 2 Bright Offset(0, 37)
			LICS C 2 Bright Offset(0, 40)
			LICS C 2 Bright Offset(0, 42)
			LICS D 4 BRIGHT Offset(0, 43)
			LICS E 0 BRIGHT A_PlayWeaponSound ("weapons/lichbane/fire")
			LICS E 4 BRIGHT Offset(0, 50) A_FireCustomMissile ("LichStaffFireball", 0, 1, 0, 0)
			LICS D 4 BRIGHT Offset(0, 44)
			LICS C 2 Bright Offset(0, 42)
			LICS C 2 Bright Offset(0, 40)
			LICS B 2 Bright Offset(0, 38)
			LICS B 2 Bright Offset(0, 36)
			Goto Ready
		AltFire: 
			LICS B 4 Bright
			LICS C 4 Bright
			LICS D 1 BRIGHT
			LICS D 3 BRIGHT A_PlayWeaponSound ("weapons/lichstaff/altfire")
			LICS E 0 Bright A_FireCustomMissile ("SpikeShot",3,0,0,0)
			LICS E 0 Bright A_FireCustomMissile ("SpikeShot",-3,0,0,0)
			LICS E 4 BRIGHT A_FireCustomMissile ("SpikeShot")
			LICS D 4 BRIGHT
			LICS C 4 Bright
			LICS B 4 Bright
			Goto Ready 
		} 
}

ACTOR LichStaffFireball
{
		Radius 8
		Height 8
		Speed 30
		Damage (((random(1,8))*15)+ACS_ExecuteWithResult(556)-10)
		PROJECTILE
		-NOGRAVITY
		+DONTREFLECT
		Species "Player"
	+THRUSPECIES
		Gravity 0.35
		Renderstyle Add
		SeeSound "weapons/lichstaff/fire"
		DeathSound "weapons/lichstaff/hit1"
		States
		{
		Spawn:
			LIC1 AB 4 BRIGHT
			Loop
		Death:
			TNT1 AA 0 A_CustomMissile("LichFireball2",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
			TNT1 AA 0 A_CustomMissile("LichFireball2",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
			TNT1 AA 0 A_CustomMissile("LichFireball2",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
			TNT1 AA 0 A_CustomMissile("LichFireball2",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
			TNT1 AA 0 A_CustomMissile("LichFireball2",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
			LIC1 CDEFGH 4 BRIGHT
			Stop
		}
}

ACTOR LichFireball2
{
		Radius 4
		Height 3
		Speed 15
		Damage (random(1,8)+ACS_ExecuteWithResult(556)/2-5)
		PROJECTILE
		-NOGRAVITY
		+DONTREFLECT
		+DONTSPLASH
		Species "Player"
	+THRUSPECIES
		Renderstyle Add
		DeathSound "weapons/lichstaff/hit2"
		States
		{
		Spawn:
			LIC2 AB 4 BRIGHT
			Loop
		Death:
			LIC2 EDCD 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 DCDC 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 DCDC 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 DCDC 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 DCDC 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 DCD 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			LIC2 EFG 4 BRIGHT A_Explode (1+ACS_ExecuteWithResult(556)/5-2, 64, 0)
			Stop
		}
}

ACTOR SpikeShot
{
   Radius 8
   Height 10
   Speed 70
   Damage 0
   ReactionTime 30
   PROJECTILE
   RENDERSTYLE Normal
   +RIPPER
   +FLOORHUGGER
   +THRUGHOST
   Species "Player"
	+THRUSPECIES
   -NOGRAVITY
   DeathSound "weapons/stab"
   States
   {
   Spawn:
      TNT1 A 1 A_CustomMissile("Impaler",0,0,0,4)
      TNT1 A 0 A_CustomMissile("SpikeLightSpawner",0,0,0,4)
      TNT1 A 0 A_Countdown
      loop
   Death:
      TNT1 A 2 Bright
      stop
   }
}

ACTOR Impaler
{   
   Radius 1
   Height 1
   Damage 0
   Speed 0
   PROJECTILE
   RENDERSTYLE Normal
   +FLOORHUGGER
   -NOGRAVITY
   +NODAMAGETHRUST
   +RIPPER
   +BLOODLESSIMPACT
   States
   {
   Spawn:
      SPIK ABCDE 3
      SPIK E 0 A_Explode (32+ACS_ExecuteWithResult(556)-10,24,0)
      SPIK DCBA 3
      Stop 
   }
}

Actor RavenStaff : Weapon
{
  +PRIMARY_USES_BOTH
  +ALT_AMMO_OPTIONAL
  Weapon.KickBack 0
  +UNDROPPABLE
  Inventory.PickupMessage "RAVEN STAFF"
  Obituary "%o was pecked down by %k's Raven Staff"
  Weapon.AmmoType1 "Mana1"
  Weapon.AmmoType2 "Mana2"
  Weapon.AmmoGive1 20
  Weapon.AmmoGive2 20
  Weapon.AmmoUse1 8
  Weapon.AmmoUse2 8
  Tag "Raven Staff"
  States
  {
  Spawn:
    RVNS A -1
    Loop
  Select:
    RVNS B 1 A_Raise
    TNT1 A 0 A_Raise
	Loop
  Deselect:
    RVNS B 1 A_Lower
    TNT1 A 0 A_Lower
	Loop
  Ready:
    RVNS B 1 A_WeaponReady
    loop
  Fire:
    RVNS B 0 A_PlayWeaponSound("Weapons/RavenStaff/Fire11")
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -35, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -45, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -55, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 35, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 45, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 55, 128)
    RVNS B 1 A_FireCustomMissile("RavenMissile", 0, 1)
    RVNS B 0 A_FireCustomMissile("RavenMissile", 4, 0)
    RVNS B 1 A_FireCustomMissile("RavenMissile", -4, 0)
    RVNS B 0 A_FireCustomMissile("RavenMissile", -9, 0)
    RVNS B 2 Offset(0, 35) A_FireCustomMissile("RavenMissile", 9, 0)
    RVNS B 2 Offset(0, 39)
    RVNS B 2 Offset(0, 45)
    RVNS B 6 Offset(0, 50)
    RVNS B 3 Offset(0, 46)
    RVNS B 3 Offset(0, 40)
    RVNS B 3 Offset(0, 37)
    RVNS B 3 Offset(0, 32)
    Goto Ready
  Altfire:
	MSTF H 0 A_JumpIfInventory("Mana1", 16, 1)
	Goto Ready
	MSTF H 0 A_JumpIfInventory("Mana2", 16, 1)
	Goto Ready
    RVNS B 0 A_PlayWeaponSound("Weapons/RavenStaff/Fire2")
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -35, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -45, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), -55, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 35, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 45, 128)
    RVNS B 0 A_SpawnItemEx("RavenSmoke", 6, 0, Random(31, 33), 2, 0, Random(-0.5, 0.5), 55, 128)
    RVNS B 0 A_FireCustomMissile("PoweredRavenMissile", Random(-12, 12), 0, 0, 0, 0, Random(-4, 6))
    RVNS B 0 A_FireCustomMissile("PoweredRavenMissile", Random(-12, 12), 0, 0, 0, 0, Random(-4, 6))
    RVNS B 0 A_FireCustomMissile("PoweredRavenMissile", Random(-12, 12), 0, 0, 0, 0, Random(-4, 6))
	RVNS B 0 Bright A_TakeInventory("Mana1", 16)
	RVNS B 0 Bright A_TakeInventory("Mana2", 16)
    RVNS B 2 Offset(0, 35) A_FireCustomMissile("PoweredRavenMissile", Random(-12, 12), 0, 0, 0, 0, Random(-4, 6))
    RVNS B 2 Offset(0, 39)
    RVNS B 2 Offset(0, 45)
    RVNS B 6 Offset(0, 50)
    RVNS B 3 Offset(0, 46)
    RVNS B 3 Offset(0, 40)
    RVNS B 3 Offset(0, 37)
    RVNS B 3 Offset(0, 32)
    Goto Ready
  }
}


Actor RavenMissile
{
  Radius 11
  Height 8
  Scale 0.75
  Speed 30
  Damage ((Random(1, 8)*10)+ACS_ExecuteWithResult(556)-10)
  Projectile
  +ThruGhost
  +WINDTHRUST
  Species "Player"
	+THRUSPECIES
  SeeSound "Weapons/RavenStaff/Fire12"
  DeathSound "Weapons/RavenStaff/Hit"
  Decal MummyScorch
  States
  {
  Spawn:
    RVNP AABBCCDD 1 A_SpawnItemEx("RavenTrail", 0, Random(-2, 2), Random(-2, 2), 0, 0, 0, 0, 128)
    Loop
  Death:
    RVNP E 0 Bright A_SetTranslucent(0.7, 1)
    RVNP EFGHIJKLMN 3 Bright
    Stop
  }
}

Actor PoweredRavenMissile : RavenMissile
{
  Radius 11
  Height 8
  Speed 14
  Damage (Random(1,4)+ACS_ExecuteWithResult(556)/5-2)
  Projectile
  +SeekerMissile
  +Ripper
  -BloodSplatter
  +BloodlessImpact
  +HexenBounce
  +CanBounceWater
  -ThruGhost
  -WINDTHRUST
  BounceCount 10
  BounceFactor 1.0
  RenderStyle Translucent
  SeeSound ""
  Alpha 0.85
  ReactionTime 9
  States
  {
  Spawn:
    RVSR A 0 Bright
    RVSR A 0 A_PlaySound("Weapons/RavenStaff/RavenSight")
    RVSR A 0 Bright A_Jump(256, "Spawn1", "Spawn2", "Spawn3", "Spawn4")
  Spawn1: //This is just to randomize what frame they start on
    RVSR A 4 Bright
  Spawn2:
    RVSR B 4 Bright
  Spawn3:
    RVSR C 4 Bright
  Spawn4:
    RVSR D 4 Bright
  Idle:
    RVSR A 4 Bright A_SeekerMissile(50, 65) // | SMF_PRESICE)
    TNT1 A 0 Bright A_SpawnItemEx("RavenFeather", 0, 0, 0, 0, 0, 0, 0, 128, 192)
    RVSR B 4 Bright A_SeekerMissile(50, 66) // | SMF_PRESICE)
    TNT1 A 0 Bright A_SpawnItemEx("RavenFeather", 0, 0, 0, 0, 0, 0, 0, 128, 192)
    RVSR C 4 Bright A_SeekerMissile(50, 65) // | SMF_PRESICE)
    TNT1 A 0 Bright A_SpawnItemEx("RavenFeather", 0, 0, 0, 0, 0, 0, 0, 128, 192)
    RVSR D 4 Bright A_SeekerMissile(50, 65) // | SMF_PRESICE)
    TNT1 A 0 Bright A_SpawnItemEx("RavenFeather", 0, 0, 0, 0, 0, 0, 0, 128, 192)
    TNT1 A 0 Bright A_Countdown
    Loop
  Death:
    TNT1 A 0 A_Stop
    TNT1 A 0 A_PlaySound("Weapons/RavenStaff/RavenDeath")
    TNT1 A 0 A_SpawnItemEx("RavenFeather", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenFeather", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenFeather", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenFeather", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenFeather", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenSmoke", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenSmoke", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenSmoke", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 0 A_SpawnItemEx("RavenSmoke", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    TNT1 A 1 A_SpawnItemEx("RavenSmoke", 0, 0, 0, Random(1, 2), 0, Random(1, 2), Random(0, 360), 128)
    Stop
  }
}


ACTOR GauntletsOfTheNecromancer : Weapon
{
  +BLOODSPLATTER
  Weapon.SelectionOrder 2300
  +WEAPON.WIMPY_WEAPON
  +WEAPON.MELEEWEAPON
  Weapon.KickBack 0
  +UNDROPPABLE
  Weapon.AmmoType1 "Mana1"
  Weapon.AmmoType2 "Mana1"
  Weapon.AmmoUse1 1
  Weapon.AmmoUse2 2
  Weapon.AmmoGive1 25
  Weapon.UpSound "weapons/gauntletsactivate"
  Inventory.PickupMessage "GAUNTLETS OF THE NECROMANCER"
  Tag "Gauntlets of the Necromancer"
  Obituary "$OB_MPGAUNTLETS"

  States
  {
  Ready:
    GAUN GHI 4 A_WeaponReady
    Loop
  Deselect:
    GAUN G 1 A_Lower
    TNT1 A 0 A_Lower
	Loop
  Select:
    GAUN G 1 A_Raise
    TNT1 A 0 A_Raise
	Loop
  AltFire:
    GAUN J 4 A_PlayWeaponSound("weapons/gauntletsuse")
    GAUN K 4
  AltHold:
	GAUN L 0 Bright A_CheckReload
    GAUN L 4 Bright A_CustomPunch(15+(ACS_ExecuteWithResult(510,0,0,0))-10,1,0,"AltGauntletPuffs1",256)
	GAUN MN 4 Bright A_CustomPunch(15+(ACS_ExecuteWithResult(510,0,0,0))-10,1,0,"AltGauntletPuffs2",256)
    GAUN K 4 A_ReFire
    GAUN J 4 A_Light0
    Goto Ready
  Fire:
    GAUN P 4 A_PlayWeaponSound("weapons/gauntletsuse")
    GAUN Q 4
  Hold:
	GAUN R 0 Bright A_CheckReload
    GAUN R 4 Bright A_CustomPunch(15+(ACS_ExecuteWithResult(510,0,0,0))-10,1,0,"GauntletPuffs1",256)
	GAUN ST 4 Bright A_CustomPunch(15+(ACS_ExecuteWithResult(510,0,0,0))-10,1,0,"GauntletPuffs2",256)
    GAUN Q 4 A_ReFire
    GAUN P 4 A_Light0
    Goto Ready
  }
}

ACTOR GauntletPuffs1
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +PUFFGETSOWNER
  SeeSound "Gauntlets/HitThing"
  RenderStyle Translucent
  Alpha 0.4
  VSpeed 0.8
  States
  {
  Spawn:
  Crash:
    PUF1 IJKL 4 Bright
    Stop
  Melee:
	PUF1 I 1 Bright
	PUF1 I 3 Bright A_TakeFromTarget("Mana1", 1) 
    PUF1 JKL 4 Bright
    Stop
  }
}

ACTOR GauntletPuffs2
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +PUFFGETSOWNER
  SeeSound "Gauntlets/HitThing"
  RenderStyle Translucent
  Alpha 0.4
  VSpeed 0.8
  States
  {
  Spawn:
    PUF1 IJKL 4 Bright
    Stop
  }
}

ACTOR AltGauntletPuffs1
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +PUFFGETSOWNER
  SeeSound "Gauntlets/HitThing"
  RenderStyle Translucent
  Alpha 0.4
  VSpeed 0.8
  States
  {
  Spawn:
  Crash:
    PUF1 EFGH 4 Bright
    Stop
  Melee:
	PUF1 E 1 Bright
	PUF1 E 0 A_GiveToTarget("AltGauntletPuffsHealingThing",1)
	PUF1 E 3 Bright A_TakeFromTarget("Mana1", 2) 
    PUF1 FGH 4 Bright
    Stop
  }
}

ACTOR AltGauntletPuffs2
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PUFFONACTORS
  +PUFFGETSOWNER
  SeeSound "Gauntlets/HitThing"
  RenderStyle Translucent
  Alpha 0.4
  VSpeed 0.8
  States
  {
  Spawn:
  Crash:
    PUF1 EFGH 4 Bright
    Stop
  Melee:
	PUF1 E 1 Bright
	PUF1 E 0 A_GiveToTarget("AltGauntletPuffsHealingThing",1)
	PUF1 E 3 Bright
    PUF1 FGH 4 Bright
    Stop
  }
}

actor AltGauntletPuffsHealingThing : CustomInventory
{
  +FLOATBOB
  Inventory.PickupSound "pickup/health"
  States
  {
  Pickup:
    TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(553,0,0,0),"Pickedup")
    Fail
  Pickedup:
    TNT1 A 0 ACS_ExecuteAlways(554,0,ACS_ExecuteWithResult(553,0,0,0)/50,0,0)//Heal 1/6 of total health//A_GiveInventory("NewHealth",ACS_ExecuteWithResult(553,1,0,0))//HealThing(100)//ACS_ExecuteWithResult(553,1,0,0))
    stop
  }
}

ACTOR DarkPhoenixRod : Weapon
{
  Weapon.SelectionOrder 600
  Weapon.KickBack 0
  +UNDROPPABLE
  Weapon.AmmoUse1 5
  Weapon.AmmoGive1 25
  Weapon.AmmoType1 "Mana2"
  Weapon.AmmoUse2 1
  Weapon.AmmoGive2 0
  Weapon.AmmoType2 "Mana2"
  Inventory.PickupMessage "DARK PHOENIX ROD"
  Tag "Dark Phoenix Rod"
  AttackSound "weapons/phoenixrail"
  +BLOODLESSIMPACT
  States
  {
  Spawn:
    WPHX A -1
    Stop
  Ready:
    PHNX A 1 A_WeaponReady
    Loop
  Deselect:
    PHNX A 1 A_Lower
    TNT1 A 0 A_Lower
	Loop
  Select:
    PHNX A 1 A_Raise
    TNT1 A 0 A_Raise
	Loop
  Fire:
    PHNX B 5
	TNT1 AAAA 0 A_FireCustomMissile("DPhoenixShot1",random(-12,12),0,random(-12,12),random(-12,12))
	PHNX C 0 A_PlaySound("weapons/gauntletsuse")
    PHNX C 7 A_FireCustomMissile("DPhoenixShot1")
    PHNX DB 4
    PHNX B 0 A_ReFire
    Goto Ready
  AltFire:
    PHNX B 5
  AltHold:
    PHNX D 2 A_RailAttack(5+ACS_ExecuteWithResult(603)-10,0,1,"none","red",0,0,"DarkPhoenixRailPuff")
	PHNX E 2 A_RailAttack(5+ACS_ExecuteWithResult(603)-10,0,0,"none","black",1,0,"DarkPhoenixRailPuff")
    PHNX B 4 A_ReFire
    Goto Ready
  }
}

Actor DarkPhoenixRailPuff
{
	+BLOODLESSIMPACT
	-BLOODSPLATTER
	Species "Player"
	+THRUSPECIES
}

ACTOR DPhoenixShot1
{
Radius 6
Height 16
Speed 35
Damage (random(1,8)*5+ACS_ExecuteWithResult(556)-10)
Projectile
+RANDOMIZE
Species "Player"
	+THRUSPECIES
	+DOOMBOUNCE
	BounceFactor 1.0
	BounceCount 3
RenderStyle Add
Alpha 1.0
scale .5
SeeSound ""
DeathSound "cult/hit"
Decal "Scorch"
States
{
Spawn:
	SCBL A 1 BRIGHT A_SpawnItemEX("CultTrail1A")
	NULL AAA 0 A_Cstaffmissileslither
	SCBL A 1 BRIGHT A_SpawnItemEX("CultTrail1A")
	NULL AAA 0 A_Cstaffmissileslither
	SCBL A 1 BRIGHT A_SpawnItemEX("CultTrail1A")
	NULL AAA 0 A_Cstaffmissileslither
	SCBL B 1 BRIGHT A_SpawnItemEX("CultTrail1B")
	NULL AAA 0 A_Cstaffmissileslither
	SCBL B 1 BRIGHT A_SpawnItemEX("CultTrail1B")
	NULL AAA 0 A_Cstaffmissileslither
	SCBL B 1 BRIGHT A_SpawnItemEX("CultTrail1B")
	NULL AAA 0 A_Cstaffmissileslither
	Loop
Death:
	NULL AAAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL C 1 BRIGHT
	NULL AAAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL C 1 BRIGHT
	NULL AAAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL C 1 BRIGHT
	NULL AAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL D 1 BRIGHT
	NULL AAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL D 1 BRIGHT
	NULL AAA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL D 1 BRIGHT
	NULL AA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL E 1 BRIGHT
	NULL AA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL E 1 BRIGHT
	NULL AA 0 A_SpawnItemEx("CultTrail2",0,0,0,random(-8,8),random(-8,8),random(-8,8),random(8,360))
	SCBL E 1 BRIGHT
	Stop
}
}


ACTOR CultTrail1A
{
+NOCLIP
+NOINTERACTION
+NOGRAVITY
	+CLIENTSIDEONLY
renderstyle ADD
alpha 0.9
scale .5
States
{
Spawn:
SCBL A 1 BRIGHT A_fadeout
Loop
}
}

ACTOR CultTrail1B
{
+NOCLIP
+NOINTERACTION
+NOGRAVITY
	+CLIENTSIDEONLY
renderstyle ADD
alpha 0.9
scale .5
States
{
Spawn:
SCBL B 1 BRIGHT A_fadeout
Loop
}
}

ACTOR CultTrail2
{
+NOCLIP
+NOINTERACTION
+NOGRAVITY
	+CLIENTSIDEONLY
renderstyle ADD
alpha 0.3
scale .5
States
{
Spawn:
NULL A 2
CBT1 ABCDEF 2 BRIGHT
CBT1 GHIJ 1 BRIGHT A_fadeout
Stop
}
}