// RoW = Ring of Wizardry (reduces mana usage by half, odd values except for 1 rounded up)

//==========================================================
//
// Fighter Weapons
//
//==========================================================

//--- Slot 1 ---//

// Normal
/*								Now in ZScript to improve hit detection
ACTOR FGauntlets : FWeapFist replaces FWeapFist
{
    Tag "Fists"
    Game Hexen
    +CHEATNOTWEAPON
    +BLOODSPLATTER
    +WEAPON.MELEEWEAPON
    +INVENTORY.UNDROPPABLE
    Weapon.SisterWeapon "FGauntletsPowered"
    Weapon.KickBack 150
    MeleeRange 128
    States
    {
    Select:
	FPCH A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	FPCH A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	FPCH A 1 A_WeaponReady
	Loop
    Fire:
	FPCH B 4 Offset (5, 40)
	FPCH C 4 Offset (5, 40)
	FPCH D 4 Offset (5, 40) A_FPunchAttack
	FPCH C 4 Offset (5, 40)
	FPCH B 4 Offset (5, 40) A_ReFire
	Goto Ready
    Fire2:
	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 2 Offset (5,40)
	FPCH C 2 Offset (5,40)
	FPCH F 3 Offset (5,40) A_CustomPunch(random(40,55),1,0,"PunchPuff",128)
	FPCH G 3 Offset (5,40)
	FPCH H 3 Offset (5,40) A_CustomPunch(random(40,55),1,0,"PunchPuff",128)
	FPCH I 2 Offset (5,40)
	FPCH J 2 Offset (5,40)
	TNT1 A 8 A_ReFire
	Goto Ready
    }
}

// Powered

ACTOR FGauntletsPowered : Gauntlets
{
    Tag "Fists"
    Game Hexen
    +POWERED_UP
    +CHEATNOTWEAPON
    Weapon.YAdjust 9
    Weapon.SisterWeapon "FGauntlets"
    States
    {
    Ready:
	FPCH KLM 4 A_WeaponReady
	Loop
    Select:
	FPCH A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	FPCH A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Fire:
	FPCH N 4 A_PlaySound("weapons/gauntletsuse",7)
	FPCH O 4
    Hold:
	FPCH P 0 Bright A_FireBullets(0,0,1,6,"GauntletPuffNoPain",4,256)
	FPCH P 4 Bright A_GauntletAttack(1)
	FPCH Q 0 Bright A_FireBullets(0,0,1,6,"GauntletPuffNoPain",4,256)
	FPCH Q 4 Bright A_GauntletAttack(1)
	FPCH R 0 Bright A_FireBullets(0,0,1,6,"GauntletPuffNoPain",4,256)
	FPCH R 4 Bright A_GauntletAttack(1)
	FPCH O 4 A_ReFire
	FPCH N 4 A_Light0
	Goto Ready
    AltFire:
	FPCH S 4 A_PlayWeaponSound("weapons/gauntletsuse")
	FPCH T 4
    AltHold:
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH U 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH U 4 Bright A_GauntletAttack(0)
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH V 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH V 4 Bright A_GauntletAttack(0)
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH W 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH W 4 Bright A_GauntletAttack(0)
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH U 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH U 4 Bright A_GauntletAttack(0)
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH V 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH V 4 Bright A_GauntletAttack(0)
	FPCH U 0 A_FireCustomMissile("GauntletManaDrain",0,0,0,0)
	FPCH W 0 Bright A_FireBullets(0,0,1,5,"GauntletPuffNoPain",4,56)
	FPCH W 4 Bright A_GauntletAttack(0)
	FPCH T 4 A_ReFire
	FPCH S 4 A_Light0
	Goto Ready
    }
}
*/
// Extra

ACTOR GauntletPuff3 : GauntletPuff1 replaces GauntletPuff1
{
    +PUFFGETSOWNER
    States
    {
    Spawn:
	GPUF EFGH 4 Bright
	Stop
    }
}

ACTOR GauntletPuff4 : GauntletPuff2 replaces GauntletPuff2
{
    +PUFFGETSOWNER
    DamageType "PGauntlets"
    States
    {
    Spawn:
	GPUF ABCD 4 Bright
	Stop
    }
}

ACTOR GauntletPuffNoPain
{
    +NOPAIN
    +BLOODLESSIMPACT
    +DONTREFLECT
}

ACTOR GauntletManaDrain
{
    PROJECTILE
    +NOPAIN
    +BLOODLESSIMPACT
    DamageType "GManaDrain"
    Damage 1
    Speed 8
    States
    {
    Spawn:
	TNT1 AAAAAAA 1
	Stop
    } 
}

//----------------------------------------------------------
/*								Now in ZScript (egad) to improve hit detection
ACTOR VorpalBlade : FighterWeapon 6151 //FWeapHammer 6151
{
    Tag "Vorpal Blade"
    +FLOORCLIP
    +AXEBLOOD
    +MELEEWEAPON
    +AMMO_OPTIONAL
    Scale 0.7
    Obituary "%o was beheaded by %k's vorpal blade."
    Inventory.PickupMessage "Vorpal Blade"
    States
    {
    Spawn:
	WVPL A -1
	Loop
    Ready:
	VRPL A 0 A_StopSound(6)
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,9)
	VRPL A 0 A_JumpIfInventory("Ubercharge",100,2)
	VRPL A 1 A_WeaponReady
	Goto Ready
	VRPL QQQRRR 1 A_WeaponReady
	Goto Ready+1
	VRPL A 0 A_PlaySound("weapons/vorpalblade/fire",6,0.5,1)
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL H 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL H 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL H 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL I 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL I 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL I 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL J 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL J 1 A_WeaponReady
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,2)
	VRPL A 0 A_StopSound(6)
	Goto Ready+1
	VRPL J 1 A_WeaponReady
	Goto Ready+1
    Select:
	TNT1 A 0 A_GiveInventory("AxeBloodCheck",1)
	VRPL A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Deselect:
	TNT1 A 0 A_TakeInventory("AxeBloodCheck",1)
	VRPL A 0 A_StopSound(6)
	VRPL A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Fire:
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,"UberchargeInUse")
	VRPL A 0 A_StopSound(6)
	VRPL A 0 A_JumpIfInventory("Ubercharge",100,"UberchargeFull")
	VRPL B 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0) // (60, 20)
	VRPL B 1 Offset (87, 33) // (30, 33)
	VRPL B 2 Offset (60, 45) // (8, 45)
	VRPL C 1 Offset (60, 45) // (8, 45)
	VRPL D 1 Offset (60, 45) // (8, 45)
	VRPL E 1 Offset (60, 45) A_CustomPunch(random(45,65),1,16,"VorpalPuff",150) // 115, 160 (8, 45)
	VRPL E 1 Offset (41, 58) A_CustomPunch(random(45,65),1,16,"VorpalPuff",150) // (-11, 58)
	VRPL F 1 Offset (60, 45) A_CustomPunch(random(45,65),1,16,"VorpalPuff",150) // (8, 45)
	VRPL F 2 Offset (44, 74) // (-8, 74)
	VRPL F 1 Offset (32, 96) // (-20, 96)
	VRPL F 6 Offset (19, 160) // (-33, 160)
	VRPL G 1
	VRPL A 1 Offset (8, 75) A_ReFire
	VRPL A 1 Offset (8, 65)
	VRPL A 1 Offset (8, 60)
	VRPL A 1 Offset (8, 55)
	VRPL A 1 Offset (8, 50)
	VRPL A 1 Offset (8, 45)
	Goto Ready+1
    UberchargeFull:
	VRPL B 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0) // (60, 20)
	VRPL B 1 Offset (87, 33) // (30, 33)
	VRPL B 2 Offset (60, 45) // (8, 45)
	VRPL S 1 Offset (-46, 45) // (8, 45)
	VRPL T 1 Offset (60, 45) // (8, 45)
	VRPL U 1 Offset (60, 45) A_CustomPunch(random(55,75),1,16,"VorpalPuff",150) // 140, 190 // (8, 45)
	VRPL U 1 Offset (41, 58) A_CustomPunch(random(55,75),1,16,"VorpalPuff",150) // (-11, 58)
	VRPL V 1 Offset (60, 45) A_CustomPunch(random(55,75),1,16,"VorpalPuff",150) // (8, 45)
	VRPL V 2 Offset (44, 74) // (-8, 74)
	VRPL V 1 Offset (32, 96) // (-20, 96)
	VRPL V 6 Offset (19, 160) // (-33, 160)
	VRPL G 1
	VRPL Q 1 Offset (8, 75) A_ReFire
	VRPL Q 1 Offset (8, 65)
	VRPL Q 1 Offset (8, 60)
	VRPL R 1 Offset (8, 55)
	VRPL R 1 Offset (8, 50)
	VRPL R 1 Offset (8, 45)
	Goto Ready+1
    UberchargeInUse:
	VRPL A 0 A_JumpIfInventory("FullCharge",1,"FireFull")
	VRPL A 0 A_JumpIfInventory("90PercentCharge",1,"Fire90")
	VRPL A 0 A_JumpIfInventory("80PercentCharge",1,"Fire80")
	VRPL A 0 A_JumpIfInventory("70PercentCharge",1,"Fire70")
	VRPL A 0 A_JumpIfInventory("60PercentCharge",1,"Fire60")
	VRPL A 0 A_JumpIfInventory("50PercentCharge",1,"Fire50")
	VRPL A 0 A_JumpIfInventory("40PercentCharge",1,"Fire40")
	VRPL A 0 A_JumpIfInventory("30PercentCharge",1,"Fire30")
	VRPL A 0 A_JumpIfInventory("20PercentCharge",1,"Fire20")
	VRPL A 0 A_JumpIfInventory("10PercentCharge",1,"Fire10")
	VRPL A 0 A_StopSound(6)
	Goto Fire
    FireFull:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0) // (60, 20)
	VRPL K 1 Offset (87, 33) // (30, 33)
	VRPL K 2 Offset (60, 45) // (8, 45)
	VRPL L 1 Offset (60, 45) // (8, 45)
	VRPL M 1 Offset (60, 45) // (8, 45)
	VRPL N 0 Offset (60, 45) A_FireProjectile("VorpalSlash",0,0,0,0,4)
	VRPL N 0 Offset (60, 45) A_CustomPunch(random(145,170),1,16,"UberchargePuffFull",156) // (8, 45)
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(145,170),1,16,"UberchargePuffFull",156) // (-11, 45)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(145,170),1,16,"UberchargePuffFull",156) // (8, 45)
	VRPL O 2 Offset (44, 74) // (-8, 74)
	VRPL O 1 Offset (32, 96) // (-20, 96)
	VRPL O 6 Offset (19, 160) // (-33, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire90:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(130,150),1,16,"UberchargePuff",156) // 300, 350
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(130,150),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(130,150),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire80:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(120,140),1,16,"UberchargePuff",156) // 285, 335
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(120,140),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(120,140),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire70:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(115,125),1,16,"UberchargePuff",156) // 270, 320
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(115,125),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(115,125),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire60:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(110,120),1,16,"UberchargePuff",156) // 240, 290
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(110,120),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(110,120),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire50:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(105,115),1,16,"UberchargePuff",156) // 225, 275
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(105,115),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(105,115),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire40:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(100,110),1,16,"UberchargePuff",156) // 210, 260
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(100,110),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(100,110),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire30:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(90,100),1,16,"UberchargePuff",156) // 180, 230
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(90,100),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(90,100),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire20:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(85,95),1,16,"UberchargePuff",156) // 165, 215
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(85,95),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(85,95),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    Fire10:
	VRPL K 2 Offset (117, 20) A_PlaySound("weapons/vorpalblade/attack",8,0.4,0)
	VRPL K 1 Offset (87, 33)
	VRPL K 2 Offset (60, 45)
	VRPL L 1 Offset (60, 45)
	VRPL M 1 Offset (60, 45)
	VRPL N 1 Offset (60, 45) A_CustomPunch(random(80,90),1,16,"UberchargePuff",156) // 150, 200
	VRPL N 1 Offset (41, 58) A_CustomPunch(random(80,90),1,16,"UberchargePuff",156)
	VRPL O 1 Offset (60, 45) A_CustomPunch(random(80,90),1,16,"UberchargePuff",156)
	VRPL O 2 Offset (44, 74)
	VRPL O 1 Offset (32, 96)
	VRPL O 6 Offset (19, 160)
	VRPL P 1
	VRPL I 1 Offset (8, 75) A_ReFire
	VRPL I 1 Offset (8, 65)
	VRPL I 1 Offset (8, 60)
	VRPL J 1 Offset (8, 55)
	VRPL J 1 Offset (8, 50)
	VRPL J 1 Offset (8, 45)
	Goto Ready+1
    AltFire:
	VRPL A 0 A_JumpIfInventory("UberchargeActive",1,"UberchargeInUse")
	VRPL A 0 A_JumpIfInventory("Ubercharge",10,1)
	Goto Ready
	VRPL A 0 A_PlaySound("Ignite",7,1.0,0)
	VRPL HIJ 3
	VRPL A 0 A_GiveInventory("UberchargeActive",1)
	VRPL A 0 A_SpawnItemEx("UberchargeSpawner",0,0,0,0,0,0,0,32,0)
	VRPL A 0 A_JumpIfInventory("Ubercharge",100,"FullActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",90,"90PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",80,"80PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",70,"70PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",60,"60PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",50,"50PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",40,"40PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",30,"30PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",20,"20PercentActivated")
	VRPL A 0 A_JumpIfInventory("Ubercharge",10,"10PercentActivated")
	Goto Ready+1
    FullActivated:
	VRPL A 0 A_GiveInventory("FullCharge",1)
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("UberchargeSpeedFull",1)
	Goto Ready+1
    90PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("UberchargeSpeed90",1)
	VRPL A 0 A_GiveInventory("90PercentCharge",1)
	Goto Ready+1
    80PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("UberchargeSpeed80",1)
	VRPL A 0 A_GiveInventory("80PercentCharge",1)
	Goto Ready+1
    70PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("UberchargeSpeed70",1)
	VRPL A 0 A_GiveInventory("70PercentCharge",1)
	Goto Ready+1
    60PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("UberchargeSpeed60",1)
	VRPL A 0 A_GiveInventory("60PercentCharge",1)
	Goto Ready+1
    50PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("50PercentCharge",1)
	Goto Ready+1
    40PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("40PercentCharge",1)
	Goto Ready+1
    30PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("30PercentCharge",1)
	Goto Ready+1
    20PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("20PercentCharge",1)
	Goto Ready+1
    10PercentActivated:
	VRPL A 0 A_GiveInventory("UberchargeResistance",1)
	VRPL A 0 A_GiveInventory("10PercentCharge",1)
	Goto Ready+1
    }
}
*/
ACTOR AxeBloodCheck : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR Ubercharge : Ammo
{
    +IGNORESKILL
    Inventory.MaxAmount 100
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    }
}

ACTOR VorpalBlood : AxeBlood replaces AxeBlood
{
    Radius 2
    Height 4
    +NOBLOCKMAP
    +NOGRAVITY
    +DROPOFF
    +NOTELEPORT
    +CANNOTPUSH
    -SOLID
    RenderStyle Add
    Scale 0.20
    Alpha 0.75
    Mass 5
    States
    {
    Spawn:
	VPFX B 0
	VPFX B 1 Bright A_SpawnItemEx("UberchargeGiver",0,0,0,0,0,0,0,32,0)
	VPFX B 1 Bright A_FadeOut(0.05)
	Goto Spawn+2
	Wait
    }
}

ACTOR VorpalPuff
{
    +NOEXTREMEDEATH
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +NOTIMEFREEZE
    DamageType "Vorpal"
    RenderStyle Translucent
    Alpha 0.4
    SeeSound "weapons/vorpalblade/hitflesh"
    PainSound "weapons/vorpalblade/hitwall"
    States
    {
    Spawn:
	TNT1 AA 0
//	FAXE FGHIJK 3
	Stop
    Crash:
	TNT1 A 0 A_PlaySound("weapons/vorpalblade/hitwall", CHAN_AUTO, 1.0, 0)
	FHFX STUVW 4
	Stop
    }
}

ACTOR UberchargePuff
{
    +NOBLOCKMAP
    +PUFFONACTORS
    +NOGRAVITY
//    +FOILINVUL
    DamageType "Vorpal"
    RenderStyle Add
    Scale 0.5
    SeeSound "FighterAxeHitThing"
    AttackSound "FighterHammerHitWall"
    Alpha 0.8
    States
    {
    Spawn:
	VRPP ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.03)
	Wait
    }
}

ACTOR UberchargePuffFull : UberchargePuff
{
    Scale 0.9
    DamageType "Vorpal"
    +EXTREMEDEATH
    States
    {
    Spawn:
	TNT1 A 0
	VRPP ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.03)
	Wait
    }
}

ACTOR VorpalSlash
{
    Radius 10
    Height 12
    Speed 20//28
    Damage 5
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    DamageType "Vorpal"
    Scale 0.75
    Alpha 0.75
    +RIPPER
    +NOBOSSRIP
//    +FOILINVUL
    +NODAMAGETHRUST
    +EXTREMEDEATH
    +DONTSPLASH
    States
    {
    Spawn:
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	VPFX A 0 Bright A_FadeOut(0.025)
	VPFX A 0 Bright A_Explode(25,64,0,0,48)
	VPFX A 1 Bright A_SpawnItem("SlashTrail",0,0)
	Goto Spawn+30
    }
}

ACTOR SlashTrail
{
    Radius 3
    Height 3
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    Scale 0.75
    Alpha 0.80
    States
    {
    Spawn:
	NULL A 1
	VPFX A 2 Bright A_FadeOut
	Goto Spawn+1
    }
}

ACTOR UberchargeGiver
{
    Radius 0
    Height 1
    Speed 0
    PROJECTILE
    RenderStyle None
    +LOOKALLAROUND
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +NOFEAR
    MinMissileChance 0
    States
    {
    Spawn:
	NULL A 0 
	NULL A 1 A_Look
    See:
	NULL A 1 A_Chase
    Missile:
	NULL A 0 A_FaceTarget
	NULL A 0 A_JumpIfInTargetInventory("AxeBloodCheck",1,1)
	Stop
	NULL A 0 A_JumpIfInTargetInventory("UberchargeActive",1,2)
	NULL A 1 A_GiveToTarget("Ubercharge",random(2,3))
	NULL A 1 A_GiveToTarget("RestoreHealth",random(3,5))
	NULL A 0
	Stop
    }
}

ACTOR UberchargeSpawner
{
    Radius 0
    Height 0
    +NOTIMEFREEZE
    +NOFEAR
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_SpawnItemEx("UberchargeDrainer",0,0,0,0,0,0,0,32,0)
        Stop 
    }
}

ACTOR UberchargeDrainer
{
    Radius 0
    Height 1
    Speed 0
    PROJECTILE
    RENDERSTYLE NONE
    +LOOKALLAROUND
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +NOFEAR
    MinMissileChance 0
    States
    {
    Spawn:
	TNT1 A 0 
	TNT1 A 1 A_Look
    See:
	TNT1 A 1 A_Chase
    Missile:
	TNT1 A 0 A_JumpIfInTargetInventory("UberchargeActive",1,1)
	Goto Death
	TNT1 A 0 A_JumpIfInTargetInventory("Ubercharge",2,4)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_GiveToTarget("RestoreHealth",1)
	TNT1 A 0 A_TakeFromTarget("Ubercharge",1)
	Goto Death
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_GiveToTarget("RestoreHealth",1)
	TNT1 A 8 A_TakeFromTarget("Ubercharge",1)
	Loop
    Death:
	TNT1 A 0 A_TakeFromTarget("UberchargeActive",1)
	TNT1 A 0 A_TakeFromTarget("FullCharge",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeResistance",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeSpeed60",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeSpeed70",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeSpeed80",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeSpeed90",1)
	TNT1 A 0 A_TakeFromTarget("PowerUberchargeSpeedFull",1)
	TNT1 A 0 A_TakeFromTarget("90PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("80PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("70PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("60PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("50PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("40PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("30PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("20PercentCharge",1)
	TNT1 A 0 A_TakeFromTarget("10PercentCharge",1)
	Stop
    }
}

ACTOR PowerUberchargeResistance : PowerProtection
{
    DamageFactor "Normal", 0.75
}

ACTOR UberchargeResistance : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Inventory.InterHubAmount 0
    Powerup.Type "UberchargeResistance"	
    Powerup.Duration 1200
    Powerup.Color "FF 40 00",0.1
}

ACTOR PowerUberchargeSpeed60 : PowerSpeed
{
    Inventory.Icon ""
    Speed 1.04
}

ACTOR UberchargeSpeed60 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "UberchargeSpeed60"	
    Powerup.Duration 1200
    Powerup.Color "00 00 30",0.2
}

ACTOR PowerUberchargeSpeed70 : PowerSpeed
{
    Inventory.Icon ""
    Speed 1.08
}

ACTOR UberchargeSpeed70 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "UberchargeSpeed70"	
    Powerup.Duration 1200
    Powerup.Color "00 00 30",0.2
}

ACTOR PowerUberchargeSpeed80 : PowerSpeed
{
    Inventory.Icon ""
    Speed 1.12
}

ACTOR UberchargeSpeed80 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "UberchargeSpeed80"	
    Powerup.Duration 1200
    Powerup.Color "00 00 30",0.1
}

ACTOR PowerUberchargeSpeed90 : PowerSpeed
{
    Inventory.Icon ""
    Speed 1.2
}

ACTOR UberchargeSpeed90 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "UberchargeSpeed90"	
    Powerup.Duration 1200
    Powerup.Color "00 00 30",0.2
}

ACTOR PowerUberchargeSpeedFull : PowerSpeed
{
    Inventory.Icon ""
    Speed 1.3
}

ACTOR UberchargeSpeedFull : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "UberchargeSpeedFull"	
    Powerup.Duration 1200
    Powerup.Color "00 00 30",0.2
}

ACTOR UberchargeActive : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR FullCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 90PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 80PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 70PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 60PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 50PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 40PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 30PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 20PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 10PercentCharge : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

//----------------------------------------------------------

//--- Slot 2 --- //

// Normal
/*								Now in ZScript to improve hit detection
ACTOR TimonsAxe : FighterWeapon replaces FWeapAxe
{
    Tag "Timon's Battle Axe"
    +FLOORCLIP
    +MELEEWEAPON
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.SisterWeapon "TimonsAxePowered"
    Inventory.PickupMessage "Timon's Battle Axe"
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 1 // 1 with RoW, 2 without
    Weapon.YAdjust -12
    Weapon.KickBack 50
    States
    {
    Spawn:
	WFAX A -1
        Loop
    Deselect: 
	FAXE A 1 A_Lower
	TNT1 AA 0 A_Lower 
	Loop
    Select: 
	FAXE A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	FAXE A 0 A_JumpIfInventory("BlueMana",2,2)
	FAXE A 1 A_WeaponReady
	Loop
	FAXE LLL 1 A_WeaponReady
	FAXE MMM 1 A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	FAXE A 0 A_JumpIfInventory("BlueMana",2,2)
	FAXE A 1 A_WeaponReady
	Loop
	REDX AAA 1 A_WeaponReady
	REDX BBB 1 A_WeaponReady
	Loop
    Fire:
	FAXE B 0 Offset (15, 32) A_JumpIfInventory("BlueMana",2,"FireGlow")
	FAXE B 3 Offset (15, 32)
	FAXE C 3 Offset (15, 32)
	FAXE D 2 Offset (15, 32)
	FAXE D 1 OffSet (-5, 70) A_CustomPunch(random(80,100),1,0,"BattleAxePuff",144)
	FAXE D 2 Offset (-25, 90)
	FAXE E 1 Offset (15, 32)
	FAXE E 2 Offset (10, 54)
	FAXE E 4 Offset (10, 150)
	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 3 Offset (15, 32)
	FAXE O 3 Offset (15, 32)
	FAXE P 2 Offset (15, 32)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_CustomPunch(1,1,1,"NoPuff",144)
	FAXE P 1 Offset (-5, 70) A_CustomPunch(random(220,260),1,1,"BattleAxePuffGlow",144) // 140, 170
	FAXE P 2 Offset (-25, 90)
	FAXE Q 1 Offset (15, 32)
	FAXE Q 2 Offset (10, 54)
	FAXE Q 4 Offset (10, 150)
	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
    AltFire:
	FAXE B 0 Offset (15, 32) A_JumpIfInventory("BlueMana",2,"AltFireGlow")
	FAXE B 4 Offset (15, 32)
	FAXE C 3 Offset (15, 32)
	FAXE D 2 Offset (15, 32)
	FAXE D 1 Offset (-5, 70) A_CustomPunch(random(80,100),1,0,"BattleAxePuff",144)
	FAXE D 2 Offset (-25, 90)
	FAXE E 1 Offset (15, 32)
	FAXE E 2 Offset (10, 54)
	FAXE E 5 Offset (10, 150)
	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
    AltFireGlow:
	FAXE N 4 Offset (15, 32)
	FAXE O 3 Offset (15, 32)
	FAXE P 2 Offset (15, 32)
	FAXE P 0 Offset (15, 32) A_JumpIfInventory("PowerHalfMana",1,2)
	FAXE P 0 Offset (15, 32) A_FireCustomMissile("AmmoUser",0,1,0)
	FAXE P 0 Offset (15, 32) 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 5 Offset (10, 150)
	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
    }
}

// Powered

ACTOR TimonsAxePowered : TimonsAxe
{
    Tag "Timon's Battle Axe"
    +FLOORCLIP
    +MELEEWEAPON
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    +POWERED_UP
    Weapon.SisterWeapon "TimonsAxe"
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoUse1 3 // 3 with RoW, 6 without
    Weapon.AmmoUse2 2 // 2 with RoW, 4 without
    Weapon.AmmoGive 0
    Weapon.YAdjust -12
    Weapon.KickBack 100
    States
    {
    Deselect: 
	FAXE A 1 A_Lower
	TNT1 AA 0 A_Lower 
	Loop
    Select: 
	FAXE A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	FAXE B 0 Offset (15, 32) A_JumpIfInventory("BlueMana",2,"FireGlow")
	FAXE B 3 Offset (15, 32)
	FAXE C 2 Offset (15, 32)
	FAXE D 2 Offset (15, 32)
	FAXE D 1 OffSet (-5, 70) A_CustomPunch(random(110,130),1,0,"BattleAxePuff",144)
	FAXE D 2 Offset (-25, 90)
	FAXE E 1 Offset (15, 32)
	FAXE E 2 Offset (10, 54)
	FAXE E 3 Offset (10, 150)
	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:
	REDX C 3 Offset (15, 32)
	REDX D 2 Offset (15, 32)
	REDX E 2 Offset (15, 32)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",144)
	REDX E 1 Offset (-5, 70) A_CustomPunch(random(460,550),1,1,"RedAxePuffGlow",144) // 300, 360
	REDX E 2 Offset (-25, 90)
	REDX F 1 Offset (15, 32)
	REDX F 2 Offset (10, 54)
	REDX F 3 Offset (10, 150)
	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
    AltFire:
	FAXE B 0 Offset (15, 32) A_JumpIfInventory("BlueMana",2,"AltFireGlow")
	FAXE B 3 Offset (15, 32)
	FAXE C 2 Offset (15, 32)
	FAXE D 2 Offset (15, 32)
	FAXE D 1 Offset (-5, 70) A_CustomPunch(random(110,130),1,0,"BattleAxePuff",144)
	FAXE D 2 Offset (-25, 90)
	FAXE E 1 Offset (15, 32)
	FAXE E 2 Offset (10, 54)
	FAXE E 5 Offset (10, 150)
	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
    AltFireGlow:
	REDX C 3 Offset (15, 32)
	REDX D 2 Offset (15, 32)
	REDX E 2 Offset (15, 32)
	REDX E 0 A_JumpIfInventory("PowerHalfMana",1,2)
	REDX E 0 A_FireCustomMissile("AmmoUser",0,1,0)
	REDX E 0 Offset (15, 32) A_PlaySound("FighterHammerMiss", CHAN_WEAPON, 1.0, 0)
	REDX E 1 Offset (-5, 70) A_FireCustomMissile("ThrownRedAxe",0,1,0,0,0)
	REDX E 2 Offset (-25, 90)
	REDX F 1 Offset (15, 32)
	REDX F 2 Offset (10, 54)
	REDX F 5 Offset (10, 150)
	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
    }
}
*/
// Extra

ACTOR ThrownAxe
{
    PROJECTILE
    -ACTIVATEPCROSS
    +FORCERADIUSDMG
    Radius 10
    Height 10
    Speed 28
    Damage (random(80,120))
    Scale 0.85
    DeathSound "weapons/thrownaxe/hit"
    DamageType "Axe"
    States
    {
    Spawn:
	THAX ABC 2 Bright
	THAX D 2 Bright A_PlaySound("FighterHammerContinuous")
	THAX EFG 2 Bright
	THAX H 2 Bright A_PlaySound("FighterHammerContinuous")
	Loop
    Death:
	TNT1 A 0 A_SpawnItemEx("BattleAxePuffGlow",0,0,0,0,0,0,0,32,0)
	TNT1 A 0 A_Scream
	TNT1 A 0 A_Explode(80,64,0)
	Stop
    }
}

ACTOR ThrownRedAxe : ThrownAxe
{
    Scale 0.95
    +SEEKERMISSILE
    Damage (random(160,200))
    Translation "217:217=173:173","218:219=175:176","146:163=164:185"
    States
    {
    Spawn:
	THAX A 0 Bright A_SpawnItemEx("RedAxeTrail1",0,0,0,0,0,0,0,32,0)
	THAX A 1 Bright
	THAX A 0 Bright A_SpawnItemEx("RedAxeTrail1",0,0,0,0,0,0,0,32,0)
	THAX A 1 Bright A_SeekerMissile(10,10,3,80)
	THAX B 0 Bright A_SpawnItemEx("RedAxeTrail2",0,0,0,0,0,0,0,32,0)
	THAX B 1 Bright
	THAX B 0 Bright A_SpawnItemEx("RedAxeTrail2",0,0,0,0,0,0,0,32,0)
	THAX B 1 Bright A_SeekerMissile(10,10,3,80)
	THAX C 0 Bright A_SpawnItemEx("RedAxeTrail3",0,0,0,0,0,0,0,32,0)
	THAX C 1 Bright
	THAX C 0 Bright A_SpawnItemEx("RedAxeTrail3",0,0,0,0,0,0,0,32,0)
	THAX C 1 Bright A_SeekerMissile(10,10,3,80)
	THAX D 0 Bright A_PlaySound("FighterHammerContinuous")
	THAX D 0 Bright A_SpawnItemEx("RedAxeTrail4",0,0,0,0,0,0,0,32,0)
	THAX D 1 Bright
	THAX D 0 Bright A_SpawnItemEx("RedAxeTrail4",0,0,0,0,0,0,0,32,0)
	THAX D 1 Bright A_SeekerMissile(10,10,3,80)
	THAX E 0 Bright A_SpawnItemEx("RedAxeTrail5",0,0,0,0,0,0,0,32,0)
	THAX E 1 Bright
	THAX E 0 Bright A_SpawnItemEx("RedAxeTrail5",0,0,0,0,0,0,0,32,0)
	THAX E 1 Bright A_SeekerMissile(10,10,3,80)
	THAX F 0 Bright A_SpawnItemEx("RedAxeTrail6",0,0,0,0,0,0,0,32,0)
	THAX F 1 Bright
	THAX F 0 Bright A_SpawnItemEx("RedAxeTrail6",0,0,0,0,0,0,0,32,0)
	THAX F 1 Bright A_SeekerMissile(10,10,3,80)
	THAX G 0 Bright A_SpawnItemEx("RedAxeTrail7",0,0,0,0,0,0,0,32,0)
	THAX G 1 Bright
	THAX G 0 Bright A_SpawnItemEx("RedAxeTrail7",0,0,0,0,0,0,0,32,0)
	THAX G 1 Bright A_SeekerMissile(10,10,3,80)
	THAX H 0 Bright A_PlaySound("FighterHammerContinuous")
	THAX H 0 Bright A_SpawnItemEx("RedAxeTrail8",0,0,0,0,0,0,0,32,0)
	THAX H 1 Bright
	THAX H 0 Bright A_SpawnItemEx("RedAxeTrail8",0,0,0,0,0,0,0,32,0)
	THAX H 1 Bright A_SeekerMissile(10,10,3,80)
	Loop
    Death:
	TNT1 A 0 A_SpawnItemEx("ThrownRedAxePuff",0,0,0,0,0,0,0,32,0)
	TNT1 A 0 A_Scream
	TNT1 A 0 A_Explode(180,96,0)
	Stop
    }
}

ACTOR RedAxeTrail1
{
    RenderStyle Add
    Translation "217:217=173:173","218:219=175:176","146:163=164:185"
    Scale 0.95
    Alpha 0.75
    PROJECTILE
    -ACTIVATEPCROSS
    States
    {
    Spawn:
	THAX A 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail2 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX B 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail3 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX C 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail4 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX D 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail5 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX E 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail6 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX F 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail7 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX G 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR RedAxeTrail8 : RedAxeTrail1
{
    States
    {
    Spawn:
	THAX H 2 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR BattleAxePuff : AxePuff replaces AxePuff
{
    +NOEXTREMEDEATH
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    RenderStyle Translucent
    Alpha 0.6
    SeeSound "FighterAxeHitThing"
    AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"
    States
    {
	Spawn:
	FHFX STUVW 4
	Stop
    }
}

ACTOR BattleAxePuffGlow : AxePuffGlow replaces AxePuffGlow
{
    +NOEXTREMEDEATH
    DamageType "AxeHit"
    States
    {
    Spawn:
	FAXE R 0 Bright
	FAXE RSTUVWX 4 Bright
	Stop
    }
}

ACTOR RedAxePuffGlow : BattleAxePuffGlow
{
    -NOEXTREMEDEATH
    +PUFFONACTORS
    RenderStyle Add
    Alpha 1
    States
    {
    Spawn:
	RAXP ABCDEF 4 Bright
	Stop
    }
}

ACTOR ThrownRedAxePuff : BattleAxePuffGlow
{
    -NOEXTREMEDEATH
    +PUFFONACTORS
    RenderStyle Add
    Alpha 1
    States
    {
    Spawn:
	RAXE ABCDEF 4 Bright
	Stop
    }
}

//----------------------------------------------------------

// Normal

ACTOR Mindblower : FighterWeapon 7011
{
    Tag "Mindblower"
    SpawnID 146
    +FLOORCLIP
    +INVENTORY.IGNORESKILL
    Weapon.SisterWeapon "MindblowerPowered"
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 1 // 2 with RoW, 3 without
    Inventory.PickupMessage "Mindblower"
    Inventory.PickupSound "weaponbuild"
    Scale 0.8
    States
    {
    Spawn:
	WVNM A -1
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	VNMG AAABBBCCCDDDCCCBBB 1 Bright A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	VNMG AAABBBCCCDDDCCCBBB 1 Bright A_WeaponReady
	Loop
    Deselect:
	VNMG A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Select:
	VNMG A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	VNMG BCD 1
    Hold:
	VNMG E 4 Bright A_PlaySound("weapons/mindblower/fire", CHAN_WEAPON, 1.0, 0)
//	TNT1 A 0 A_SetBlend("Green",0.1,5)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	VNMG F 3 Bright A_FireCustomMissile("MindblowerBall",0,1,0,0)
	TNT1 A 0 A_Refire
	VNMG DCB 1
	Goto Ready
    HoldHalfMana:
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	VNMG F 3 Bright A_FireCustomMissile("MindblowerBall",0,0,0,0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	VNMG F 3 Bright A_FireCustomMissile("MindblowerBall",0,1,0,0)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	TNT1 A 0 A_Refire("Hold")
	VNMG DCB 1
	Goto Ready
    AltFire:
	VNMG H 0 A_JumpIfInventory("PowerHalfMana",1,3)
	VNMG H 0 A_JumpIfInventory("BlueMana",3,4)
	VNMG H 0 A_SelectWeapon("FGauntlets")
	Goto Deselect
	VNMG H 0 A_JumpIfInventory("BlueMana",2,2)
	VNMG H 0 A_SelectWeapon("FGauntlets")
	Goto Deselect
	VNMG HIJ 2
    AltHold:
	VNMG N 3 Bright
	TNT1 A 0 A_PlaySound("weapons/mindblower/powered/fire", CHAN_WEAPON, 1.0, 0)
//	TNT1 A 0 A_SetBlend("Green",0.4,10)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse4",15,1,"NoPuff",4.5,0,0,20)  // 26, 38
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse4",15,1,"NoPuff",-4.5,0,0,20)
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse3",15,1,"NoPuff",3,0,0,20)
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse3",15,1,"NoPuff",-3,0,0,20)
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse2",15,1,"NoPuff",1.5,0,0,20)
	VNMG O 0 Bright A_RailAttack(random(34,46),0,0,none,"Chartreuse2",15,1,"NoPuff",-1.5,0,0,20)
	VNMG O 4 Bright A_RailAttack(random(34,46),0,1,none,"Chartreuse1",15,1,"NoPuff",0,0,0,20)
	VNMG PQ 3 Bright
	VNMG J 4 Bright
	VNMG JKLM 1 Bright
	TNT1 A 0 A_Refire
	VNMG JIH 2
	Goto Ready
    }
}

// Powered

ACTOR MindblowerPowered : Mindblower
{
    Tag "Mindblower"
    +FLOORCLIP
    +INVENTORY.IGNORESKILL
    +POWERED_UP
    Weapon.SisterWeapon "Mindblower"
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoUse1 2 // 2 with RoW, 4 without
    Weapon.AmmoUse2 4 // 4 with RoW, 8 without
    Scale 0.8
    States
    {
    Deselect:
	VNMG A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Select:
	VNMG A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	VNMG BCD 1
    Hold:
	TNT1 A 0 A_PlaySound("weapons/mindblower/altfire", CHAN_WEAPON, 1.0, 0)
//	TNT1 A 0 A_SetBlend("Green",0.2,6)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	TNT1 AAAA 0 A_FireCustomMissile("ScourShot1",frandom(-3,3),0,0,0)
	TNT1 AA 0 A_FireCustomMissile("ScourShot2",frandom(-3,3),0,0,0)
	VNMG F 4 Bright A_FireCustomMissile("ScourShot2",frandom(-3,3),1,0,0)
	VNMG DCB 2
	Goto Ready
    AltFire:
	VNMG HIJ 3
    AltHold:
	VNMG N 3 Bright
	TNT1 A 0 A_PlaySound("weapons/mindblower/powered/altfire", CHAN_WEAPON, 1.0, 0)
//	TNT1 A 0 A_SetBlend("Green",0.4,10)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	VNMG OOOOOOOOOOOOOO 0 A_FireCustomMissile("MindblowerBall2",frandom(-5,5),0,0,0,0,frandom(-5,5))
	VNMG O 0 A_FireCustomMissile("MindblowerBall2",frandom(-5,5),1,0,0,0,frandom(-5,5))
	VNMG Q 4 Bright
	VNMG JKLMLKJKLM 2
	TNT1 A 0 A_Refire
	VNMG JIH 3
	Goto Ready
    }
}

// Extra

ACTOR MindblowerBall
{
    PROJECTILE
    -ACTIVATEPCROSS
    +RANDOMIZE
    +NOEXTREMEDEATH
    Radius 6
    Height 8
    Speed 40
    Damage 6//16
    DeathSound "weapons/mindblower/explode1"
    RenderStyle Add
    Scale 1.15
    Alpha 0.75
    States
    {
    Spawn:
	PYBU AAABBB 1 Bright A_SpawnItemEx("MindblowerBallTrail",0,frandom(3,-3),frandom(3,-3),0,0,0.4,0,0)
	Loop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("MindblowerBallParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,359),0)
	PYBU C 0 Bright A_Explode(64,40,0)
	PYBU CDE 5 Bright
	Stop
    }
}

ACTOR MindblowerBall2 : MindblowerBall
{
    Radius 4
    Height 6
    Damage 12
    Scale 0.7
    States
    {
    Spawn:
	PYBU AAABBB 1 Bright A_SpawnItemEx("MindblowerBallTrail2",0,frandom(3,-3),frandom(3,-3),0,0,0.4,0,0)
	Loop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("MindblowerBallParticle2",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,359),0)
	PYBU CDE 5 Bright
	Stop
    }
}

ACTOR MindblowerBallTrail
{
    +NOINTERACTION
    Scale 0.2
    RenderStyle Add
    States
    {
    Spawn:
	PYBU FGHIJKLMN 3 Bright A_FadeOut(0.07)
	Stop
    }
}

ACTOR MindblowerBallTrail2 : MindblowerBallTrail
{
    Scale 0.12
}

ACTOR MindblowerBallParticle : MindblowerBallTrail
{
    Scale 0.1
}

ACTOR MindblowerBallParticle2 : MindblowerBallTrail
{
    Scale 0.03
}

ACTOR ScourShot1
{
    PROJECTILE
    -ACTIVATEPCROSS
    Radius 4
    Height 8
    Speed 40
    Damage 7
    Damagetype "Scour"
    DeathSound "weapons/mindblower/explode2"
    RenderStyle Add
    Alpha 0.67
    Scale 0.48
    States
    {
    Spawn:
	FVN1 AABBCCDD 1 Bright A_SpawnItemEx("BarbTrail",0,0,0,0,0,0,0,8)
	loop
    Death:
	TNT1 A 0 A_Explode(20,64,0)
	FVN1 DEGHIJ 4 Bright
	stop
    }
}

ACTOR Barbtrail
{   
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.4
    Scale 0.25
    States
    {
    Spawn:
	TNT1 A 1 Bright
	SSFX CDEFGH 2 Bright
	Stop 
    }
}

ACTOR Barbtrail2 : Barbtrail
{	
    Scale 0.4
}

ACTOR BarbFX
{   
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.75
    States
    {
    Spawn:
	TNT1 A 1 Bright
	SDFX ABCD 2 Bright
	Stop 
    }
}

ACTOR ScourShot2 : ScourShot1
{
    PROJECTILE
    -ACTIVATEPCROSS
    Speed 42
    Radius 6
    Height 8
    Damage 4
    DeathSound "weapons/mindblower/explode2"
    Damagetype "Scour"
    States
    {
    Spawn:
	D2FX AAABBBCCCDDDEEEFFF 1 Bright A_SpawnItemEx("Barbtrail2",0,0,0,0,0,0,0,8)
	loop
    Death:
	TNT1 A 0 A_Explode(26,64,0)
	FVN2 G 4 Bright
	D2FX HIJKL 4 Bright
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 3 ---//

// Normal
/*								Now in ZScript to improve hit detection
ACTOR FHammer : FWeapHammer replaces FWeapHammer
{
    Tag "Hammer Of Retribution"
    Game Hexen
    +BLOODSPLATTER
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    +WEAPON.MELEEWEAPON
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 1 // 1 with RoW, 2 without
    Weapon.AmmoGive1 25
    Weapon.KickBack 150
    Weapon.YAdjust -10
    Weapon.SisterWeapon "FHammerPowered"
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Inventory.PickupMessage "Hammer Of Retribution"
    States
    {
    Spawn:
	WFHM A -1
	Stop
    Select:
	FHMR A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Deselect:
	FHMR A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	FHMR A 1 A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	FHMR A 1 A_WeaponReady
	Loop
    Fire:
	FHMR B 4 Offset (5, 0)
	FHMR C 3 Offset (5, 0) A_CustomPunch(random(135,160),1,0,"FHammerPuff",128)
	FHMR D 3 Offset (5, 0)
	FHMR E 2 Offset (5, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"FireHalfMana")
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",3,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,5)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,4)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("FHammerMissile",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    FireHalfMana:
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",1,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,4)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,3)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("FHammerMissile",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    AltFire:
	FHMR B 4 Offset (5, 0)
	FHMR C 3 Offset (5, 0) A_CustomPunch(random(120,140),1,0,"FHammerPuff",128)
	FHMR D 3 Offset (5, 0)
	FHMR E 2 Offset (5, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"AltFireHalfMana")
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",2,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,4)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,3)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("HomingHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    AltFireHalfMana:
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",1,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,3)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,2)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("HomingHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    }
}

// Powered

ACTOR FHammerPowered : FHammer
{
    Tag "Hammer Of Retribution"
    Game Hexen
    Weapon.SelectionOrder 900
    +BLOODSPLATTER
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    +WEAPON.MELEEWEAPON
    +POWERED_UP
    Weapon.AmmoUse1 3 // 3 with RoW, 6 without
    Weapon.AmmoUse2 2 // 2 with RoW, 4 without
    Weapon.AmmoGive1 0
    Weapon.KickBack 200
    Weapon.YAdjust -10
    Weapon.SisterWeapon "FHammer"
    Weapon.AmmoType1 "GreenMana"
    Inventory.PickupMessage "Hammer Of Retribution"
    States
    {
    Spawn:
	WFHM A -1
	Stop
    Select:
	FHMR A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Deselect:
	FHMR A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Fire:
	FHMR B 4 Offset (5, 0)
	FHMR C 3 Offset (5, 0) A_CustomPunch(random(300,360),1,0,"FHammerPuff",128)
	FHMR D 3 Offset (5, 0)
	FHMR E 2 Offset (5, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"FireHalfMana")
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",6,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,4)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,3)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("NapalmHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    FireHalfMana:
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",3,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,3)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,2)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("NapalmHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    AltFire:
	FHMR B 4 Offset (5, 0)
	FHMR C 3 Offset (5, 0) A_CustomPunch(random(280,340),1,0,"FHammerPuff",128)
	FHMR D 3 Offset (5, 0)
	FHMR E 2 Offset (5, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"FireHalfMana")
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",4,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,4)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,3)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("HomingNapalmHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    AltFireHalfMana:
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("GreenMana",2,2)
	FHMR E 0 Offset (5, 0) A_Jump(256,3)
	FHMR E 0 Offset (5, 0) A_JumpIfInventory("HammerCheck",1,2)
	FHMR E 0 Offset (5, 150) A_FireCustomMissile("HomingNapalmHammer",0,1,0,0)
	FHMR E 8 Offset (5, 150)
	FHMR A 1 Offset (0, 60)
	FHMR A 1 Offset (0, 50)
	FHMR A 1 Offset (0, 40)
	FHMR A 1
	Goto Ready
    }
}
*/
// Extra

ACTOR FHammerMissile : HammerMissile replaces HammerMissile
{
    -ACTIVATEPCROSS
    Damage 18
    DamageType "Hammer"
    States
    {
    Death:
	FHFX I 3 Bright A_SetTranslucent(1,1)
	FHFX J 3 Bright
	FHFX K 3 Bright A_Explode(160,160,0,0,64)
	FHFX LM 3 Bright
	FHFX N 3 Bright
	FHFX OPQR 3 Bright
	Stop
    }
}

ACTOR HomingHammer : FHammerMissile
{
    Translation "164:185=164:178"//"164:185=231:239"
    +SEEKERMISSILE
    +CANBOUNCEWATER
    +BOUNCEONWALLS
    +USEBOUNCESTATE
    BounceType Hexen
    BounceFactor 1.0
    BounceCount 3
    WallBounceFactor 1.0
    ReactionTime 150
    Scale 0.65
    Speed 20
    Damage 10
    States
    {
    Spawn:
	FHFX AB 2 Bright A_CountDown // A_SeekerMissile(4,7,3,50,2)
	FHFX B 0 Bright A_PlaySound("FighterHammerContinuous")
	FHFX CDEFGH 2 Bright A_CountDown // A_SeekerMissile(4,7,7,50,2)
	Loop
    Bounce:
	FHFX A 0 A_SeekerMissile(90,90,3,256)
	FHFX A 0 A_SeekerMissile(90,90,3,256)
	Goto Spawn
    Death:
	FHFX I 3 Bright A_SetTranslucent(1,1)
	FHFX J 3 Bright
	FHFX K 3 Bright A_Explode(120,140,0)
	FHFX LM 3 Bright
	FHFX N 3 Bright
	FHFX OPQR 3 Bright
	Stop
    }
}

ACTOR FHammerPuff : HammerPuff replaces HammerPuff
{
    +PUFFGETSOWNER
    States
    {
    Spawn:
	FHFX S 0
	FHFX S 4 A_GiveToTarget("HammerCheck",1)
	FHFX TU 4
	FHFX V 4 A_TakeFromTarget("HammerCheck",1)
	FHFX W 4
	Stop
    }
}

ACTOR HammerCheck : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
}


ACTOR NapalmHammer
{
    Speed 25
    Radius 14
    Height 20
    Damage 18
    DamageType "Fire"
    PROJECTILE
    -ACTIVATEPCROSS
    Translation "164:185=122:145"
    DeathSound "FighterHammerExplode"
    States
    {
    Spawn:
	FHFX A 2 Bright
	FHFX B 2 Bright A_PlaySound("FighterHammerContinuous")
	FHFX CDEFGH 2 Bright
	Loop
    Death:
	FHFX I 1 Bright A_SetTranslucent(1,1)
	FHFX I 2 Bright A_SpawnItemEx("HammerExplosionSpawner",0,0,-32,0,0,0,0,1056,0)
	FHFX J 3 Bright
	FHFX K 3 Bright A_Explode(150,165,0)
	FHFX LM 3 Bright
	FHFX N 3 Bright
	FHFX OPQR 3 Bright
	Stop
    }
}

ACTOR HomingNapalmHammer : NapalmHammer
{
    +SEEKERMISSILE
    +CANBOUNCEWATER
    +BOUNCEONWALLS
    +USEBOUNCESTATE
    BounceType Hexen
    BounceFactor 1.0
    BounceCount 3
    WallBounceFactor 1.0
    ReactionTime 150
    Scale 0.65
    Speed 20
    Damage 14
    Translation "164:185=122:136"
    States
    {
    Spawn:
	FHFX AB 2 Bright A_CountDown // A_SeekerMissile(4,7,3,50,2)
	FHFX B 0 Bright A_PlaySound("FighterHammerContinuous")
	FHFX CDEFGH 2 Bright A_CountDown // A_SeekerMissile(4,7,3,50,2)
	Loop
    Bounce:
	FHFX A 0 A_SeekerMissile(90,90,3,256)
	FHFX A 0 A_SeekerMissile(90,90,3,256)
	Goto Spawn
    Death:
	FHFX I 1 Bright A_SetTranslucent(1,1)
	FHFX I 2 Bright A_SpawnItemEx("HomingHammerExplosionSpawner",0,0,-32,0,0,0,0,1056,0)
	FHFX J 3 Bright
	FHFX K 3 Bright A_Explode(100,120,0)
	FHFX LM 3 Bright
	FHFX N 3 Bright
	FHFX OPQR 3 Bright
	Stop
    }
}

ACTOR HammerExplosionSpawner
{
    +NOGRAVITY
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)	// 1064
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,8)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,6)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,4)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,2)
	TNT1 A 5 Bright A_SpawnItemEx("HammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0
	Stop
    }
}

ACTOR HomingHammerExplosionSpawner
{
    +NOGRAVITY
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,8)
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,6)
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,4)
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0 Bright A_Jump(127,2)
	TNT1 A 5 Bright A_SpawnItemEx("HomingHammerExplosion",random(0,40),random(-20,20),random(-8,20),0,0,0,0,1056,0)
	TNT1 A 0
	Stop
    }
}

ACTOR HammerExplosion
{
    PROJECTILE
    -ACTIVATEPCROSS
    +FIREDAMAGE
    +NOGRAVITY
    +FORCERADIUSDMG
    +NODAMAGETHRUST
    Speed 0
    Radius 8
    Height 8
    DeathSound "DragonFireballExplode"
    Renderstyle Add
    States
    {
    Spawn:
	CFCF Q 4 Bright
	CFCF R 3 Bright
	CFCF S 4 Bright A_Scream
	CFCF T 3 Bright A_Explode(random(64,72),128,0)
	CFCF U 4 Bright
	CFCF V 3 Bright
	CFCF W 4 Bright
	CFCF X 3 Bright
	CFCF Y 4 Bright
	CFCF Z 3 Bright
	Stop
    }
}

ACTOR HomingHammerExplosion
{
    PROJECTILE
    -ACTIVATEPCROSS
    +FIREDAMAGE
    +NOGRAVITY
    +FORCERADIUSDMG
    +NODAMAGETHRUST
    Speed 0
    Radius 8
    Height 8
    DeathSound "DragonFireballExplode"
    Renderstyle Add
    States
    {
    Spawn:
	CFCF Q 4 Bright
	CFCF R 3 Bright
	CFCF S 4 Bright A_Scream
	CFCF T 3 Bright A_Explode(random(40,56),128,0)
	CFCF U 4 Bright
	CFCF V 3 Bright
	CFCF W 4 Bright
	CFCF X 3 Bright
	CFCF Y 4 Bright
	CFCF Z 3 Bright
	Stop
    }
}

//----------------------------------------------------------

// Normal

ACTOR DragonClaw : FighterWeapon 7012
{
    Tag "Dragon Claw"
    SpawnID 147
    +FLOORCLIP
    +INVENTORY.IGNORESKILL
    +FLOATBOB
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 1 // 2 with RoW, 3 without
    Weapon.YAdjust 10
    Weapon.SisterWeapon "DragonClawPowered"
    Inventory.PickupMessage "Dragon Claw"
    Inventory.PickupSound "weaponbuild"
    States
    {
    Spawn:
	WBLS A -1
	Stop
    Ready:
	BLSR A 1 A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	BLSR A 1 A_WeaponReady
	Loop
    Deselect:
	BLSR A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Select:
	BLSR A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	BLSR BC 3
    Hold:
	TNT1 A 0 A_PlaySound("weapons/blastershoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	BLSR D 2 Bright A_FireBullets(5.625,5.625,1,3*(random(12,16)),"FBlasterPuff",1)
	BLSR CB 2
	BLSR A 0 A_ReFire
	Goto Ready
    HoldHalfMana:
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	BLSR D 2 Bright A_FireBullets(5.625,5.625,1,3*(random(12,16)),"FBlasterPuff",0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	BLSR D 2 Bright A_FireBullets(5.625,5.625,1,3*(random(12,16)),"FBlasterPuff",1)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	BLSR CB 2
	BLSR A 0 A_ReFire("Hold")
	Goto Ready
    AltFire:
	BLSR B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	BLSR B 0 A_JumpIfInventory("GreenMana",3,4)
	BLSR B 0 A_SelectWeapon("FGauntlets")
	Goto Deselect
	BLSR B 0 A_JumpIfInventory("GreenMana",2,2)
	BLSR B 0 A_SelectWeapon("FGauntlets")
	Goto Deselect
	BLSR BC 3
    AltHold:
	TNT1 A 0 A_PlaySound("weapons/blastershoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	BLSR D 3 Bright A_FireBullets(6,6,12,2*(random(5,8)),"FBlasterPuff2",1)
	BLSR CB 3
	BLSR A 5
	BLSR A 0 A_ReFire
	Goto Ready
    }
}

// Powered

ACTOR DragonClawPowered : DragonClaw
{
    Tag "Dragon Claw"
    +FLOORCLIP
    +INVENTORY.IGNORESKILL
    +FLOATBOB
    +POWERED_UP
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoUse1 2 // 2 with RoW, 4 without
    Weapon.AmmoUse2 5 // 5 with RoW, 10 without
    Weapon.YAdjust 10
    Weapon.SisterWeapon "DragonClaw"
    States
    {
    Spawn:
	R015 J 0
	Stop
    Deselect:
	BLSR A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Select:
	BLSR A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	BLSR BC 0
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	BLSR D 3 Bright A_FireCustomMissile("FBlasterFX1")
	BLSR CB 4
	BLSR A 0 A_ReFire
	Goto Ready
    AltFire:
	BLSR BC 0
    AltHold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	BLSR D 4 Bright A_FireCustomMissile("BlasterPoweredFX") //A_FireBullets(6,6,12,3*(random(1,8)),"FBlasterPuff",1)
	BLSR CB 5
	BLSR A 5
	BLSR A 0 A_ReFire
	Goto Ready
    }
}

// Extra

ACTOR FBlasterPuff : BlasterPuff replaces BlasterPuff
{
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    +BRIGHT
}


ACTOR FBlasterPuff2 : FBlasterPuff
{
    SeeSound ""
}

ACTOR FBlasterFX1 : BlasterFX1
{
    Radius 12
    Height 8
    Speed 184
    Damage 6
    SeeSound "weapons/blastershoot"
    DeathSound "weapons/blasterhit"
    +SPAWNSOUNDSOURCE 
    States
    {
    Spawn:
	XF18 NM 4 Bright
	Loop
    Death:
	XF18 A 3 Bright A_SpawnRippers
	XF18 B 3 Bright
	XF18 CDEFG 4 Bright
	Stop
    }
}

ACTOR FRipper : Ripper replaces Ripper
{
    Radius 8
    Height 6
    Speed 14
    Damage 6
    PROJECTILE
    -ACTIVATEPCROSS
    +NOBOSSRIP
    +RIPPER
    DeathSound "weapons/blasterpowhit"
    States
    {
    Spawn:
	FX18 M 4
	FX18 N 5
	Loop
    Death:
	FX18 OPQRS 4 Bright
	Stop
    }
}

ACTOR BlasterPoweredFX : BlasterFX1
{
    PROJECTILE
    -ACTIVATEPCROSS
    Speed 60
    Damage 40
    Radius 5
    Height 5
    +NODAMAGETHRUST
    +NOEXTREMEDEATH
    DeathSound "weapons/blasterapowhit"
    States
    {
    Death:
	TNT1 AAAAA 0 A_SpawnItemEx("BPRailShooter",0,0,0,1,1,1,random(1,360),32)
	TNT1 AAAAAAAA 0 A_SpawnItemEx("BPRailShooter2",0,0,0,1,1,1,random(1,360),32)
	XF18 AB 3 Bright
	XF18 CDEFG 4 Bright
	Stop
    }
}

ACTOR BPRailShooter
{ 
    +FRIENDLY
    MONSTER
    Radius 1
    Height 1
    Speed 0
    +NOGRAVITY
    +NOCLIP
    +LOOKALLAROUND
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTARGET
    -SOLID
    -SHOOTABLE
    MinMissileChance 0
    RenderStyle None
    ReactionTime 25
    States
    {
	Spawn:
	TNT1 A 0 A_CountDown
	TNT1 A 1 A_Look
    See:
	TNT1 A 0 A_Chase
    Missile:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomRailgun(random(80,160),0,none,"FF FF FF",9,0,0,"BlasterRailPuff")
	Stop
    }
}

ACTOR BPRailShooter2
{
    Radius 1
    Height 1
    PROJECTILE
    -ACTIVATEPCROSS
    +THRUACTORS
    Speed 1
    Damage 0
    scale 0.4
    States
    {
    Spawn:
	TNT1 A 0
	FX16 D 4 A_CustomRailgun(random(80,160),0,none,"FF FF FF",9,0,0,"BlasterRailPuff")
	Stop
    }
}

ACTOR BlasterRailPuff
{
    +NODAMAGETHRUST
    +NOEXTREMEDEATH
    +NOBLOOD
    DamageType "Dragon"
    States
    {
    Spawn:
	TNT1 A 0
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 4 ---//

// Normal

ACTOR QuietusPiece1 : FWeaponPiece1 replaces FWeaponPiece1
{
    WeaponPiece.Weapon Quietus
    Inventory.PickupSound "PickupPiece"
}

ACTOR QuietusPiece2 : FWeaponPiece2 replaces FWeaponPiece2
{
    WeaponPiece.Weapon Quietus
    Inventory.PickupSound "PickupPiece"
}

ACTOR QuietusPiece3 : FWeaponPiece3 replaces FWeaponPiece3
{
    WeaponPiece.Weapon Quietus
    Inventory.PickupSound "PickupPiece"
}
/*								Now in ZScript to improve hit detection
ACTOR Quietus : FWeapQuietus replaces FWeapQuietus
{
    Tag "Quietus"
    Game Hexen
    -WEAPON.PRIMARY_USES_BOTH
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.AmmoUse1 1 // 4 with RoW (full hit), 2 without
    Weapon.AmmoUse2 7 // 7 with RoW, 14 without
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.KickBack 150
    Weapon.YAdjust 10
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Weapon.SisterWeapon "QuietusPowered"
    Inventory.PickupMessage "Quietus Assembled"
    Inventory.PickupSound "4thweapon/pickup"
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    Select:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto SelectNoMana
	FSRD A 1 Bright A_Raise
	TNT1 AA 0 A_Raise
	Loop
    SelectNoMana:
	FSD3 A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Deselect:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto DeselectNoMana
	FSRD A 1 Bright A_Lower
	TNT1 AA 0 A_Lower
	Loop
    DeselectNoMana:
	FSD3 A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Ready:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto ReadyNoMana
	FSRD A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	FSRD AAAA 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	FSRD BBBB 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	FSRD CCCC 1 Bright A_WeaponReady
	Loop
    ReadyNoMana:
	FSD3 A 0 A_JumpIfInventory("GoldMana",1,"Ready")
	FSD3 A 1 A_WeaponReady
	Loop
    ReadyPowered:
	FSRD A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	FSD2 AAAA 1 Bright A_WeaponReady
	FSRD B 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	FSD2 BBBB 1 Bright A_WeaponReady
	FSRD C 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	FSD2 CCCC 1 Bright A_WeaponReady
	Loop
    Fire:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana
	FSRD D 3 Bright Offset (5, 36)
	FSRD E 3 Bright Offset (5, 36)
	FSRD F 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	FSRD F 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	FSRD F 0 Bright Offset (5, 36) A_Jump(256,2)
	FSRD F 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,16,"QuietusPuff",160)
	FSRD G 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	FSRD G 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	FSRD G 0 Bright Offset (5, 36) A_Jump(256,2)
	FSRD G 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,16,"QuietusPuff",160)
	FSRD H 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	FSRD H 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,17,"QuietusPuff",160)
	FSRD H 0 Bright Offset (5, 36) A_Jump(256,2)
	FSRD H 1 Bright Offset (5, 36) A_CustomPunch(random(180,210),1,16,"QuietusPuff",160)
	FSRD I 2 Bright Offset (5, 36)
	FSRD I 7 Bright Offset (5, 150)
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana+7
	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
    FireNoMana:
	FSD3 BC 3 Offset (5, 36)
	FSD3 D 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 D 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 E 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 E 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 F 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 F 1 Offset (5, 36) A_CustomPunch(random(60,80),1,16,"QuietusPuffNoMana",160)
	FSD3 H 2 Offset (5, 36)
	TNT1 A 7
	FSD3 A 1 Offset (5, 60)
	FSD3 A 1 Offset (5, 55)
	FSD3 A 1 Offset (5, 50)
	FSD3 A 1 Offset (5, 45)
	FSD3 A 1 Offset (5, 40)
	Goto Ready
    AltFire:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana
	FSRD DE 3 Bright Offset (5, 36)
	FSRD F 1 Bright Offset (5, 36)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FSRD G 1 Bright Offset (5, 36) A_FSwordAttack
	FSRD H 1 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
    }
}

// Powered

ACTOR QuietusPowered : Quietus
{
    Tag "Quietus"
    Game Hexen
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    -WEAPON.PRIMARY_USES_BOTH
    +POWERED_UP
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 1 // 1 with RoW, 2 without
    Weapon.AmmoUse2 12 // 12 with RoW, 24 without
    Weapon.KickBack 150
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Weapon.SisterWeapon "Quietus"
    Inventory.PickupMessage "Quietus Assembled"
    Inventory.PickupSound "WeaponBuild"
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    Select:
	FSD2 A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto SelectNoMana
	FSD2 A 1 Bright A_Raise
	TNT1 AA 0 A_Raise
	Loop
    SelectNoMana:
	FSD3 A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Deselect:
	FSD2 A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto DeselectNoMana
	FSD2 A 1 Bright A_Lower
	TNT1 AA 0 A_Lower
	Loop
    DeselectNoMana:
	FSD3 A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Fire:
	FSD2 A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana
	FSD2 D 3 Bright Offset (5, 36)
	FSD2 E 3 Bright Offset (5, 36)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 F 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 F 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 G 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 G 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 H 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_CustomPunch(1,1,1,"NoPuff",160)
	FSD2 H 1 Bright Offset (5, 36) A_CustomPunch(random(360,425),1,17,"QuietusPoweredPuff",160)
	FSD2 I 2 Bright Offset (5, 36)
	FSD2 I 7 Bright Offset (5, 150)
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana+7
	FSD2 A 1 Bright Offset (5, 60)
	FSD2 B 1 Bright Offset (5, 55)
	FSD2 C 1 Bright Offset (5, 50)
	FSD2 A 1 Bright Offset (5, 45)
	FSD2 B 1 Bright Offset (5, 40)
	Goto Ready
    FireNoMana:
	FSD3 BC 3 Offset (5, 36)
	FSD3 D 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 D 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 E 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 E 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 F 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 F 1 Offset (5, 36) A_CustomPunch(random(80,100),1,16,"QuietusPuffNoMana",160)
	FSD3 H 2 Offset (5, 36)
	TNT1 A 7
	FSD3 A 1 Offset (5, 60)
	FSD3 A 1 Offset (5, 55)
	FSD3 A 1 Offset (5, 50)
	FSD3 A 1 Offset (5, 45)
	FSD3 A 1 Offset (5, 40)
	Goto Ready
    AltFire:
	FSRD A 0 A_JumpIfInventory("GoldMana",1,1)
	Goto FireNoMana
	FSD2 DE 3 Bright Offset (5, 36)
	FSD2 F 0 Bright Offset (5, 36) A_PlaySound("weapons/quietus/powered", CHAN_WEAPON, 1.0, 0)
	FSD2 F 1 Bright Offset (5, 36)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",27,0,-18)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",21,0,-14)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",15,0,-10)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",9,0,-6)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",3,0,-2)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",-3,0,2)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",-9,0,6)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",-15,0,10)
	FSD2 G 0 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",-21,0,14)
	FSD2 G 1 Bright Offset (5, 36) A_FireCustomMissile("QuietusPFloorAttack",-27,1,18)
	FSD2 H 1 Bright Offset (5, 36)
	FSD2 I 2 Bright Offset (5, 36)
	FSD2 I 10 Bright Offset (5, 150)
	FSD2 A 1 Bright Offset (5, 60)
	FSD2 B 1 Bright Offset (5, 55)
	FSD2 C 1 Bright Offset (5, 50)
	FSD2 A 1 Bright Offset (5, 45)
	FSD2 B 1 Bright Offset (5, 40)
	Goto Ready
    }
}
*/
// Extra

ACTOR QuietusAttack : FSwordMissile replaces FSwordMissile
{
    Damage 20
//    +FOILINVUL
    DamageType "Quietus"
    States
    {
    Spawn:
	FSFX A 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX A 1
	FSFX A 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX B 1
	FSFX B 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX B 1
	FSFX C 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX C 1
	FSFX C 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX A 1
	FSFX A 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX A 1
	FSFX B 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX B 1
	FSFX B 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX C 1
	FSFX C 1 Bright A_SpawnItemEx("QuietusSwordFlame",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(0,360),32)
	FSFX C 1
	Loop
    Death:
	FSFX D 4 Bright
	FSFX E 3 Bright A_FSwordFlames
	FSFX F 4 Bright A_Explode(random(250,300),160,0)
	FSFX G 3 Bright A_Explode(random(160,200),96,0)
	FSFX H 4 Bright A_Explode(random(90,130),64,0)
	FSFX I 3 Bright A_Explode(random(50,80),32,0)
	FSFX J 4 Bright A_Explode(random(24,48),24,0)
	FSFX KLM 3 Bright
	Stop
    }
}

ACTOR QuietusSwordFlame
{
    +NOBLOCKMAP
    +NOGRAVITY
    DamageType "Quietus"
    RenderStyle Translucent
    Alpha 0.65
    Scale 0.8
    States
    {
    Spawn:
	FSFX NOPQRSTUVW 3 Bright A_FadeOut(0.06)
	Stop
    }
}

ACTOR QuietusPFloorAttack
{
    Speed 18
    Radius 14
    Height 32
    Damage 7
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +NODAMAGETHRUST
    +EXTREMEDEATH
    +FLOORHUGGER
//    +FOILINVUL
    +BLOODLESSIMPACT
    DamageType "QuietusTrail"
    States
    {
    Spawn:
	TNT1 A 3 A_SpawnItemEx("QuietusPFloorTrail",0,0,0,0,0,0,0,32,0)
	Loop
    Death:
	TNT1 A 0
	Stop
    }
}

ACTOR QuietusPFloorTrail
{
    Speed 0
    Radius 14
    Height 48
    Damage 7
    DamageType "QuietusTrail"
    Scale 0.5
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +NODAMAGETHRUST
    +EXTREMEDEATH
    +FLOORHUGGER
    +BLOODLESSIMPACT
//    +NOBOSSRIP
//    +FOILINVUL
    +SHADOW
    RenderStyle Add
    States
    {
    Spawn:
	F2SX AAAAAABBBBBBCCCCCCDDDDDDEEEEEEFFFFFF 1 Bright
	Stop
    }
}

ACTOR QuietusPuff : AxePuffGlow
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +EXTREMEDEATH
    +PUFFGETSOWNER
    RenderStyle Add
    DamageType "Sword"
    Alpha 0.75
    Scale 0.85
    States
    {
    Spawn:
//	TNT1 A 0
//	TNT1 A 0 A_JumpIfInTargetInventory("PowerHalfMana",1,8)
	QUFX ABCDEFG 4 Bright
	Stop
	TNT1 A 0 A_JumpIfInTargetInventory("HalfMana2",1,12)
	TNT1 A 0 A_JumpIfInTargetInventory("GoldMana",1,2)
	TNT1 A 0 A_Jump(256,3)
	TNT1 A 0 A_GiveToTarget("GoldMana",1)
	TNT1 A 0 A_GiveToTarget("HalfMana2",1)
	QUFX ABCDEFG 4 Bright
	Stop
	TNT1 A 0 A_TakeFromTarget("HalfMana2",1)
	QUFX ABCDEFG 4 Bright
	Stop
    }
}

ACTOR QuietusPoweredPuff : QuietusPuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +EXTREMEDEATH
    RenderStyle Add
    DamageType "Sword"
    Alpha 0.75
    Scale 0.8
    States
    {
    Spawn:
	QPFX ABCDEF 4 Bright
	Stop
    }
}

ACTOR QuietusPuffNoMana : FHammerPuff
{
    States
    {
    Spawn:
	FHFX S 0
	FHFX S 1
	FHFX S 3 A_GiveToTarget("HammerCheck",1)
	FHFX TU 4
	FHFX V 4 A_TakeFromTarget("HammerCheck",1)
	FHFX W 4
	Stop
    }
}

//==========================================================
//
// Cleric Weapons
//
//==========================================================

//--- Slot 1 ---//

// Normal
/*								Now in ZScript to improve hit detection
ACTOR ClericMace : CWeapMace replaces CWeapMace
{
    Tag "Mace"
    Game Hexen
    Weapon.SelectionOrder 3500
    Weapon.KickBack 150
    Weapon.YAdjust -8
    +INVENTORY.UNDROPPABLE
    +CHEATNOTWEAPON
    Weapon.SisterWeapon "ClericMacePowered"
    States
    {
    Select:
	CMCE A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CMCE A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CMCE A 1 A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CMCE A 1 A_WeaponReady
	Loop
    Fire:
	CMCE B 2 Offset (75, 20) // 60
	CMCE B 1 Offset (45, 33) // 30
	CMCE B 2 Offset (23, 45) // 8
	CMCE C 1 Offset (23, 45) // 8
	CMCE D 1 Offset (23, 45) // 8
	CMCE E 1 Offset (23, 45) // 8
	CMCE E 1 Offset (4, 58) A_CustomPunch(random(55,70),1,1,"MacePuff",136) // -11
	CMCE F 1 Offset (23, 45) // 8
	CMCE F 2 Offset (7, 74) // -8
	CMCE F 1 Offset (-5, 96) // -20
	CMCE F 6 Offset (-18, 160) // -33
	CMCE A 1 Offset (8, 75) A_ReFire
	CMCE A 1 Offset (8, 65)
	CMCE A 1 Offset (8, 60)
	CMCE A 1 Offset (8, 55)
	CMCE A 1 Offset (8, 50)
	CMCE A 1 Offset (8, 45)
	Goto Ready
    AltFire:
	CMCE B 2 Offset (75, 20)
	CMCE B 1 Offset (45, 33)
	CMCE B 2 Offset (23, 45)
	CMCE C 1 Offset (23, 45)
	CMCE D 1 Offset (23, 45)
	CMCE E 1 Offset (23, 45)
	CMCE E 1 Offset (4, 58) A_CustomPunch(random(120,130),1,1,"AltMacePuff",136)
	CMCE F 1 Offset (23, 45)
	CMCE F 2 Offset (7, 74)
	CMCE F 1 Offset (-5, 96)
	CMCE F 6 Offset (-18, 160)
	TNT1 A 6
	CMCE A 1 Offset (8, 75) A_ReFire
	CMCE A 1 Offset (8, 65)
	CMCE A 1 Offset (8, 60)
	CMCE A 1 Offset (8, 55)
	CMCE A 1 Offset (8, 50)
	CMCE A 1 Offset (8, 45)
	Goto Ready
    }
}

// Powered

ACTOR ClericMacePowered : ClericMace
{
    Tag "Mace"
    Game Hexen
    Weapon.SelectionOrder 3500
    Weapon.KickBack 150
    Weapon.YAdjust -8
    Weapon.SisterWeapon "ClericMace"
    +BLOODSPLATTER
    +POWERED_UP
    +CHEATNOTWEAPON
    States
    {
    Select:
	CMCE A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CMCE A 1 A_Lower
	TNT1 A 0 A_Lower
	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(155,170),1,1,"LDMacePuff",136)
	CMCE F 1 Offset (8, 45)
	CMCE F 2 Offset (-8, 74)
	CMCE F 1 Offset (-20, 96)
	CMCE F 6 Offset (-33, 160)
	CMCE A 1 Offset (8, 75) A_ReFire
	CMCE A 1 Offset (8, 65)
	CMCE A 1 Offset (8, 60)
	CMCE A 1 Offset (8, 55)
	CMCE A 1 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(185,220),1,1,"MDMacePuff",136)
	CMCE F 1 Offset (8, 45)
	CMCE F 2 Offset (-8, 74)
	CMCE F 1 Offset (-20, 96)
	CMCE F 6 Offset (-33, 160)
	TNT1 A 6
	CMCE A 1 Offset (8, 75) A_ReFire
	CMCE A 1 Offset (8, 65)
	CMCE A 1 Offset (8, 60)
	CMCE A 1 Offset (8, 55)
	CMCE A 1 Offset (8, 50)
	CMCE A 1 Offset (8, 45)
	Goto Ready
    }
}
*/
// Extra

ACTOR MacePuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    RenderStyle "Translucent"
    Alpha 0.6
    VSpeed 0.8
    SeeSound "FighterHammerHitThing"
    AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"
    DamageType "Melee"
    States
    {
    Spawn:
	FHFX STUVW 4
	Stop
    }
}

ACTOR AltMacePuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +NOEXTREMEDEATH
    RenderStyle Add
    SeeSound "FighterHammerHitThing"
    AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"
    DamageType "Melee"
    Alpha 0.5
    Scale 0.65
    States
    {
    Spawn:
	MCEP ABCDEDCBA 2 Bright
	Stop
    }
}

ACTOR LDMacePuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +NOEXTREMEDEATH
    RenderStyle Add
    SeeSound "FighterAxeHitThing"
    AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"
    DamageType "LifeDrain"
    Alpha 0.5
    Scale 0.8
    States
    {
    Spawn:
	LDMC ABCDEF 3 Bright
	Stop
    }
}

ACTOR MDMacePuff : LDMacePuff
{
    DamageType "ManaDrain"
    States
    {
    Spawn:
	MDMC ABCDEF 3 Bright
	Stop
    }
}

//----------------------------------------------------------

ACTOR Redeemer : ClericWeapon 6152
{
    Tag "Redeemer's Hand"
    Inventory.PickupMessage "Redeemer's Hand"
    States
    {
    Spawn:
	REDE A -1
	Loop
    Ready:
	REDE B 0 Bright A_StopSound(CHAN_7)
	REDE BBBBB 1 A_WeaponReady
	REDE CCCCC 1 A_WeaponReady
	REDE DDDDD 1 A_WeaponReady
	REDE EEEEE 1 A_WeaponReady
	Loop
    Deselect:
	REDE B 0 A_StopSound(CHAN_7)
	REDE B 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	REDE B 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Fire:
	REDE F 0 Bright A_PlayWeaponSound("weapons/redeemer/fire")
	REDE F 1 Bright
	REDE G 1 Bright
	REDE H 1 Bright
	REDE I 1 Bright
	REDE I 0 Bright A_PlaySound("weapons/redeemer/loop",CHAN_7,1.0,1)
    Hold:
	REDE J 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE J 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE K 2 Bright
	REDE K 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE L 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE M 2 Bright
	REDE M 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE N 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE N 0 Bright A_ReFire
	REDE O 0 Bright A_StopSound(CHAN_7)
	REDE O 0 Bright A_PlayWeaponSound("weapons/redeemer/stop")
	REDE O 2 Bright
	REDE P 2 Bright
	REDE Q 2 Bright
	REDE R 2 Bright
	Goto Ready
    AltFire:
	REDE F 0 A_JumpIfInventory("RedeemedSoul",1,"CE")
	REDE F 0 Bright A_PlayWeaponSound("weapons/redeemer/fire")
	REDE F 1 Bright
	REDE G 1 Bright
	REDE H 1 Bright
	REDE I 1 Bright
	REDE I 0 Bright A_PlaySound("weapons/redeemer/loop",CHAN_7,1.0,1)
    AltHold:
	REDE J 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE J 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE K 2 Bright
	REDE K 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE L 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE M 2 Bright
	REDE M 0 Bright A_PlaySound("weapons/redeemer/hit",CHAN_WEAPON,0.5)
	REDE N 2 Bright A_FireBullets(0,0,1,random(16,24),"SoulScepterPuff",0,640)
	REDE N 0 Bright A_ReFire
	REDE O 0 Bright A_StopSound(CHAN_7)
	REDE O 0 Bright A_PlayWeaponSound("weapons/redeemer/stop")
	REDE O 2 Bright
	REDE P 2 Bright
	REDE Q 2 Bright
	REDE R 2 Bright
	Goto Ready
    CE:
	REDE F 0 A_JumpIfInventory("RedeemedSoul",1,1)
	Goto Ready
	REDE FGHI 2 Bright
	REDE J 0 Bright A_PlaySound("weapons/redeemer/explodetrigger",CHAN_WEAPON,0.7)
	REDE J 2 Bright A_FireBullets(0,0,1,0,"RaisePuff",4,850)
	REDE OPQR 2
	REDE B 4 A_ReFire("CEHold")
	Goto Ready
    CEHold:
	REDE F 0 A_JumpIfInventory("RedeemedSoul",1,1)
	Goto Ready
	REDE FGHI 2 Bright
	REDE J 0 Bright A_PlaySound("weapons/redeemer/explodetrigger",CHAN_WEAPON,0.7)
	REDE J 2 Bright A_FireBullets(0,0,1,0,"RaisePuff",4,850)
	REDE OPQR 2
	REDE B 4 A_ReFire("CEHold")
	Goto Ready
    }
}

ACTOR RedeemedSoul : Ammo
{
    Inventory.Amount 1
    Inventory.MaxAmount 20
    +IGNORESKILL
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    }
}

ACTOR SoulScepterPuff : BulletPuff
{
    Radius 3
    Height 3
    +NOCLIP
    +ALWAYSPUFF
    +PUFFONACTORS
    +NOGRAVITY
    +BLOODLESSIMPACT
    -BLOODSPLATTER
//    +FOILINVUL
    +DONTSPLASH
    DamageType "Redeemer"
    States
    {
    Spawn:
    Melee:
	SSPF A 0 Bright ThrustThingZ(0,random(2,6),0,0)
	SSPF ABCD 3 Bright
	Stop
    Crash:
	TNT1 A 1
	Stop
    }
}

ACTOR SoulFragment
{
    Radius 1
    Height 1
    Damage (0)
    PROJECTILE
    -ACTIVATEPCROSS
    +DONTSPLASH
    +NOCLIP
    RenderStyle Add
    Alpha 0.15
    Scale 0.6
    States
    {
    Spawn:
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 Bright A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
    FadeOut:
	SSPS A 0 Bright A_Weave(frandom(1.5,3), 0, frandom(0.6,1.2), 0.0)
	SSPS A 1 A_SpawnItemEx("SoulFragmentTrail",0,Random(-1,1),Random(1,-1),0,0,0,0,128)
	SSPS A 0 A_Jump(128,1)
	Loop
	SSPS A 0 A_FadeOut(0.05)
	Loop
    Death:
	TNT1 A 1
	Stop
    }
}

ACTOR SoulFragmentTrail
{
    Radius 1
    Height 1
    Damage (0)
    PROJECTILE
    -ACTIVATEPCROSS
    +DONTSPLASH
    +NOCLIP
    RenderStyle Add
    Alpha 0.15
    Scale 0.6
    States
    {
    Spawn:
	SSPS BCD 3 Bright
	Stop
    }
}

ACTOR RaisePuff
{
    +PUFFONACTORS
    +PUFFGETSOWNER
    +ALLOWTHRUFLAGS
    +THRUACTORS
    +NOGRAVITY
    +DONTSPLASH
    States
    {
    Spawn:
	TNT1 A 2
	TNT1 A 0 Bright A_CheckProximity("CE","Sabreclaw",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","SabreclawNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FCentaur",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FCentaurNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FCentaurLeader",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FCentaurLeaderNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FlameCentaur",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FlameCentaurNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FEttin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FEttinNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FDemon1",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FDemon1Nin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","ChaosMutant",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","ChaosMutantNin",64.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","RedDemon",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","RedDemonNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","Hellion",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","HellionNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","Disciple",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","DiscipleNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","SkullWizard",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","SkullWizardNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FireGargoyle",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","FireGargoyleNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","IceGargoyle",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","IceGargoyleNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","VenomGargoyle",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","VenomGargoyleNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyFighter",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyFighterNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyCleric",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyClericNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyMage",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	TNT1 A 0 Bright A_CheckProximity("CE","EnemyMageNin",96.0,1,CPXF_DEADONLY|CPXF_SETMASTER)
	Stop
    CE:
	TNT1 A 0 A_RaiseMaster(2)
	TNT1 A 0 A_TakeFromTarget("RedeemedSoul",1)
	TNT1 A 0 A_Explode(1,100,0,0,100,0,0,"NoPuff","CE")
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 2 ---//

// Normal

ACTOR SerpentStaff : CWeapStaff replaces CWeapStaff
{
    Tag "Serpent Staff"
    Game Hexen
    SpawnID 32
    Weapon.SelectionOrder 1600
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 1 // 3 with RoW, 5 without
    Weapon.AmmoGive1 25
    Weapon.KickBack 150
    Weapon.YAdjust 10
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.SisterWeapon "SerpentStaffPowered"
    Inventory.PickupMessage "Serpent Staff"
    States
    {
    Spawn:
	WCSS A -1
	Stop
    Select:
	CSSF A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CSSF A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	CSSF A 1 A_CStaffInitBlink
	CSSF AAAAAAA 1 A_WeaponReady
	CSSF A 1 A_CStaffCheckBlink
	Goto Ready+1
    Fire:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"FireHalfMana")
	CSSF A 1 Offset (0, 45)
	CSSF J 1 Offset (0, 50) A_CStaffAttack
	CSSF J 1 Offset (0, 50)
	CSSF J 2 Offset (0, 45)
	CSSF A 2 Offset (0, 40)
	CSSF A 2 Offset (0, 36)
	Goto Ready+1
    FireHalfMana:
	CSSF A 1 Offset (0, 45) 
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,6)
	CSSF J 0 Offset (0, 50) A_PlayWeaponSound("ClericCStaffFire")
	CSSF J 0 Offset (0, 50) A_FireCustomMissile("FCStaffMissile",3,0,0,0)
	CSSF J 1 Offset (0, 50) A_FireCustomMissile("FCStaffMissile2",-3,0,0,0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,5)
	CSSF J 0 Offset (0, 50) A_PlayWeaponSound("ClericCStaffFire")
	CSSF J 0 Offset (0, 50) A_FireCustomMissile("FCStaffMissile",3,0,0,0)
	CSSF J 1 Offset (0, 50) A_FireCustomMissile("FCStaffMissile2",-3,1,0,0)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	CSSF J 1 Offset (0, 50)
	CSSF J 2 Offset (0, 45)
	CSSF A 2 Offset (0, 40)
	CSSF A 2 Offset (0, 36)
	Goto Ready+1
    Blink:
	CSSF BBBCCCCCBBB 1 A_WeaponReady
	Goto Ready+1
    Drain:
	CSSF K 10 Offset (0, 36) A_CustomPunch(random(15,30),1,0,"NoPuff",96)
	Goto Ready+1
    AltFire:
	CSSF A 0 A_PlaySound("weapons/serpentstaff/altfire", CHAN_WEAPON, 1.0, 0)
	CSSF A 1 Bright Offset (0, 45) A_FireCustomMissile("GreenGas",0,1,0,8)
	CSSF J 1 Bright Offset (0, 50) A_FireCustomMissile("GreenGas",0,0,0,8)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CSSF J 1 Bright Offset (0, 50) A_FireCustomMissile("GreenGas",0,0,0,8)
	CSSF J 1 Bright Offset (0, 50) A_FireCustomMissile("GreenGas",0,0,0,8)
	CSSF J 1 Bright Offset (0, 45) A_FireCustomMissile("GreenGas",0,1,0,8)
	CSSF J 1 Bright Offset (0, 45) A_FireCustomMissile("GreenGas",0,0,0,8)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CSSF J 1 Bright Offset (0, 40) A_FireCustomMissile("GreenGas",0,0,0,8)
	CSSF J 1 Bright Offset (0, 40) A_FireCustomMissile("GreenGas",0,0,0,8)
	CSSF J 1 Bright Offset (0, 36) A_FireCustomMissile("GreenGas",0,1,0,8)
	CSSF J 1 Bright Offset (0, 36) A_FireCustomMissile("GreenGas",0,0,0,8)
	CSSF A 10 Offset (0, 32)
	Goto Ready+1
    }
}

// Powered

ACTOR SerpentStaffPowered : SerpentStaff
{
    Tag "Serpent Staff"
    Game Hexen
    Weapon.SelectionOrder 1600
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 4 // 4 with RoW, 8 without
    Weapon.AmmoGive1 0
    Weapon.KickBack 150
    Weapon.YAdjust 10
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.SisterWeapon "SerpentStaff"
    +POWERED_UP
    Inventory.PickupMessage "Serpent Staff"
    States
    {
    Spawn:
	WCSS A -1
	Stop
    Select:
	CSSF A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CSSF A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Fire:
	CSSF A 1 Offset (0, 45)
	CSSF J 0 Offset (0, 50) A_PlaySound("weapons/serpentstaff/powered/fire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CSSF J 0 Offset (0, 50) A_FireCustomMissile("SerpentBolt",0,0,8,8,0)
	CSSF J 2 Offset (0, 50) A_FireCustomMissile("SerpentBolt",0,1,-8,8,0)
	CSSF J 2 Offset (0, 50)
	CSSF J 2 Offset (0, 45)
	CSSF A 3 Offset (0, 40)
	CSSF A 3 Offset (0, 36)
	Goto Ready+2
    AltFire:
	CSSF A 0 A_PlaySound("weapons/serpentstaff/altfire", CHAN_WEAPON, 1.0, 0)
	CSSF A 1 Bright Offset (0, 45)
	CSSF J 0 Offset (0, 50) A_PlaySound("weapons/serpentstaff/powered/altfire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CSSF J 1 Bright Offset (0, 50) A_FireCustomMissile("SerpentWeaveShot",0,1,0,8)
	CSSF J 1 Bright Offset (0, 50)
	CSSF J 1 Bright Offset (0, 50)
	CSSF J 2 Bright Offset (0, 45)
	CSSF J 2 Bright Offset (0, 45)
	CSSF J 2 Bright Offset (0, 40)
	CSSF J 2 Bright Offset (0, 40)
	CSSF J 2 Bright Offset (0, 36)
	CSSF J 2 Bright Offset (0, 36)
	CSSF A 10 Offset (0, 32)
	Goto Ready+2
    }
}

// Extra

ACTOR FCStaffMissile : CStaffMissile replaces CStaffMissile
{
    Damage 11
    DamageType "Serpent"
    +NOEXTREMEDEATH
    States
    {
    Spawn:
	CSSF D 0 A_CustomMissile("Barbtrail",0,0,0,0)
	CSSF D 1 A_CStaffMissileSlither
	CSSF D 0 A_CustomMissile("Barbtrail",0,0,0,0)
	CSSF D 1 A_CStaffMissileSlither
	CSSF E 0 A_CustomMissile("Barbtrail",0,0,0,0)
	CSSF E 1 A_CStaffMissileSlither
	CSSF E 0 A_CustomMissile("Barbtrail",0,0,0,0)
	CSSF E 1 A_CStaffMissileSlither
	Loop
    }
}

ACTOR FCStaffMissile2 : FCStaffMissile
{
    WeaveIndexXY 32
}

ACTOR NoPuff
{
    RenderStyle None
    States
    {
    Spawn:
	TNT1 A 0
	Stop
    }
}

ACTOR FCStaffPuff : CStaffPuff replaces CStaffPuff
{
    +PUFFGETSOWNER
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIfInTargetInventory("PowerHalfMana",1,6)
	FHFX STUVW 4
	Stop
	TNT1 A 0 A_JumpIfInTargetInventory("HalfMana2",1,10)
	TNT1 A 0 A_JumpIfInTargetInventory("BlueMana",1,2)
	TNT1 A 0 A_Jump(256,3)
	TNT1 A 0 A_GiveToTarget("BlueMana",1)
	TNT1 A 0 A_GiveToTarget("HalfMana2",1)
	FHFX STUVW 4
	Stop
	TNT1 A 0 A_TakeFromTarget("HalfMana2",1)
	FHFX STUVW 4
	Stop
    }
}

ACTOR GreenGas
{
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    +STRIFEDAMAGE
    Mass 1
    Radius 8
    Height 6
    Speed 8
    DamageType "GreenGas"
    Damage (random(4,9))
    RenderStyle Add
    States
    {
    Spawn:
	CFIR ABCDEFGHIJKLMOP 2 Bright 
	Stop
    }
}

ACTOR SerpentBolt
{
    Radius 11
    Height 8
    Speed 32
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    RenderStyle Add
    Damage 16
    DeathSound "weapons/thrownaxe/hit"
    States
    {
    Spawn:
	FX03 B 1 Bright A_SpawnItemEx("CrossbowFX4",random2[BoltSpark]()*0.015625,random2[BoltSpark]()*0.015625,0,0,0,0,0,2,32)
	Loop
    Death:
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SerpentBoltParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,359),0)
	FX03 H 8 Bright A_Explode(96,80,0)
	FX03 IJ 8 Bright
	Stop
    }
}

ACTOR SerpentBoltParticle
{
    +NOINTERACTION
    RenderStyle Add
    Scale 1.25
    Alpha 1.0
    States
    {
    Spawn:
	VDMC G 4 Bright A_FadeOut
	Loop
    }
}
    

ACTOR SerpentWeaveShot
{
    Speed 22
    Radius 8
    Height 10
    Damage 30
    PoisonDamage 40
    RenderStyle Add
    Alpha 0.75
    PROJECTILE
    -ACTIVATEPCROSS
    +SEEKERMISSILE
    +NOEXTREMEDEATH
    DeathSound "weapons/serpentstaff/acidhit"
    States
    {
    Spawn:
	TNT1 A 0 A_Weave(random(1,3),random(1,3),frandom(0.0,2.0),frandom(0.0,2.0))
	TNT1 A 0 A_SeekerMissile(4,4,3)
	TNT1 A 1 A_SpawnItemEx("SerpentWeaveTrail",0,0,0,0,0,0,0,32,0)
	Loop
    Death:
	CSFX O 0 A_Explode(128,128,0)
	TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SerpentWeaveBall",0,0,0,frandom(1,4),0,frandom(6,10),frandom(1,360),32,0)
	CSFX OPQRST 3
	Stop
    }
}

ACTOR SerpentWeaveTrail
{
    PROJECTILE
    -ACTIVATEPCROSS
    Scale 0.35
    RenderStyle Add
    Alpha 0.75
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(256,1,2,3,4)
	CSFX BCDEFGHIJKLMN 3 A_FadeOut(0.06)
	Stop
    }
}

ACTOR SerpentWeaveBall
{
    PROJECTILE
    -ACTIVATEPCROSS
    -NOGRAVITY
    +ROCKETTRAIL
    +RIPPER
    +BLOODLESSIMPACT
    +STRIFEDAMAGE
    +PAINLESS
    DamageType "Serpent"
    RenderStyle Add
    Scale 0.2
    Speed 7
    Radius 2
    Height 2
    Damage 2
    States
    {
    Spawn:
	PYBU M 3
	Loop
    Death:
	TNT1 A 0
	Stop
    }
}

//----------------------------------------------------------

// Normal

ACTOR ClericCrossbow : ClericWeapon 7013
{
    Tag "Crossbow"
    SpawnID 148
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 1 // 3 with RoW, 5 without
    Weapon.AmmoGive 25
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.SisterWeapon "ClericCrossbowPowered"
    Weapon.YAdjust 15
    Inventory.PickupMessage "Crossbow of Consecration"
    States
    {
    Spawn:
	WBOW A -1
	Stop
    Ready:
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW AAA 1 A_WeaponReady
	CRBW A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW AAA 1 A_WeaponReady
	CRBW B 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW BBB 1 A_WeaponReady
	CRBW B 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW BBB 1 A_WeaponReady
	CRBW C 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW CCC 1 A_WeaponReady
	CRBW C 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW CCC 1 A_WeaponReady
	Loop
    ReadyPowered:
	CRBW A 0 A_JumpIfInventory("BlueMana",6,1)
	Goto ReadyNoMana
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW HHH 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW HHH 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW III 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW III 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW JJJ 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW JJJ 1 A_WeaponReady
	Loop
    ReadyNoMana:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,3)
	CRBW A 0 A_JumpIfInventory("BlueMana",3,"Ready")
	CRBW N 1 A_WeaponReady
	Goto ReadyNoMana
	CRBW A 0 A_JumpIfInventory("BlueMana",6,"ReadyPowered")
	CRBW N 1 A_WeaponReady
	Loop
    Deselect:
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto DeselectNoMana
	CRBW A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    DeselectNoMana:
	CRBW N 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto SelectNoMana
	CRBW A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    SelectNoMana:
	CRBW N 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Fire:
	CRBW D 0 A_JumpIfInventory("PowerHalfMana",1,2)
	CRBW D 0 A_JumpIfInventory("BlueMana",3,2)
	Goto NoMana
	CRBW D 0 A_JumpIfInventory("BlueMana",2,1)
	Goto NoMana
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CRBW D 0 A_FireCustomMissile("CrossbowBolt",3.2,0,0,8)
	CRBW D 0 A_FireCustomMissile("CrossbowBolt",-3.2,0,0,8)
	CRBW D 6 A_FireCustomMissile("CrossbowBolt",0,1,0,8)
	CRBW D 0 A_JumpIfInventory("BlueMana",3,5)
	CRBW OPQN 4
	Goto ReadyNoMana
	CRBW DEFG 3
	CRBW AB 3
	CRBW C 5 A_ReFire
	Goto Ready
    AltFire:
	CRBW D 0 A_JumpIfInventory("PowerHalfMana",1,2)
	CRBW D 0 A_JumpIfInventory("BlueMana",5,2)
	Goto NoMana
	CRBW D 0 A_JumpIfInventory("BlueMana",3,1)
	Goto NoMana
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	TNT1 AAAA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CRBW D 6 A_FireCustomMissile("HellRainBolt",0,1,0,8)
	CRBW D 0 A_JumpIfInventory("BlueMana",5,5)
	CRBW OPQN 4
	Goto ReadyNoMana
	CRBW DEFG 3
	CRBW AB 3
	CRBW C 5 A_ReFire
	Goto Ready
    NoMana:
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	CRBW D 0 A_FireCustomMissile("NoManaBolt",3.2,0,0,6)
	CRBW D 0 A_FireCustomMissile("NoManaBolt",-3.2,0,0,6)
	CRBW D 6 A_FireCustomMissile("NoManaBolt",0,0,0,6)
	CRBW OPQN 4
	CRBW N 5 A_ReFire
	Goto ReadyNoMana
    }
}

// Powered

ACTOR ClericCrossbowPowered : ClericCrossbow
{
    Tag "Crossbow"
    Weapon.AmmoUse1 3 // 3 with RoW, 6 without
    Weapon.AmmoUse2 5 // 5 with RoW, 10 without
    Weapon.AmmoGive 0
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.SisterWeapon "ClericCrossbow"
    Weapon.YAdjust 15
    +POWERED_UP
    Inventory.PickupMessage "Crossbow of Consecration"
    States
    {
    Spawn:
	WBOW A -1
	Stop
    Deselect:
	CRBW A 0 A_JumpIfInventory("BlueMana",6,1)
	Goto DeselectNoMana
	CRBW H 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    DeselectNoMana:
	CRBW N 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	CRBW A 0 A_JumpIfInventory("BlueMana",6,1)
	Goto SelectNoMana
	CRBW H 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    SelectNoMana:
	CRBW N 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
/*
    Ready:
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW AAA 1 A_WeaponReady
	CRBW A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW AAA 1 A_WeaponReady
	CRBW B 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW BBB 1 A_WeaponReady
	CRBW B 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW BBB 1 A_WeaponReady
	CRBW C 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW CCC 1 A_WeaponReady
	CRBW C 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CRBW A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto ReadyNoMana
	CRBW CCC 1 A_WeaponReady
	Loop
    ReadyPowered:
	CRBW A 0 A_JumpIfInventory("BlueMana",6,1)
	Goto ReadyNoMana
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW HHH 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW HHH 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW III 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW III 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW JJJ 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CRBW JJJ 1 A_WeaponReady
	Loop
    ReadyNoMana:
	CRBW A 0 A_JumpIfInventory("BlueMana",6,"Ready")
	CRBW N 1 A_WeaponReady
	Loop
*/
    Fire:
	CRBW D 0 A_JumpIfInventory("PowerHalfMana",1,2)
	CRBW D 0 A_JumpIfInventory("BlueMana",6,2)
	Goto NoMana
	CRBW D 0 A_JumpIfInventory("BlueMana",3,1)
	Goto NoMana
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CRBW D 2 A_FireCustomMissile("PoweredBolt",0,1,0,8)
	CRBW D 0 A_FireCustomMissile("PoweredBolt",2.5,0,0,8)
	CRBW D 2 A_FireCustomMissile("PoweredBolt",-2.5,0,0,8)
	CRBW D 0 A_FireCustomMissile("PoweredBolt",5,0,0,8)
	CRBW D 6 A_FireCustomMissile("PoweredBolt",-5,0,0,8)
	CRBW D 0 A_JumpIfInventory("BlueMana",6,5)
	CRBW OPQN 4
	Goto ReadyNoMana
	CRBW DKLM 3
	CRBW HI 3
	CRBW J 5 A_ReFire
	Goto Ready
    AltFire:
	CRBW D 0 A_JumpIfInventory("PowerHalfMana",1,2)
	CRBW D 0 A_JumpIfInventory("BlueMana",10,2)
	Goto NoMana
	CRBW D 0 A_JumpIfInventory("BlueMana",5,1)
	Goto NoMana
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CRBW D 6 A_FireCustomMissile("MeteorBolt",0,1,0,8)
	CRBW D 0 A_JumpIfInventory("BlueMana",10,5)
	CRBW OPQN 4
	Goto ReadyNoMana
	CRBW DKLM 3
	CRBW HI 3
	CRBW J 5 A_ReFire
	Goto Ready
    NoMana:
	CRBW D 0 A_PlaySound("weapons/bowshoot", CHAN_WEAPON, 1.0, 0)
	CRBW D 0 A_FireCustomMissile("NoManaBolt",3.2,0,0,6)
	CRBW D 0 A_FireCustomMissile("NoManaBolt",-3.2,0,0,6)
	CRBW D 6 A_FireCustomMissile("NoManaBolt",0,0,0,6)
	CRBW OPQN 4
	CRBW N 5 A_ReFire
	Goto ReadyNoMana
    }
}

// Extra

ACTOR CrossbowBolt
{
    Radius 3
    Height 3
    Speed 42
    Damage 17
    Scale .75
    DamageType "Consecrate"
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    States
    {
    Spawn:
	CBLT A 1 Bright
	CBLT A 0 A_SpawnItemEx("CBoltTrail",0,0,0,0,0,0,0,8)
	Loop
    Death:
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("CBoltParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,359),0)
	TNT1 A 0 A_PlaySound("weapons/crossbow/arrowmiss")
	CBLT IJKL 3 Bright
	Stop
    XDeath:
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("CBoltParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,359),0)
	TNT1 A 0 A_PlaySound("weapons/crossbow/arrowhit")
	CBLT IJKL 3 Bright
	Stop
    }
}

ACTOR NoManaBolt : Arrow
{
    +ROCKETTRAIL
    Speed 40
    Damage 6
    Scale 0.65
    States
    {
    Death:
	ARRW A 2 A_PlaySound("weapons/crossbow/arrowmiss")
	ARRW A 10
	ARRW A 1 A_FadeOut
	Wait
    XDeath:
	ARRW A 2 A_PlaySound("weapons/crossbow/arrowhit")
	ARRW A 10
	ARRW A 1 A_FadeOut
	Wait
    }
}

ACTOR CBoltTrail
{   
    Radius 0
    Height 1
    Damage 0
    Speed 0
    Scale 0.5
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    Alpha 0.25
    States
    {
    Spawn:
	CBLT B 0
	CBLT BCDEFGH 3 Bright
	Stop
    }
}

ACTOR CBoltParticle
{
    Radius 1
    Height 1
    +NOGRAVITY
    +NOINTERACTION
    RenderStyle Add
    Scale 0.1
    States
    {
    Spawn:
	TNT1 A 0
	CBLT M 4 Bright A_FadeOut(0.18)
	Loop
    }
}

ACTOR HellRainBolt : HornRodFX2
{
    Health 230
    Radius 3
    Height 3
    Speed 36
    Damage 8
    DamageType "Consecrate"
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    +SEEKERMISSILE
    +PAINLESS
    +NODAMAGETHRUST
    DeathSound "weapons/crossbow/harrowhit"
    States
    {
    Spawn:
	CBLT A 1 Bright
	CBLT A 0 A_SpawnItemEx("HellRainBoltTrail",0,0,0,0,0,0,0,8)
	CBLT A 1 Bright A_SeekerMissile(6,20)
	CBLT A 0 A_SpawnItemEx("HellRainBoltTrail",0,0,0,0,0,0,0,8)
	CBLT A 1 Bright
	CBLT A 0 A_SpawnItemEx("HellRainBoltTrail",0,0,0,0,0,0,0,8)
	CBLT A 1 Bright A_SeekerMissile(6,20)
	CBLT A 0 A_SpawnItemEx("HellRainBoltTrail",0,0,0,0,0,0,0,8)
	Loop
    Death:
	TNT1 A 0 A_SpawnItemEx("HellRainBoltExplode",0,0,0,0,0,0,0,32,0)
	TNT1 A 0 A_AddPlayerRain
	FX00 G 1 A_HideInCeiling
	FX00 G 1 A_SkullRodStorm
	Wait
    }
}

ACTOR HellRainBoltExplode
{
    +NOINTERACTION
    RenderStyle Add
    States
    {
    Spawn:
	FX00 HI 5 Bright
	FX00 J 4 Bright
	FX00 KLM 3 Bright
	Stop
    }
}

ACTOR HellRainBoltTrail : CBoltTrail
{   
    States
    {
    Spawn:
	HBLT B 0
	HBLT BCDEFGH 3 Bright
	Stop 
    }
}

ACTOR HellRain : RainPillar replaces RainPillar
{
    -NOGRAVITY
    +DONTREFLECT
    +DONTBLAST
    DamageType "HellRain"
    Damage 5
    States
    {
    NotFloor:
	TNT1 A 0 A_NoGravity
	FX22 GHI 4 Bright
	Stop
    }
}

ACTOR PoweredBolt
{
    Radius 3
    Height 3
    Speed 40
    Damage 25
    DamageType "Meteor"
    Scale .75
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    States
    {
    Spawn:
	TNT1 A 0 A_CustomMissile("PoweredBoltSmoke",2,0,0)
	CBLT A 1 Bright
	Loop
    Death:
	TNT1 A 0 A_PlaySound("weapons/crossbow/parrowhit")
	TNT1 A 0 A_Explode(50,128,0,0,0,0,0,"None","Meteor")
	TNT1 A 0 A_SpawnItemEx("PBoltExplosion",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR PoweredBoltExtra
{
    PROJECTILE
    +NOCLIP
    -NOGRAVITY
    -ACTIVATEPCROSS
    +DONTBLAST
    +LOWGRAVITY
    +DONTSPLASH
    Height 4
    Radius 4
    Speed 3
    RenderStyle Add
    Scale 0.5
    States
    {
    Spawn:
	WRBL K 0
	WRBL KKKKKK 3 Bright
	WRBL K 1 Bright A_FadeOut
	Wait
    }
}

ACTOR PoweredBoltSmoke
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.8
    Scale 0.2
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 ThrustThingZ(0,random(1,2),0,1)
	PUF2 JKLMN 1 A_FadeOut(0.03)
	PUF2 OQRSTUVWXYZ 2 A_FadeOut(0.03)
	PUF3 ABC 2 A_FadeOut(0.03)
	PUF3 C 1 A_FadeOut
	Wait
    }
}

ACTOR PBoltExplosion
{
    +NOINTERACTION
    RenderStyle Add
    States
    {
    Spawn:
	X002 ABCDEFGHI 1 Bright A_FadeOut(0.015)
	X002 JKLMNOPQRSTU 2 Bright A_FadeOut(0.03)
	Stop
    }
}

ACTOR MeteorBolt
{
    Radius 3
    Height 3
    Speed 36
    Damage 15
    DamageType "Meteor"
    Scale .75
    PROJECTILE
    -ACTIVATEPCROSS
    +SEEKERMISSILE
    +NOEXTREMEDEATH
    States
    {
    Spawn:
	TNT1 A 0 A_CustomMissile("MeteorBoltSmoke",2,0,0)
	TNT1 A 0 A_SpawnItemEx("PoweredBoltExtra",0,0,0,1,0,random(-1,1),random(1,360))
	CBLT A 1 Bright	A_SeekerMissile(4,10,3)
	Loop
    Death:
	TNT1 A 0 A_PlaySound("weapons/crossbow/parrowhit")
	TNT1 A 0 A_Explode(60,128,0)
	TNT1 A 0 A_SpawnItemEx("MeteorSpawner",-8,0,(ceilingz-4),0,0,0,0,32,0)
	TNT1 A 0 A_SpawnItemEx("PBoltExplosion",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR MeteorBoltSmoke
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.8
    Scale 0.4
    Translation "0:32=81:96"
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 ThrustThingZ(0,random(1,2),0,1)
	PUF4 JKLMN 1 A_FadeOut(0.03)
	PUF4 OQRSTUVWXYZ 2 A_FadeOut(0.03)
	PUF5 ABC 2 A_FadeOut(0.03)
	PUF5 C 1 A_FadeOut
	Wait
    }
}

ACTOR MeteorSpawner : HornRodFX2
{
    Height 1
    PROJECTILE
    Speed 0
    Damage 0
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    +CEILINGHUGGER
    +SPAWNCEILING
    +PAINLESS
    +THRUACTORS
    +NOCLIP
    RenderStyle None
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_HideInCeiling
	TNT1 A 0 A_PlaySound("weapons/crossbow/meteor/drop",CHAN_AUTO,0.6,0,ATTN_NONE)
	TNT1 A 0 A_SpawnItemEx("Meteor",0,0,-16,0,0,-20,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
	TNT1 A 30
	Stop
    }
}

ACTOR Meteor
{
    PROJECTILE
    Radius 6
    Height 12
    Speed 40
    Damage 50
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    +EXTREMEDEATH
    +NODAMAGETHRUST
    +NOEXTREMEDEATH
    +FORCERADIUSDMG
    +DONTREFLECT
    +PAINLESS
//    +FOILINVUL
    RenderStyle Add
    DamageType "Meteor"
    States
    {
    Spawn:
	TNT1 A 0
	X029 A 0 Bright A_Explode(32,60,0)
	X029 A 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 A 0 Bright A_Explode(32,60,0)
	X029 A 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 B 0 Bright A_Explode(32,60,0)
	X029 B 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 B 0 Bright A_Explode(32,60,0)
	X029 B 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 C 0 Bright A_Explode(32,60,0)
	X029 C 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 C 0 Bright A_Explode(32,60,0)
	X029 C 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 D 0 Bright A_Explode(32,60,0)
	X029 D 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 D 0 Bright A_Explode(32,60,0)
	X029 D 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 E 0 Bright A_Explode(32,60,0)
	X029 E 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 E 0 Bright A_Explode(32,60,0)
	X029 E 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 F 0 Bright A_Explode(32,60,0)
	X029 F 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 F 0 Bright A_Explode(32,60,0)
	X029 F 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 G 0 Bright A_Explode(32,60,0)
	X029 G 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 G 0 Bright A_Explode(32,60,0)
	X029 G 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 H 0 Bright A_Explode(32,60,0)
	X029 H 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 H 0 Bright A_Explode(32,60,0)
	X029 H 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 I 0 Bright A_Explode(32,60,0)
	X029 I 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 I 0 Bright A_Explode(32,60,0)
	X029 I 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 J 0 Bright A_Explode(32,60,0)
	X029 J 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 J 0 Bright A_Explode(32,60,0)
	X029 J 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 K 0 Bright A_Explode(32,60,0)
	X029 K 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	X029 K 0 Bright A_Explode(32,60,0)
	X029 K 1 Bright A_SpawnItemEx("MeteorTrail",0,0,0,0,0,0,0,32)
	Goto Spawn+1
    Death:
	TNT1 A 0 A_Explode(random(200,260),210,0)
	TNT1 A 0 A_PlaySound("weapons/crossbow/meteor/explosion",CHAN_AUTO,0.6,0,ATTN_NONE)
	TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(3.5,-3.5),frandom(3.5,-3.5),frandom(0.15,1.5),0,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),0,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),20,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),40,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),60,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),80,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),100,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),120,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),140,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),160,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),180,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-20,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-40,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-60,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-80,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-100,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-120,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-140,32)
	TNT1 A 0 A_SpawnItemEx("MeteorParticle",0,0,0,frandom(2.5,-2.5),0,frandom(0.1,1.5),-160,32)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,0,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,6,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,12,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,18,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,24,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,30,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,36,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,42,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,48,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,54,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,60,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,66,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,72,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,78,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,84,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,90,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,96,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,102,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,108,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,114,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,120,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,126,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,132,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,138,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,144,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,150,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,156,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,162,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,168,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,174,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,180,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,186,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,192,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,198,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,204,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,210,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,216,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,222,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,228,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,234,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,240,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,246,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,252,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,258,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,264,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,270,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,276,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,282,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,288,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,294,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,300,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,306,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,312,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,318,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,324,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,330,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,336,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,342,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,348,32,0)
	TNT1 A 0 A_SpawnItemEx("MeteorShockWave",0,0,0,3,0,0,354,32,0)
	TNT1 A 10
	Stop
    }
}

ACTOR MeteorTrail
{
    +NOINTERACTION
    RenderStyle Add
    States
    {
    Spawn:
	X029 AABBCCDDEEFFGGHHIIJJKK 1 Bright A_FadeOut(0.03)
	Loop
    }
}

ACTOR MeteorParticle
{
    +NOINTERACTION
    RenderStyle Add
    States
    {
    Spawn:
	X026 ABCD 2 Bright A_FadeOut(0.04)
	TNT1 A 0 A_ScaleVelocity(0.9)
	X026 EFGH 2 Bright A_FadeOut(0.04)
	TNT1 A 0 A_ScaleVelocity(0.8)
	X026 IJKL 2 Bright A_FadeOut(0.04)
	TNT1 A 0 A_ScaleVelocity(0.7)
	X026 MNOP 2 Bright A_FadeOut(0.04)
	TNT1 A 0 A_ScaleVelocity(0.5)
	X026 QRST 2 Bright A_FadeOut(0.04)
	X026 T 1 Bright A_FadeOut
	Wait
    }
}

ACTOR MeteorShockWave
{
    Speed 5
    Damage 2
    Radius 12
    Height 16
    RenderStyle Translucent
    Alpha 0.2
    Scale 0.8
    PROJECTILE
    -ACTIVATEPCROSS
    +DROPOFF
    +DONTSPLASH
    +BLOODLESSIMPACT
//    +FLOORHUGGER
    +RIPPER
    +PAINLESS
//    +FOILINVUL
    DamageType "Meteor"
    States
    {
    Spawn:
	HSHK CCCAAABBCC 4 //A_Gravity
    Death:
	HSHK C 1
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 3 ---//

// Normal

ACTOR Firestorm : CWeapFlame replaces CWeapFlame
{
    Tag "Firestorm"
    SpawnID 112
    +NOGRAVITY
    Weapon.SelectionOrder 1000
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 2 // 2 with RoW, 4 without
    Weapon.AmmoGive 25
    Weapon.KickBack 150
    Weapon.YAdjust 10
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.SisterWeapon "FirestormPowered"
    Inventory.PickupMessage "Firestorm"
    States
    {
    Spawn:
	WCFM ABCDEFGH 4 Bright
	Loop
    Select:
	CFLM A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CFLM A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	CFLM AAAABBBBCCCC 1 Bright A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	CFLM AAAABBBBCCCC 1 Bright A_WeaponReady
	Loop
    Ready:
	CFLM AAAABBBBCCCC 1 A_WeaponReady
	Loop
    Fire:
	CFLM A 1 Offset (0, 40)
	CFLM D 2 Offset (0, 50)
	CFLM D 2 Offset (0, 36)
	CFLM E 2 Bright
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM F 4 Bright A_FireCustomMissile("FirestormBall",0,1,7,6)
	CFLM E 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM E 4 Bright A_FireCustomMissile("FirestormBall",0,0,-9,3)
	TNT1 A 0 A_ReFire
	CFLM G 1 Offset (0, 40)
	CFLM G 2
	Goto Ready
    HoldHalfMana:
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,7)
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM F 4 Bright A_FireCustomMissile("FirestormBall",0,0,7,6)
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM E 4 Bright A_FireCustomMissile("FirestormBall",0,0,-9,3)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,6)
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM F 4 Bright A_FireCustomMissile("FirestormBall",0,1,7,6)
	CFLM E 0 Bright A_PlaySound("weapons/firestorm/fire", CHAN_WEAPON, 0.6, 0)
	CFLM E 4 Bright A_FireCustomMissile("FirestormBall",0,0,-9,3)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	TNT1 A 0 A_ReFire("Hold")
	CFLM G 1 Offset (0, 40)
	CFLM G 2
	Goto Ready
    AltFire:
	CFLM A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CFLM A 0 A_JumpIfInventory("GreenMana",4,4)
	CFLM A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CFLM A 0 A_JumpIfInventory("GreenMana",2,2)
	CFLM A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CFLM A 1 Offset (0, 40)
	CFLM D 2 Offset (0, 50)
	CFLM D 2 Offset (0, 36)
	CFLM E 2 Bright
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CFLM F 4 Bright A_CFlameAttack
	CFLM E 4 Bright
	CFLM G 1 Offset (0, 40)
	CFLM G 2
	Goto Ready
    }
}

// Powered

ACTOR FirestormPowered : Firestorm
{
    Tag "Firestorm"
    +NOGRAVITY
    Weapon.SelectionOrder 1000
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 5 // 5 with RoW, 10 without
    Weapon.AmmoGive 0
    Weapon.KickBack 150
    Weapon.YAdjust 10
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.SisterWeapon "Firestorm"
    +POWERED_UP
    Inventory.PickupMessage "Firestorm"
    States
    {
    Spawn:
	WCFM ABCDEFGH 4 Bright
	Loop
    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 2 Offset (0, 50)
	CFLM D 2 Offset (0, 36)
	CFLM E 4 Bright
    Hold:
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/powered/fire", CHAN_WEAPON, 1.2, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CFLM F 3 Bright A_FireCustomMissile("IncineratorBall",frandom(-2,2),1,7,6)
	TNT1 A 0 A_Jump(256,2)
	CFLM F 3 Bright A_FireCustomMissile("IncineratorBall",frandom(-2,2),0,7,6)
	CFLM E 3 Bright
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/powered/fire", CHAN_WEAPON, 1.2, 0)
	CFLM F 3 Bright A_FireCustomMissile("IncineratorBall",frandom(-2,2),1,-9,3)
	CFLM E 3 Bright
	TNT1 A 0 A_ReFire
	CFLM G 2 Offset (0, 40)
	CFLM G 2
	Goto Ready
    AltFire:
	CFLM A 2 Offset (0, 40)
	CFLM D 2 Offset (0, 50)
	CFLM D 2 Offset (0, 36)
	CFLM F 4 Bright
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CFLM F 0 Bright A_PlaySound("weapons/firestorm/powered/altfire", CHAN_WEAPON, 1.0, 0)
	CFLM E 4 Bright A_FireCustomMissile("StormOfTorment",0,1,0,0)
	CFLM F 4 Bright
	CFLM G 2 Offset (0, 40)
	CFLM G 2
	Goto Ready
    }
}

// Extra

ACTOR FirestormBall : FastProjectile
{
    Radius 5
    Height 5
    Speed 60
    Damage 12
    RenderStyle Add
    DamageType Fire
    MissileHeight 8
    MissileType "FirestormBallTrail"
    Scale 0.6
    Alpha 0.35
    PROJECTILE
    -ACTIVATEPCROSS
    Seesound "weapons/firmfi"
    DeathSound "weapons/firex4"
    States
    {
    Spawn:
	TNT1 A 0
	FX04 A 1 Bright
	Loop
    Death:
	TNT1 A 0 A_SpawnItemEx("FirestormExplode",0,0,0,0,0,0,0,32,0)
//	CBAL CDEFG 3 Bright
	Stop
    }
}

ACTOR FirestormExplode
{
    +NOINTERACTION
    Renderstyle Add
    Scale 1.75
    States
    {
    Spawn:
	CBAL CDEFG 3 Bright
	Stop
    }
}	

ACTOR FirestormBallTrail
{   
    Radius 0
    Height 1
    Speed 0
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    Scale 0.65
    Alpha 0.35
    States
    {
    Spawn:
	FX09 ABCDEF 3 Bright A_FadeOut
	Stop 
    }
}

ACTOR FirestormFlame : CFlameMissile replaces CFlameMissile
{
    Damage 20
    +NOEXTREMEDEATH
}

ACTOR FirestormCircle : CircleFlame replaces CircleFlame
{
    +DONTREFLECT
    Radius 11
    Damage 6
}

ACTOR IncineratorBall
{
    PROJECTILE
    -ACTIVATEPCROSS
    Radius 6
    Height 8
    Speed 32
    Damage 24
    Scale 0.35
    DamageType "Fire"
    +DONTREFLECT
    +NOEXTREMEDEATH
    RenderStyle Add
    States
    {
    Spawn:
	PROJ AAABBBCCC 1 Bright A_CustomMissile("IncineratorTrail",0,0,0)
	Loop
    Death:
	TNT1 A 0 Bright A_PlaySound("weapons/firestorm/powered/hit", CHAN_AUTO, 1.0, 0)
	TNT1 A 0 Bright A_Explode(60,64,0)
	MIS6 BBBCCCDDDEEEFFF 1 Bright A_FadeOut(0.05)
	Wait
    }
}

ACTOR IncineratorTrail
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.4
    Scale 0.28
    States
    {
    Spawn:
	TNT1 A 3
	PROJ DEFGHI 3 Bright
	Stop
    }
}

ACTOR StormOfTorment
{
    PROJECTILE
    -ACTIVATEPCROSS
    +FIREDAMAGE
    +DONTREFLECT
    Radius 5
    Height 5
    Speed 35
    Damage 15
    DamageType "Torment"
    DeathSound "FireDemonMissileHit"
    RenderStyle Add
    Alpha 0.85
    Scale 0.6
    Translation "249:249=176:176","215:125=179:179","218:218=182:182",
		"221:221=185:185","232:232=188:188","233:233=191:191"
    States
    {
    Spawn:
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,2.375,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-.775,2.375,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,2.375,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-.775,2.375,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,2.375,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.5,0,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.5,0,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,-0.775,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,0.775,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,-1.47,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,1.47,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,-2.025,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,2.025,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-0.775,-2.375,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,2.375,0,32,0)
	DMFX A 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,-2.5,0,32,0)
	DMFX A 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0,2.5,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,0.775,-2.375,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-.775,2.375,0,32,0)
	DMFX B 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,1.47,-2.025,0,32,0)
	DMFX B 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-1.47,2.025,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.025,-1.47,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.025,1.47,0,32,0)
	DMFX C 2 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,2.375,-0.775,0,32,0)
	DMFX C 0 Bright A_SpawnItemEx("StormOfTormentTrail",0,0,0,0,-2.375,0.775,0,32,0)
	Loop
    Death:
	DMFX D 0 A_SpawnItemEx("StormOfTormentSpawner",0,0,4,0,0,0,0,32,0)
	DMFX DEFGH 5
	Stop
    }
}

ACTOR StormOfTormentTrail
{
    Speed 2
    Damage 0
    Height 6
    Radius 5
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    Scale 0.7
    States
    {
    Spawn:
	STMX ABCDEFGHIJKL 4 Bright
	Stop
    }  
}

ACTOR StormOfTormentSpawner
{
    Speed 10
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    BounceFactor 0.0
    BounceType Hexen
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 8
	TNT1 A 0 A_SpawnItemEx("StormOfTormentAttacker",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR StormOfTormentAttacker
{
    Health 1000000000
    Radius 0
    Height 16
    Speed 5
    +NOFEAR
    +NOGRAVITY
    +FRIENDLY
    +NONSHOOTABLE
    +LOOKALLAROUND
    +FLOORCLIP
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +THRUACTORS
    +NOTARGETSWITCH
    MinMissileChance 0
    States
    {
    Spawn:
	TNT1 AAA 1 A_LookEx(2,0,100,0,360,"See")
	Stop
    See:
	TNT1 A 1 A_Chase
    Missile:
	TNT1 A 0 A_JumpIfCloser(200,1)
	Goto Death
	TNT1 A 0 A_Chase
	TNT1 A 0 A_JumpIfCloser(200,1)
	Goto Death
	TNT1 A 0 A_Chase
	TNT1 A 0 A_JumpIfCloser(200,1)
	Goto Death
	TNT1 A 0 A_Chase
	TNT1 A 0 A_JumpIfCloser(200,1)
	Goto Death
	TNT1 A 0 A_SetAngle(random(0,360))
	TNT1 A 0 A_PlaySound("FireDemonAttack")
//	TNT1 A 0 A_JumpIf(z<80,7)
//	TNT1 A 0 A_Jump(160,3)
//	TNT1 A 3 A_CustomMissile("StormOfTormentRain",random(64,128),random(-20,20),0)
//	TNT1 A 0 A_Jump(256,2)
//	TNT1 A 3 A_CustomMissile("StormOfTormentRain",random(64,128),random(-220,220),0)
//	TNT1 A 0 A_JumpIfInventory("StormOfTormentCheck",40,"Death")
//	TNT1 A 0 A_GiveInventory("StormOfTormentCheck",1)
//	Loop
	TNT1 A 0 A_Jump(160,3)
	TNT1 A 3 A_CustomMissile("StormOfTormentRain",random(64,128),random(-20,20),0)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 3 A_CustomMissile("StormOfTormentRain",random(64,128),random(-100,100),0)
	TNT1 A 0 A_JumpIfInventory("StormOfTormentCheck",40,"Death")
	TNT1 A 0 A_GiveInventory("StormOfTormentCheck",1)
	Loop
    Death:
	TNT1 A 0
	Stop
    }
}

ACTOR StormOfTormentRain : HereticImpBall
{
    +NODAMAGETHRUST
    +SEEKERMISSILE
    +DONTREFLECT
    +NOCLIP
//    +FOILINVUL
    Damage 6
    Speed 10
    DamageType "Torment"
    States
    {
    Spawn:
	FX10 A 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 A 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_ChangeFlag("NOCLIP",0)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 A 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 A 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 B 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 B 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 B 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 B 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 C 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 C 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 C 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	FX10 C 1 Bright A_SpawnItem("RainTrail",1)
	FX10 A 0 Bright A_SeekerMissile(8,8)
	Loop
    Death:
	FX10 DEFG 5 Bright
	Stop
    }
}

ACTOR RainTrail
{
    Radius 1
    Height 1
    Speed 0
    Damage 0
    Scale 0.4
    RenderStyle Add
    Alpha 0.7
    +NOGRAVITY
    States
    {
    Spawn:
	SMO2 ABCDE 3
	Stop
    }
}

ACTOR StormOfTormentCheck: Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 40
}

//----------------------------------------------------------

// Normal

ACTOR IronWard : ClericWeapon 7014
{
    Tag "Astreon's Iron Ward"
    SpawnID 149
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 1 // 1 with RoW, 2 without
    Weapon.AmmoGive1 25
    Weapon.YAdjust 25
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.SisterWeapon "IronWardPowered"
    Inventory.PickupMessage "Astreon's Iron Ward" 
    States
    {
    Spawn:
	WMCE A -1
	Stop
    Ready:
	MACE A 1 A_WeaponReady
	Loop
    Deselect:
	MACE A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	MACE A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Fire:
	MACE B 3
    Hold:
	MACE C 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE C 3 A_FireCustomMissile("IronBall",frandom(-3,3),1,0,0)
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,4)
	CFLM A 0 A_JumpIfInventory("GreenMana",1,2)
	CFLM A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE C 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE D 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE D 3 A_FireCustomMissile("IronBall",frandom(-3,3),0,0,0)
	CFLM A 0 A_JumpIfInventory("GreenMana",1,2)
	CFLM A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE E 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE E 3 A_FireCustomMissile("IronBall",frandom(-3,3),1,0,0)
	MACE F 3
	MACE C 3 A_ReFire
	MACE D 3
	MACE B 2
	Goto Ready
    Hold2:
        MACE C 0
	Goto Hold
    AltFire:
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MACE C 0 A_JumpIfInventory("GreenMana",2,4)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE C 0 A_JumpIfInventory("GreenMana",1,2)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE B 3
    AltHold:
	MACE C 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE C 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE C 4 A_FireCustomMissile("IronRipper",frandom(-3,3),1,0,0)
	MACE D 4
	MACE E 3 A_ReFire("AltHold2")
	MACE F 3
	MACE B 2
	Goto Ready
    AltHold2:
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MACE C 0 A_JumpIfInventory("GreenMana",2,4)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE C 0 A_JumpIfInventory("GreenMana",1,2)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE E 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE E 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE E 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE E 4 A_FireCustomMissile("IronRipper",frandom(-3,3),1,0,0)
	MACE F 4
	MACE C 3 A_ReFire("AltHold")
	MACE D 3
	MACE B 2
	Goto Ready
/*
    AltHold:
	MACE C 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE C 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE C 4 A_FireCustomMissile("IronRipper",frandom(-2,2),1,0,0)
	MACE D 4
	MACE E 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE E 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE E 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE E 4 A_FireCustomMissile("IronRipper",frandom(-2,2),1,0,0)	
	MACE F 4
	MACE C 3 A_ReFire
	MACE D 3
	MACE B 2
	Goto Ready
*/
    }
}

// Powered

ACTOR IronWardPowered : IronWard
{
    Tag "Astreon's Iron Ward"
    Weapon.AmmoUse1 1 // 1 with RoW, 2 without
    Weapon.AmmoUse2 3 // 3 with RoW, 6 without
    Weapon.AmmoGive1 0
    Weapon.YAdjust 15
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.SisterWeapon "IronWard"
    +POWERED_UP
    Inventory.PickupMessage "Astreon's Iron Ward" 
    States
    {
    Spawn:
	WMCE A -1
	Stop
    Deselect:
	MACE A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	MACE A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Fire:
	MACE B 3
    Hold:
	MACE C 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE C 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE C 3 A_FireCustomMissile("IronSpike",frandom(-3,3),1,0,0)
	MACE D 3
	MACE E 3 A_ReFire("Hold2")
	MACE F 4
	MACE B 2
	Goto Ready
    Hold2:
	MACE E 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE E 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE E 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE E 3 A_FireCustomMissile("IronSpike",frandom(-3,3),1,0,0)
	MACE F 3
	MACE C 3 A_ReFire("Hold")
	MACE D 4
	MACE B 2
	Goto Ready
    AltFire:
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MACE C 0 A_JumpIfInventory("GreenMana",6,4)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE C 0 A_JumpIfInventory("GreenMana",3,2)
	MACE C 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	MACE B 3
    AltHold:
	MACE C 0 A_PlaySound("weapons/ironward/fire", CHAN_WEAPON ,1.0)
	MACE C 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MACE C 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MACE C 4 A_FireCustomMissile("IronDoom",0,1,0,0)
	MACE DECDE 4
	MACE C 4 A_ReFire
	MACE B 2
	Goto Ready
    }
}

// Extra

ACTOR IronBall
{
    Speed 25
    Radius 8
    Damage 20
    PROJECTILE
    +NOEXTREMEDEATH
    +NOTELEPORT
    +CANBOUNCEWATER
    -ACTIVATEPCROSS
    -NOGRAVITY
    Gravity 0.2
    ReactionTime 70
    BounceType Hexen
    BounceCount 4
    BounceFactor 0.75
    BounceSound "weapons/ironward/ball/bounce"
    States
    {
    Spawn:
	IWBL AB 3
	IWBL A 0 A_Countdown
	Loop
    Death:
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_PlaySound("weapons/ironward/ball/explode")
	TNT1 A 0 A_SetTranslucent(1.0,1)
	IWBL C 4 Bright
	IWBL DEFG 4 Bright
	Stop
    }
}

ACTOR IronRipper : RipperBall
{
    Speed 20//13
    Radius 12
    Height 10
    PROJECTILE
    +NOEXTREMEDEATH
    +CANBOUNCEWATER
    +NOTELEPORT
    +NOBOSSRIP
    +NODAMAGETHRUST
    -ACTIVATEPCROSS
    -NOGRAVITY
    Gravity 0.1
    Damage 14//10
    DamageType "Iron"
    ReactionTime 50
    BounceType Hexen
    BounceCount 5
    BounceSound "weapons/ironward/ball/bounce"
    BounceFactor 0.85
    Scale 0.8
    States
    {
    Spawn:
	RIPP AAABBBCCC 1
	RIPP A 0 A_Countdown
	Loop
    Death:
	TNT1 A 0 A_NoGravity
	CFCF Q 0 Bright A_PlaySound("Fireball")
	CFCF Q 4 Bright
	CFCF R 3 Bright
	CFCF S 4 Bright
	CFCF T 3 Bright
	CFCF U 4 Bright
	CFCF V 3 Bright
	CFCF W 4 Bright
	CFCF X 3 Bright
	CFCF Y 4 Bright
	CFCF Z 3 Bright
	Stop
    }
}

ACTOR IronSpike
{
    Radius 12
    Height 6
    Speed 26
    Damage 24
    PROJECTILE
    +NOEXTREMEDEATH
    +NOTELEPORT
    +CANBOUNCEWATER
    -ACTIVATEPCROSS
    -NOGRAVITY
    DamageType "Iron"
    Gravity 0.2
    ReactionTime 30
    BounceType Hexen
    BounceCount 4
    BounceFactor 0.75
    BounceSound "weapons/ironward/ball/bounce"
    Scale 1.2
    States
    {
    Spawn:
	IWSP ABC 6
	IWSP A 0 A_Countdown
	Loop
    Death:
	TNT1 A 0 A_Explode(30,32,0)
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_PlaySound("weapons/ironward/ball/explode")
	TNT1 A 0 A_SetTranslucent(1.0,1)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,0,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,45,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,90,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,135,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,180,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,225,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,270,32,0)
	IWSP D 0 Bright A_SpawnItemEx("IronShard",0,0,6,24,0,0,315,32,0)
	IWSP DEFGH 5 Bright
	Stop
    }
}

ACTOR IronShard
{
    Radius 12
    Height 6
    Speed 24
    Damage 6
    PROJECTILE
    -ACTIVATEPCROSS
    States
    {
    Spawn:
	IWSP IJK 4
	Loop
    Death:
	TNT1 A 0 A_Explode(10,12,0)
	TNT1 A 0 A_SpawnItemEx("IronShardExplosion",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR IronShardExplosion
{
    +NOINTERACTION
    +NOGRAVITY
    RenderStyle Add
    Scale 0.5
    States
    {
    Spawn:
	IWSP DEFGH 5 Bright
	Stop
    }
}

ACTOR IronDoom
{
    PROJECTILE
    +CANBOUNCEWATER
    +BOUNCEONWALLS
    +ALLOWBOUNCEONACTORS
    +RIPPER
//    +NOBOSSRIP
    +SEEKERMISSILE
    +USEBOUNCESTATE
    +EXTREMEDEATH
    -ACTIVATEPCROSS
    -THRUGHOST
    -NOGRAVITY
    -NOWALLBOUNCESND
    DamageType "Iron"
    BounceType Hexen
    BounceCount 10
    BounceFactor 1.0
    WallBounceFactor 1.0
    SeeSound "weapons/macestop"
    BounceSound "weapons/macestop"
    WallBounceSound "weapons/macestop"
    ReactionTime 30
    Gravity 0.5
    Radius 20
    Height 16
    Speed 20 //9
    Damage 12
    Scale 1.8
    States
    {
    Spawn:
	IWDM A 1
	IWDM A 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM A 1
	IWDM AA 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM A 1
	IWDM A 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM B 1
	IWDM B 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM B 1
	IWDM BB 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM B 1
	IWDM B 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM C 1
	IWDM C 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM C 1
	IWDM CC 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	IWDM C 1
	IWDM C 0 A_CustomMissile("IronDoomShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-75,75))
	TNT1 A 0 A_CountDown
	Loop
    Bounce:
	IWDM A 0 A_SeekerMissile(90,90,1,256)
	IWDM A 0 A_SeekerMissile(90,90,1,256)
	Goto Spawn
    Death:
	CFCF Q 4 Bright A_NoGravity
	CFCF Q 0 Bright A_Explode(180,128,0)
	CFCF R 3 Bright A_PlaySound("Fireball")
	CFCF S 4 Bright
	CFCF T 3 Bright
	CFCF U 4 Bright
	CFCF V 3 Bright
	CFCF W 4 Bright
	CFCF X 3 Bright
	CFCF Y 4 Bright
	CFCF Z 3 Bright
	Stop
    }
}

ACTOR IronDoomShard : IronShard
{
    Damage 2
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +PAINLESS
    +NOBOSSRIP
    +EXTREMEDEATH
    DamageType "Iron"
    Scale 1.5
    States
    {
    Spawn:
	IWSP IJK 4
	Loop
    Death:
	TNT1 A 0 A_Explode(10,12,0)
	TNT1 A 0 A_SpawnItemEx("IronShardExplosion",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 4 ---//

// Normal

ACTOR WraithvergePiece1 : CWeaponPiece1 replaces CWeaponPiece1
{
    WeaponPiece.Weapon Wraithverge
    Inventory.PickupSound "PickupPiece"
    States
    {
    Spawn:
	WCH1 A -1 Bright
	Stop
    }
}

ACTOR WraithvergePiece2 : CWeaponPiece2 replaces CWeaponPiece2
{
    WeaponPiece.Weapon Wraithverge
    Inventory.PickupSound "PickupPiece"
    States
    {
    Spawn:
	WCH2 A -1 Bright
	Stop
    }
}

ACTOR WraithvergePiece3 : CWeaponPiece3 replaces CWeaponPiece3
{
    WeaponPiece.Weapon Wraithverge
    Inventory.PickupSound "PickupPiece"
    States
    {
    Spawn:
	WCH3 A -1 Bright
	Stop
    }
}

ACTOR Wraithverge : CWeapWraithverge replaces CWeapWraithverge
{
    Tag "Wraithverge"
    Game Hexen
    Weapon.AmmoUse1 2 // 2 with RoW, 4 without
    Weapon.AmmoUse2 9 // 9 with RoW, 18 without
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.KickBack 150
    -WEAPON.PRIMARY_USES_BOTH
    Weapon.SisterWeapon "WraithvergePowered"
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Inventory.PickupMessage "Wraithverge Assembled"
    Inventory.PickupSound "4thweapon/pickup"
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    Ready:
	CHLY A 1 A_WeaponReady
	Loop
    Select:
	CHLY A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	CHLY A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Fire:
	CHLY A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CHLY A 0 A_JumpIfInventory("GoldMana",2,4)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY A 0 A_JumpIfInventory("GoldMana",1,2)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
//	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 F 2 Bright Offset (0, 45)
	CHLY F 0 Bright Offset (0, 48) A_SetBlend("Gray",0.35,8)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("WVSpell1",0,0,0,0)
	CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("WVSpell2",0,0,0,0)
	CHLY F 0 Bright Offset (0, 48) A_FireCustomMissile("WVSpell3",0,0,0,0)
	CHLY F 3 Bright Offset (0, 48) A_FireCustomMissile("WVSpell4",0,1,0,0)
	CHLY F 3 Bright Offset (0, 48)
	CHLY F 3 Bright Offset (0, 45)
	CHLY G 3 Bright Offset (0, 43)
	CHLY G 3 Bright Offset (0, 40)
	CHLY G 3 Offset (0, 36)
	Goto Ready
    AltFire:
	CHLY A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CHLY A 0 A_JumpIfInventory("GoldMana",18,4)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY A 0 A_JumpIfInventory("GoldMana",9,2)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY AB 1 Bright Offset (0, 40)
	CHLY CD 2 Bright Offset (0, 43)
	CHLY E 2 Bright Offset (0, 45)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CHLY F 6 Bright Offset (0, 48) A_CHolyAttack
	CHLY GG 2 Bright Offset (0, 40) A_CHolyPalette
	CHLY G 2 Offset (0, 36) A_CHolyPalette
	Goto Ready
    }
}

// Powered

ACTOR WraithvergePowered : Wraithverge
{
    Tag "Wraithverge"
    Game Hexen
    Weapon.AmmoUse1 6 // 6 with RoW, 12 without
    Weapon.AmmoUse2 16 // 16 with RoW, 32 without
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.KickBack 150
    -WEAPON.PRIMARY_USES_BOTH
    +POWERED_UP
    Weapon.SisterWeapon "Wraithverge"
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Inventory.PickupMessage "Wraithverge Assembled"
    States
    {
    Spawn:
	TNT1 A -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
    Fire:
	CHLY A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CHLY A 0 A_JumpIfInventory("GoldMana",8,4)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY A 0 A_JumpIfInventory("GoldMana",4,2)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY AB 1 Bright Offset (0, 40)
	CHLY CD 2 Bright Offset (0, 43)
	TNT1 A 0 A_PlaySound("weapons/wraithverge/powered/fire", CHAN_WEAPON, 1.0, 0)
	CHLY E 2 Bright Offset (0, 45)
	CHLY F 0 Bright Offset (0, 48) A_SetBlend("White",0.6,10)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CHLY F 6 Bright Offset (0, 48) A_FireCustomMissile("WVBall",0,1,0,0)
	CHLY G 4 Bright Offset (0, 40)
	CHLY G 2 Offset (0, 36)
	Goto Ready
    AltFire:
	CHLY A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CHLY A 0 A_JumpIfInventory("GoldMana",32,4)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY A 0 A_JumpIfInventory("GoldMana",16,2)
	CHLY A 0 A_SelectWeapon("ClericMace")
	Goto Deselect
	CHLY A 18 Bright A_PlaySound("weapons/wraithverge/powered/charge", CHAN_WEAPON, 1.0, 0)
	CHLY AB 1 Bright Offset (0, 40)
	CHLY CD 2 Bright Offset (0, 43)
	TNT1 A 0 A_PlaySound("weapons/wraithverge/powered/altfire", CHAN_WEAPON, 1.0, 0)
	CHLY E 2 Bright Offset (0, 45)
	CHLY F 0 Bright Offset (0, 48) A_SetBlend("White",0.8,40)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CHLY F 6 Bright Offset (0, 48) A_FireCustomMissile("SacredEnergyBlast",0,1,0,0)
	CHLY G 4 Bright Offset (0, 40)
	CHLY G 2 Offset (0, 36)
	CHLY G 8 Offset (0, 32)
	Goto Ready
    }
}

// Extra

ACTOR WVSpell1
{
    Speed 20
    Damage 12
    Scale 0.35
    Radius 6
    Height 12
    RenderStyle Add
    Alpha 0.75
    DamageType "Holy"
    PROJECTILE
    -ACTIVATEPCROSS
    +SEEKERMISSILE
    +EXTREMEDEATH
    +DONTREFLECT
    +FORCERADIUSDMG
    SeeSound "weapons/wraithverge/fire2"
    DeathSound "weapons/wraithverge/hit"
    States
    {

    Spawn:
	PSMM D 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM D 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM E 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM E 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM F 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	PSMM F 1 Bright A_SeekerMissile(25,10)
	TNT1 A 0 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Loop
    Death:
	PSMM G 0 
	PSMM G 0 A_Explode(100,180,0)
	PSMM GGHHIIJJKKLLMM 2 Bright A_FadeOut(0.05)
	Stop
    }
}

ACTOR WVSpell2 : WVSpell1
{
    States
    {
    Spawn:
	PSMM AAAAAAAA 0 Bright A_Weave(2,2,1.5,1.5)
    Continue:
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Loop
    }
}

ACTOR WVSpell3 : WVSpell1
{
    States
    {
    Spawn:
	PSMM AAAAAAAAAAAAAAAA 0 Bright A_Weave(2,2,1.5,1.5)
    Continue:
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Loop
    }
}

ACTOR WVSpell4 : WVSpell1
{
    States
    {
    Spawn:
	PSMM AAAAAAAAAAAAAAAAAAAAAAAA 0 Bright A_Weave(2,2,1.5,1.5)
    Continue:
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM D 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM E 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	TNT1 A 0 A_SeekerMissile(25,10)
	PSMM F 1 Bright A_Weave(2,2,1.5,1.5)
	TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
	Loop
    }
}

ACTOR SLM2Trail
{
    PROJECTILE
    -ACTIVATEPCROSS
    +NOCLIP
    Damage 0
    RenderStyle Add
    Alpha 0.45
    Scale 0.9
    States
    {
    Spawn:
	TNT1 A 2
	PUF2 BDFHJLNPRTVXZ 1
	PUF3 B 1 A_FadeOut(0.2)
	Wait
    }
}

ACTOR WVSpirit : HolySpirit replaces HolySpirit
{
    Health 150
    +FORCERADIUSDMG
    Damage 5
    DamageType "Holy"
    States
    {
    Spawn:
	SPIT A 0 A_Explode(12,16,0)
	SPIR A 2 A_CHolySeek
	SPIT A 0 A_Explode(12,16,0)
	SPIR A 2 A_CHolySeek
	SPIT B 0 A_Explode(12,16,0)
	SPIR B 2 A_CHolySeek
	SPIT B 0 A_Explode(12,16,0)
	SPIR B 2 A_CHolyCheckScream
	Loop
    }
}

ACTOR WVBall
{
    PROJECTILE
    -ACTIVATEPCROSS
    +EXTREMEDEATH
    +FORCERADIUSDMG
    +DONTREFLECT
    Mass 1
    Radius 10
    Height 10
    Speed 28
    Damage 60
    DeathSound "weapons/wraithverge/powered/hit"
    RenderStyle Add
    Alpha 0.7
    Scale 0.66
    DamageType "Holy"
    States
    {
    Spawn:
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	VOR2 A 1 Bright A_CustomMissile("WVTrail",0,0,random(45,-45))
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	VOR2 B 1 Bright A_CustomMissile("WVTrail",0,0,random(45,-45))
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	VOR2 C 1 Bright A_CustomMissile("WVTrail",0,0,random(45,-45))
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	TNT1 A 0 A_CustomMissile("SLGas",0+random(20,-20),0+random(20,-20),random(15,-15),0)
	VOR2 D 1 Bright A_CustomMissile("WVTrail",0,0,random(45,-45))
	Loop
    Death:
	TNT1 A 0 A_Explode(400,400,0)
	TNT1 A 0 A_CustomMissile("WVExplo",0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("LichWhiteBallExploSprite",0,0,0,random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),0,32)
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("LichWhiteBallExploSprite",0,0,0,random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),0,32)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,0)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,15)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,30)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,45)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,60)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,75)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,90)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,105)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,120)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,135)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,150)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,165)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,180)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-15)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-30)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-45)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-60)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-75)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-90)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-105)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-120)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-135)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-150)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-165)
	TNT1 A 10
	Stop
    }
}

ACTOR WVExplo
{
    Mass 1
    Radius 1
    Height 1
    Speed 0
    Damage 0
    Scale 0.7
    RenderStyle Add
    DamageType "Holy"
    SeeSound "q2weapon/rocketexplo"
    Alpha 0.6
    +NOCLIP
    PROJECTILE
    -ACTIVATEPCROSS
    States
    {
    Spawn:
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("LichWhiteBallExploSprite",0,0,0,random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),0,32)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("LichWhiteBallExploSprite",0,0,0,random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),0,32)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,0)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,15)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,30)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,45)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,60)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,75)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,90)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,105)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,120)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,135)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,150)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,165)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,180)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-15)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-30)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-45)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-60)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-75)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-90)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-105)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-120)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-135)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-150)
	TNT1 A 0 A_CustomMissile("LeechBallExtraFX",10,0,-165)
	BOOM A 0 A_Explode(30,400,0)
	BOOM A 1 Bright A_FadeOut(0.02)
	BOOM B 0 A_Explode(30,385,0)
	BOOM B 1 Bright A_FadeOut(0.02)
	BOOM C 0 A_Explode(30,370,0)
	BOOM C 1 Bright A_FadeOut(0.02)
	BOOM D 0 A_Explode(30,355,0)
	BOOM D 1 Bright A_FadeOut(0.02)
	BOOM E 0 A_Explode(30,340,0)
	BOOM E 1 Bright A_FadeOut(0.02)
	BOOM F 0 A_Explode(30,325,0)
	BOOM F 1 Bright A_FadeOut(0.02)
	BOOM G 0 A_Explode(30,310,0)
	BOOM G 1 Bright A_FadeOut(0.02)
	BOOM H 0 A_Explode(30,295,0)
	BOOM H 1 Bright A_FadeOut(0.02)
	BOOM I 0 A_Explode(30,280,0)
	BOOM I 1 Bright A_FadeOut(0.02)
	BOOM J 0 A_Explode(30,265,0)
	BOOM J 1 Bright A_FadeOut(0.02)
	BOOM K 0 A_Explode(30,250,0)
	BOOM K 1 Bright A_FadeOut(0.02)
	BOOM L 0 A_Explode(30,235,0)
	BOOM L 1 Bright A_FadeOut(0.02)
	BOOM M 0 A_Explode(30,220,0)
	BOOM M 1 Bright A_FadeOut(0.02)
	BOOM N 0 A_Explode(30,205,0)
	BOOM N 1 Bright A_FadeOut(0.02)
	BOOM O 0 A_Explode(30,190,0)
	BOOM O 1 Bright A_FadeOut(0.02)
	BOOM P 0 A_Explode(30,175,0)
	BOOM P 1 Bright A_FadeOut(0.02)
	BOOM Q 0 A_Explode(30,160,0)
	BOOM Q 1 Bright A_FadeOut(0.02)
	BOOM R 0 A_Explode(30,145,0)
	BOOM R 1 Bright A_FadeOut(0.02)
	BOOM S 0 A_Explode(30,130,0)
	BOOM S 1 Bright A_FadeOut(0.02)
	BOOM T 0 A_Explode(30,115,0)
	BOOM T 1 Bright A_FadeOut(0.02)
	BOOM U 0 A_Explode(30,100,0)
	BOOM U 1 Bright A_FadeOut(0.02)
	BOOM V 0 A_Explode(30,85,0)
	BOOM V 1 Bright A_FadeOut(0.02)
	BOOM W 0 A_Explode(30,70,0)
	BOOM W 1 Bright A_FadeOut(0.02)
	BOOM X 0 A_Explode(30,55,0)
	BOOM X 1 Bright A_FadeOut(0.02)
	BOOM Y 0 A_Explode(30,40,0)
	BOOM Y 1 Bright A_FadeOut(0.02)
        Stop
    }
}

ACTOR WVTrail
{
    Mass 1
    Radius 1
    Height 1
    Speed 3
    Damage 0
    RenderStyle Add
    Scale 0.44
    Alpha 0.5
    +NOCLIP
    PROJECTILE
    -ACTIVATEPCROSS
    States
    {
    Spawn:
	VOR2 ABCDA 4 Bright 
        Stop
    }
}

ACTOR SLGas
{
    PROJECTILE
    -ACTIVATEPCROSS
    Mass 1
    Radius 8
    Height 6
    Speed 3
    Damage 0
    RenderStyle Add
    Alpha 0.7
    Scale 0.7
    States
    {
    Spawn:
	WVFR ABCDEFGHIJKLMOP 2 Bright 
	Stop
    }
}

ACTOR LeechBallExtraFX
{
    PROJECTILE
    -ACTIVATEPCROSS
    +NOINTERACTION
    +DONTSPLASH
    Mass 1
    Speed 4
    Damage 0
    Radius 2
    Height 2
    RenderStyle Add
    Alpha 0.6
    Scale 1.2
    States
    {
    Spawn:
	X033 ABCD 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.9)
	X033 EFGH 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.75)
	X033 IJKL 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 MNOP 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 QR 2 Bright A_FadeOut(0.05)
	Wait
    }
}

ACTOR LichWhiteBallExploSprite
{
    +NOINTERACTION
    RenderStyle Add
    Scale 0.9
    States
    {
    Spawn:
	X033 ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.04)
	Stop
    }
}

ACTOR SacredEnergyBlast
{
    PROJECTILE
    -ACTIVATEPCROSS
    +EXTREMEDEATH
    +DONTSPLASH
    +SKYEXPLODE
    +FORCERADIUSDMG
    DamageType "Sacred"
    Radius 8
    Height 8
    Speed 0
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_Explode(random(1800,2500),1000,0)
	Stop
    Death:
	TNT1 A 0 A_Explode(random(1800,2500),1000,0)
    }
}

//==========================================================
//
// Mage Weapons
//
//==========================================================

//--- Slot 1 ---//

// Normal
/*								Now in ZScript to improve hit detection
ACTOR Sickle : MageWeapon
{
    Tag "Sickle"
    +MELEEWEAPON
    +NOEXTREMEDEATH
    +INVENTORY.UNDROPPABLE
    +CHEATNOTWEAPON
    Weapon.SisterWeapon "SicklePowered"
    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 (64,46)
	SCKL A 1 Offset (48,42)
	SCKL A 1 Offset (32,38)
	SCKL B 1 Offset (34,50)
	SCKL B 1 Offset (10,48)
	SCKL B 1 Offset (-14,50)
	SCKL C 1 Offset (18,32) A_Custompunch(random(50,65),1,0,"SicklePuff",140)
	SCKL C 1 Offset (-12,36)
	SCKL C 1 Offset (-42,44)
	SCKL C 1 Offset (-72,56)
	SCKL D 1 Offset (13,35)
	SCKL D 1 Offset (-7,50)
	SCKL D 1 Offset (-27,65)
	TNT1 A 5
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    Altfire:
	SCKL N 2
	TNT1 A 2
    AltHold:
	TNT1 A 0 A_Jump(100,"Altfire2")
    Altfire1:
	SCKL A 1
	SCKL E 1
	SCKL F 1 Offset (2,30)
	SCKL G 1 Offset (2,32)
	SCKL G 1 Offset (-16,44)
	SCKL G 1 Offset (-34,56)
	SCKL H 1 Offset (24,32) A_CustomPunch(random(115,125),1,0,"SicklePuff",140)
	SCKL H 1 Offset (14,52)
	SCKL H 1 Offset (4,72)
	TNT1 A 15
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    Altfire2:
	SCKL I 1 Offset (36,38)
	SCKL I 1 Offset (32,32)
	SCKL J 1
	SCKL K 1 Offset (32,42) 
	SCKL L 1 Offset (30,28)
	SCKL L 1 Offset (4,36)
	SCKL L 1 Offset (-22,48) A_CustomPunch(random(130,140),1,0,"SicklePuff",140)
	SCKL M 1 Offset (16,42)
	SCKL M 1 Offset (-22,72)
	TNT1 A 15
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    }
}

// Powered

ACTOR SicklePowered : Sickle
{
    Tag "Sickle"
    +MELEEWEAPON
    +NOEXTREMEDEATH
    +INVENTORY.UNDROPPABLE
    +POWERED_UP
    +CHEATNOTWEAPON
    Weapon.SisterWeapon "Sickle"
    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
    Fire:
	SCKL A 1 Offset (64,46)
	SCKL A 1 Offset (48,42)
	SCKL A 1 Offset (32,38)
	SCKL B 1 Offset (34,50)
	SCKL B 1 Offset (10,48)
	SCKL B 1 Offset (-14,50)
	SCKL C 1 Offset (18,32) A_Custompunch(random(140,160),1,0,"LDSicklePuff",140)
	SCKL C 1 Offset (-12,36)
	SCKL C 1 Offset (-42,44)
	SCKL C 1 Offset (-72,56)
	SCKL D 1 Offset (13,35)
	SCKL D 1 Offset (-7,50)
	SCKL D 1 Offset (-27,65)
	TNT1 A 5
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    Altfire:
	SCKL N 2
	TNT1 A 2
    AltHold:
	TNT1 A 0 A_Jump(85,"Altfire2")
    Altfire1:
	SCKL A 1
	SCKL E 1
	SCKL F 1 Offset (2,30)
	SCKL G 1 Offset (2,32)
	SCKL G 1 Offset (-16,44)
	SCKL G 1 Offset (-34,56)
	SCKL H 1 Offset (24,32) A_CustomPunch(random(180,200),1,0,"MDSicklePuff",140)
	SCKL H 1 Offset (14,52)
	SCKL H 1 Offset (4,72)
	TNT1 A 15
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    Altfire2:
	SCKL I 1 Offset (36,38)
	SCKL I 1 Offset (32,32)
	SCKL J 1
	SCKL K 1 Offset (32,42) 
	SCKL L 1 Offset (30,28)
	SCKL L 1 Offset (4,36)
	SCKL L 1 Offset (-22,48) A_CustomPunch(random(190,220),1,0,"MDSicklePuff",140)
	SCKL M 1 Offset (16,42)
	SCKL M 1 Offset (-22,72)
	TNT1 A 15
	TNT1 A 0 A_ReFire
	TNT1 A 2
	SCKL N 2
	Goto Ready
    }
}
*/
// Extra

ACTOR LDSicklePuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +NOEXTREMEDEATH
    RenderStyle Add
    SeeSound "FighterAxeHitThing"
    AttackSound "FighterHammerHitWall"
    ActiveSound "FighterHammerMiss"
    DamageType "LifeDrain"
    Alpha 0.5
    States
    {
    Spawn:
	SKP1 ABCDEF 3 Bright
	Stop
    }
}

ACTOR MDSicklePuff : LDSicklePuff
{
    DamageType "ManaDrain"
    States
    {
    Spawn:
	SKP2 ABCDEF 3 Bright
	Stop
    }
}

//----------------------------------------------------------

ACTOR Totem : MageWeapon 6153
{
    Tag "Totem Staff"
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    +NOGRAVITY
    Inventory.PickupMessage "Totem Staff"
    Scale 0.14
    States
    {
    Spawn:
	TTMP A -1
	Loop
    Ready:
	TTEM AAAAAA 1 A_WeaponReady
	TTEM A 0 A_Jump(3,1)
	Loop
	TTEM A 0 A_PlaySound("weapons/totem/idle", CHAN_5, 0.7, 0)
	Loop
    Deselect:
	TTEM A 0 A_StopSound(CHAN_5)
	TTEM A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Select:
	TTEM A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Fire:
	TTEM BCDE 1
	TTEM F 0 A_JumpIfInventory("FullMojo",1,18)
	TTEM F 0 A_JumpIfInventory("MojoActive",1,9)
	TTEM F 0 A_PlayWeaponSound("weapons/totem/attack")
	TTEM F 14 A_FireBullets(2.8,2.8,random(4,6),random(15,25),"MojoPuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
	TTEM F 0 A_PlayWeaponSound("weapons/totem/attack")	
	TTEM F 12 A_FireBullets(2.8,2.8,random(4,6),random(18,30),"MojoActivePuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
	TTEM F 0 A_PlayWeaponSound("weapons/totem/defileattack")
	TTEM F 8 A_FireBullets(2.8,2.8,random(4,6),random(25,36),"DefilePuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
    Hold:
	TTEM F 0 A_JumpIfInventory("FullMojo",1,18)
	TTEM F 0 A_JumpIfInventory("MojoActive",1,9)
	TTEM F 0 A_PlayWeaponSound("weapons/totem/attack")
	TTEM F 14 A_FireBullets(2.8,2.8,random(4,6),random(15,25),"MojoPuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
	TTEM F 0 A_PlayWeaponSound("weapons/totem/attack")
	TTEM F 12 A_FireBullets(2.8,2.8,random(4,6),random(18,30),"MojoActivePuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
	TTEM F 0 A_PlayWeaponSound("weapons/totem/defileattack")
	TTEM F 8 A_FireBullets(2.8,2.8,random(4,6),random(25,36),"DefilePuff",16)
	TTEM F 3 A_ReFire
	TTEM EDCBA 1
	Goto Ready
    AltFire:
	TTEM A 0 A_JumpIfInventory("MojoActive",1,"Ready")
	TTEM A 0 A_JumpIfInventory("Mojo",10,1)
	Goto Ready
	TTEM A 0 A_PlaySound("weapons/totem/trigger",CHAN_AUTO,1.0,0)
	TTEM AAA 3
	TTEM A 0 A_GiveInventory("MojoActive",1)
	TTEM A 0 A_SpawnItemEx("MojoSpawner",0,0,0,0,0,0,0,32,0)
	TTEM A 0 A_JumpIfInventory("Mojo",100,"FullActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",90,"90PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",80,"80PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",70,"70PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",60,"60PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",50,"50PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",40,"40PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",30,"30PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",20,"20PercentActivated")
	TTEM A 0 A_JumpIfInventory("Mojo",10,"10PercentActivated")
	Goto Ready
    FullActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("FullMojo",1)
	TTEM A 0 A_GiveInventory("MojoDrainFull",1)
	Goto Ready
    90PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain90",1)
	TTEM A 0 A_GiveInventory("90PercentMojo",1)
	Goto Ready
    80PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain80",1)
	TTEM A 0 A_GiveInventory("80PercentMojo",1)
	Goto Ready
    70PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain70",1)
	TTEM A 0 A_GiveInventory("70PercentMojo",1)
	Goto Ready
    60PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("60PercentMojo",1)
	Goto Ready
    50PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("50PercentMojo",1)
	Goto Ready
    40PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("40PercentMojo",1)
	Goto Ready
    30PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("30PercentMojo",1)
	Goto Ready
    20PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("20PercentMojo",1)
	Goto Ready
    10PercentActivated:
	TTEM A 0 A_GiveInventory("MojoFear",1)
	TTEM A 0 A_GiveInventory("MojoDrain60",1)
	TTEM A 0 A_GiveInventory("10PercentMojo",1)
	Goto Ready
    }
}

ACTOR Mojo : Ammo
{
    Inventory.Amount 1
    Inventory.MaxAmount 100
    +IGNORESKILL
    States
    {
    Spawn:
	TNT1 A -1
	Stop
    }
}

ACTOR MojoPuff
{
    +ALWAYSPUFF
    +PUFFONACTORS
    +NOEXTREMEDEATH
    +BLOODLESSIMPACT
    +DONTSPLASH
    +NOBLOCKMAP
    +NOGRAVITY
    DamageType "Mojo"
    RenderStyle Add
    Scale 0.25
    States
    {
    Spawn:
	MJP2 ABCDEFGHIJKL 2 Bright A_FadeOut(0.07)
	Stop
    }
}

ACTOR MojoActivePuff : MojoPuff
{
    DamageType "MojoActive"
}

ACTOR DefilePuff : MojoPuff
{
    +ALWAYSPUFF
    +PUFFONACTORS
    +NOEXTREMEDEATH
    +BLOODLESSIMPACT
    +DONTSPLASH
    +NOBLOCKMAP
//    +FOILINVUL
    DamageType "Defile"
    RenderStyle Add
    Scale 0.6
    States
    {
    Spawn:
	DEFL A 0
	DEFL AAAAAAAAA 0 A_SpawnItemEx("DefileParticle",0,0,0,frandom(2,-2),frandom(2,-2),frandom(2,-2),frandom(0,359),0)
	DEFL ABCDEFG 3 Bright
	Stop
    }
}

ACTOR DefileParticle
{
    +DONTSPLASH
    Radius 1
    Height 1
    Gravity 0.1
    RenderStyle Add
    Translation "0:255=%[0.0,0.0,0.0]:[1.3,0.6,0.4]"
    Scale 0.075
    States
    {
    Spawn:
	CBLT M 4 Bright A_FadeOut(0.15)
	Wait
    }
}

ACTOR MojoEffect
{
    +NOGRAVITY
    +NOINTERACTION
    RenderStyle Add
    Scale 0.5
    Alpha 0.75
    States
    {
    Spawn:
	MOJD ABCDEFGHIJ 2 Bright A_FadeOut(0.05)
	Stop
    }
}

ACTOR MojoActive : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR MojoSpawner
{
    Radius 0
    Height 0
    +NOTIMEFREEZE
    +NOFEAR
    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 0 A_SpawnItemEx("MojoDrainer",0,0,0,0,0,0,0,32,0)
        Stop 
    }
}

ACTOR MojoDrainer
{
    Radius 0
    Height 1
    Speed 0
    PROJECTILE
    RenderStyle "None"
    -ACTIVATEPCROSS
    +LOOKALLAROUND
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +NOFEAR
    MinMissileChance 0
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("weapons/totem/active",CHAN_6,0.7,1,ATTN_NONE)
	TNT1 A 1 A_Look
    See:
	TNT1 A 1 A_Chase
    Missile:
	TNT1 A 0 A_JumpIfInTargetInventory("MojoActive",1,1)
	Goto Death
	TNT1 A 0 A_JumpIfInTargetInventory("Mojo",2,3)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_TakeFromTarget("Mojo",1)
	Goto Death
	TNT1 A 0 A_FaceTarget
	TNT1 A 8 A_TakeFromTarget("Mojo",1)
	Loop
    Death:
	TNT1 A 0 A_TakeFromTarget("MojoActive",1)
	TNT1 A 0 A_TakeFromTarget("FullMojo",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoFear",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoDrain60",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoDrain70",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoDrain80",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoDrain90",1)
	TNT1 A 0 A_TakeFromTarget("PowerMojoDrainFull",1)
	TNT1 A 0 A_TakeFromTarget("90PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("80PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("70PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("60PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("50PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("40PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("30PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("20PercentMojo",1)
	TNT1 A 0 A_TakeFromTarget("10PercentMojo",1)
	TNT1 A 0 A_StopSound(CHAN_6)
	Stop
    }
}

ACTOR PowerMojoFear : PowerFrightener
{}

ACTOR MojoFear : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoFear"	
    Powerup.Duration 1200
    Powerup.Color "60 10 80",0.2
}

ACTOR PowerMojoDrain60 : PowerDrain
{
    Powerup.Strength 0.1
}

ACTOR MojoDrain60 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoDrain60"	
    Powerup.Duration 1200
    Powerup.Color "30 00 00",0.2
}

ACTOR PowerMojoDrain70 : PowerDrain
{
    Powerup.Strength 0.15
}

ACTOR MojoDrain70 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoDrain70"	
    Powerup.Duration 1200
    Powerup.Color "30 00 00",0.2
}

ACTOR PowerMojoDrain80 : PowerDrain
{
    Powerup.Strength 0.2
}

ACTOR MojoDrain80 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoDrain80"	
    Powerup.Duration 1200
    Powerup.Color "30 00 00",0.2
}

ACTOR PowerMojoDrain90 : PowerDrain
{
    Powerup.Strength 0.3
}

ACTOR MojoDrain90 : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoDrain90"	
    Powerup.Duration 1200
    Powerup.Color "30 00 00",0.2
}

ACTOR PowerMojoDrainFull : PowerDrain
{
    Powerup.Strength 0.4
}

ACTOR MojoDrainFull : PowerupGiver
{
    +INVENTORY.AUTOACTIVATE
    Inventory.Maxamount 1
    Powerup.Type "MojoDrainFull"	
    Powerup.Duration 1200
    Powerup.Color "30 00 00",0.2
}

ACTOR FullMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 90PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 80PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 70PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 60PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 50PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 40PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 30PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 20PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

ACTOR 10PercentMojo : Inventory
{
    Inventory.InterHubAmount 0
    Inventory.Amount 1
    Inventory.MaxAmount 1
}

//----------------------------------------------------------

//--- Slot 2 ---//

// Normal
/*								Now in ZScript to improve hit detection (almost missed this one)
ACTOR FrostShards : MWeapFrost replaces MWeapFrost
{
    Tag "Frost Shards"
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.SisterWeapon "FrostShardsPowered"
    Weapon.AmmoUse1 1 // 2 with RoW, 3 without
    Weapon.AmmoUse2 2 // 2 with RoW, 4 without
    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
    Ready:
	CONE A 1 A_WeaponReady
	Loop
    Fire:
	CONE B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CONE B 0 A_JumpIfInventory("BlueMana",3,4)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 0 A_JumpIfInventory("BlueMana",2,2)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 2
	CONE C 2
    Hold:
	CONE D 3
	CONE E 3
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 AA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CONE F 0 A_FireConePL1
	CONE F 3 A_CustomPunch(random(180,210),1,0,"FrostShardsPuff",64)
	CONE G 3
	CONE A 4
	Goto Ready
    AltFire:
	CONE B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CONE B 0 A_JumpIfInventory("BlueMana",4,4)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 0 A_JumpIfInventory("BlueMana",2,2)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 2
	CONE C 2
    AltHold:
	CONE D 3
	CONE E 5
	CONE E 3 A_PlaySound("weapons/frostshards/altfire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CONE F 3 A_FireCustomMissile("AbsoluteZero",0,1,0,0)
	CONE G 3
	CONE A 7
	Goto Ready
    }
}

// Powered

ACTOR FrostShardsPowered : FrostShards
{
    Tag "Frost Shards"
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    +POWERED_UP
    Weapon.SisterWeapon "FrostShards"
    Weapon.AmmoUse1 2 // 2 with RoW, 4 without
    Weapon.AmmoUse2 5 // 5 with RoW, 10 without
    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
    Fire:
	CONE B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CONE B 0 A_JumpIfInventory("BlueMana",4,4)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 0 A_JumpIfInventory("BlueMana",2,2)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 2
	CONE C 2
    Hold:
	CONE D 3
	CONE E 3
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	TNT1 A 0 A_PlaySound("weapons/frostshards/powered/fire", CHAN_WEAPON, 1.0, 0)
	TNT1 AAAAAAAAAAA 0 A_FireCustomMissile("FreezeSpike",frandom(-4,4),0,7,8)
	CONE F 3 A_FireCustomMissile("FreezeSpike",frandom(-4,4),1,7,8)
	CONE G 4
	CONE A 4
	Goto Ready
    AltFire:
	CONE B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	CONE B 0 A_JumpIfInventory("BlueMana",10,4)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 0 A_JumpIfInventory("BlueMana",5,2)
	CONE B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	CONE B 4 A_PlaySound("weapons/frostshards/powered/charge", CHAN_AUTO, 1.0, 0)
	CONE F 8
    AltHold:
	CONE C 3
	CONE D 4
	CONE E 4
	CONE E 3 A_PlaySound("weapons/frostshards/powered/altfire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	CONE F 3 A_FireCustomMissile("IceDragonHead",0,1,0,0)
	CONE G 3
	CONE A 10
	Goto Ready
    }
}
*/
// Extra

ACTOR FrostShardMissile : FrostMissile replaces FrostMissile
{
    DamageType "Frost"
    Damage (2*(random(7,9)))
    Radius 6
}

ACTOR FrostShardsPuff
{
    +NOBLOCKMAP
    +NOGRAVITY
    +PUFFONACTORS
    +NOEXTREMEDEATH
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    DamageType "Frost"
    States
    {
    Spawn:
	TNT1 A 0
	Stop
    }
}

ACTOR Blizzard
{
    PROJECTILE
    Speed 10
    Damage (random(4,9))
    Radius 16
    Height 12
    BounceType "Doom"
    BounceFactor 0.5
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    +SEEKERMISSILE
    +CANBOUNCEWATER
    +DONTSPLASH
    +NODAMAGETHRUST
    +CANNOTPUSH
    +FOILINVUL
    DamageType "Frost"
    Scale 0.6
    ReactionTime 16
    RenderStyle Add
    Alpha 0.67
    States
    {
    Spawn:
	FX07 D 0
	FX07 DEFG 3
	TNT1 A 0 A_CountDown
	FX07 AAA 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,1),frandom(-5,5),frandom(1,360))
	FX07 BBB 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	FX07 CCC 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	FX07 BBB 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	TNT1 A 0 A_CountDown
	FX07 AAA 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,1),frandom(-5,5),frandom(1,360))
	FX07 BBB 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	FX07 CCC 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	FX07 BBB 1 A_SeekerMissile(10,10,3)
	TNT1 AAA 0 A_SpawnItemEx("BlizzardFX",frandom(-10,10),frandom(-10,10),frandom(-10,40),frandom(-5,5),frandom(-5,5),frandom(-5,5),frandom(1,360))
	TNT1 A 0 A_Jump(80,2)
	TNT1 A 0 A_PlaySound("ironlich/attack3")
	TNT1 A 0
	Goto Spawn+5
    Death:
	FX07 GFED 3
	FX07 D 1 A_FadeOut
	Wait
    }
}

ACTOR BlizzardFX
{
    PROJECTILE
    -ACTIVATEPCROSS
    Speed 0
    Radius 1
    Height 1
    Scale 0.192
    +NOINTERACTION
    RenderStyle Add
    Translation "0:32=67:80"
    States
    {
    Spawn:
	PUF2 AAA 1
	TNT1 A 0 A_Jump(160,1)
	Loop
	PUF2 AAA 1
	PUF2 A 1 A_FadeOut
	Wait
    Death:
	TNT1 A 1
	Stop
    }
}

ACTOR FreezeSpike
{
    Speed 30
    Radius 6
    Height 6
    Damage 6
    PROJECTILE
    -ACTIVATEPCROSS
    RenderStyle Add
    Alpha 0.5
    Scale 0.7
    DamageType "Frost"
    States
    {
    Spawn:
	FRZ9 A 0
	FRZ9 A 0 A_Jump(127,3)
	FRZ9 A 0 Bright ThrustThingZ(0,frandom(0,8),0,1)
	FRZ9 A 0 A_Jump(256,2)
	FRZ9 A 0 Bright ThrustThingZ(0,frandom(0,8),1,1)
	FRZ9 ABC 2 Bright
	Goto Spawn+5
    Death:
	FRZ9 CDEFGH 2 Bright
	Stop
    }
}

ACTOR AbsoluteZero
{
    PROJECTILE
    -ACTIVATEPCROSS
    +SEEKERMISSILE
    +NODAMAGETHRUST
    Speed 20
    Damage 15
    Radius 10
    Height 14
    Scale 0.3
    RenderStyle Add
    DamageType "Frost"
    DeathSound "absolutezero/explode"
    States
    {
    Spawn:
	ZPRJ A 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ A 0 Bright A_SeekerMissile(2,3) // (2,3,3,50,2)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ A 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ A 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ A 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ A 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ B 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ B 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ B 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ B 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ B 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ B 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ C 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ C 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ C 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ C 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ C 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ C 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ D 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ D 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ D 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ D 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ D 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ D 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ E 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ E 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ E 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ E 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ E 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ E 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ F 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ F 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ F 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ F 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ F 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ F 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ G 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ G 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ G 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ G 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ G 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ G 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ H 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ H 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ H 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ H 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ H 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ H 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ I 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ I 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ I 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ I 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ I 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ I 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ J 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ J 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ J 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ J 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ J 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ J 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ K 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ K 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ K 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ K 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ K 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ K 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ L 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ L 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ L 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ L 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	ZPRJ L 1 Bright A_CustomMissile("BlizzardFX",0,frandom(21,-21),frandom(0,360))
	ZPRJ L 0 Bright A_SeekerMissile(2,3)
	ZPRJ A 0 Bright A_SpawnItemEx("ZeroKFX",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	Loop
    Death:
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ZeroKExplosionExtra",0,0,0,random(5,-5)/(3*1.05),random(5,-5)/(3*1.05),random(5,-5)/(3*1.05),0,32)
/*
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,0,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,8,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,16,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,24,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,32,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,40,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,48,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,56,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,64,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,72,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,80,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,88,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,96,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,104,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,112,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,120,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,128,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,136,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,144,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,152,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,160,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,168,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,176,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,184,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,192,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,200,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,208,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,216,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,224,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,232,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,240,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,248,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,256,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,264,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,272,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,280,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,288,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,296,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,304,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,312,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,320,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,328,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,336,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,344,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,352,6,0)
*/
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,1,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,7,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,14,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,21,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,28,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,35,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,42,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,49,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,56,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,63,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,70,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,77,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,84,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,91,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,98,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,105,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,112,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,119,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,126,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,133,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,140,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,147,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,154,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,161,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,168,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,175,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,182,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,189,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,196,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,203,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,210,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,217,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,224,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,231,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,238,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,245,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,252,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,259,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,266,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,273,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,280,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,287,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,294,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,301,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,308,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,315,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,322,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,329,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,336,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,343,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,350,6,0)
	TNT1 A 0 A_CustomMissile("ZeroKExplosion",6,0,356,6,0)

	TNT1 A 0 A_Explode(8,220,0)	//12,220,0
	ZEXP A 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP B 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP C 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP D 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP E 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP F 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP G 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP H 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP I 3 Bright A_FadeOut(0.05)
	TNT1 A 0 A_Explode(8,220,0)
	ZEXP J 3 Bright A_FadeOut(0.05)
	ZEXP J 1 Bright A_FadeOut
	Wait
    }
}

ACTOR ZeroKFX
{
    +NOINTERACTION
    RenderStyle Add
    Scale 0.9
    Alpha 0.4
    States
    {
    Spawn:
	FX18 HIJKHIL 3 Bright
	Stop
    }
}

ACTOR ZeroKExplosion
{
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    +NOBOSSRIP
//    +FOILINVUL
    Damage (random(1,2)) // (1)
    Mass 1
    Speed 5
    Radius 2
    Height 2
    DamageType "Frost"
    RenderStyle Add
    Alpha 0.6
    Scale 0.4
    States
    {
    Spawn:
	X033 ABCD 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.9)
	X033 EFGH 2 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.75)
	X033 IJKL 1 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 MNOP 1 Bright A_FadeOut(0.02)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 QR 1 Bright A_FadeOut(0.05)
	Wait
    Death:
	TNT1 A 1
	Stop 
    }
}
ACTOR ZeroKExplosionExtra
{
    +NOINTERACTION
    RenderStyle Add
    Scale 0.35
    States
    {
    Spawn:
	X033 ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.04)
	Stop
    }
}

ACTOR IceDragonHead
{
    PROJECTILE
    -ACTIVATEPCROSS
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    +SEEKERMISSILE
    +FLOATBOB
//    +FOILINVUL
    +DONTSPLASH
    Mass 500
    Radius 6
    Height 6
    Speed 16
    Damage 20
    Scale 0.25
    DamageType "Frost"
    RenderStyle Add
    Alpha 0.3
    Translation "0:255=%[0.0,0.0,0.0]:[0.6,0.9,1.3]"
    DeathSound "icedragon/hit"
    States
    {
    Spawn:
	TNT1 A 0 Bright A_SpawnItemEx("IceDragonTail",8,0,0,0,0,0,0,48)
	TNT1 A 0 Bright A_CStaffMissileSlither
	DGHD A 1 Bright A_SeekerMissile(4,6,2)
	TNT1 A 0 Bright A_SpawnItemEx("IceDragonTail",8,0,0,0,0,0,0,48)
	DKDH A 1 Bright A_SeekerMissile(4,6,2)
	Loop
    Death:
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("IceDragonExploSprite",0,0,0,random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),random(10,-10)/(3*1.05),0,32)
	TNT1 A 0 A_Explode(120,280,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,0,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,8,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,16,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,24,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,32,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,40,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,48,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,56,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,64,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,72,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,80,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,88,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,96,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,104,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,112,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,120,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,128,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,136,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,144,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,152,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,160,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,168,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,176,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,184,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,192,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,200,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,208,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,216,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,224,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,232,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,240,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,248,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,256,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,264,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,272,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,280,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,288,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,296,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,304,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,312,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,320,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,328,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,336,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,344,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,352,6,0)
	TNT1 A 8
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,0,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,8,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,16,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,24,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,32,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,40,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,48,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,56,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,64,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,72,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,80,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,88,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,96,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,104,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,112,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,120,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,128,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,136,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,144,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,152,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,160,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,168,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,176,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,184,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,192,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,200,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,208,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,216,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,224,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,232,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,240,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,248,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,256,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,264,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,272,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,280,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,288,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,296,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,304,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,312,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,320,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,328,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,336,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,344,6,0)
	TNT1 A 0 A_CustomMissile("IceDragonExplo",6,0,352,6,0)
	Stop
    }
}

ACTOR IceDragonTail
{
    PROJECTILE
    -ACTIVATEPCROSS
    +DONTSPLASH
    +NOINTERACTION
    Mass 500
    Radius 6
    Height 6
    Scale 0.5
    Speed 0
    RenderStyle Add
    Alpha 0.3
    Translation "0:255=%[0.0,0.0,0.0]:[0.6,0.9,1.3]"
    States
    {
    Spawn:
	TNT1 A 3
	DGTL AAAABBBBCCCCDDDDEEEEFFFF 1 Bright
	Goto Death
    Death:
	DGTL GGGHHHIII 1 Bright
	Stop
    }
}

ACTOR IceDragonExploSprite
{
    +NOINTERACTION
    RenderStyle Add
    Scale 0.6
    States
    {
    Spawn:
	X033 ABCDEFGHIJKLMNOPQR 2 Bright A_FadeOut(0.04)
	Stop
    }
}

ACTOR IceDragonExplo
{
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +NOBOSSRIP
    +DONTSPLASH
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    DamageType "Frost"
    Mass 1
    Speed 8
    Damage (Random(3,6))
    Radius 2
    Height 2
    RenderStyle Add
    Alpha 0.6
    Scale 0.7
    States
    {
    Spawn:
	X033 ABCD 2 Bright A_FadeOut(0.015)
	TNT1 A 0 A_ScaleVelocity(0.9)
	X033 EFGH 2 Bright A_FadeOut(0.015)
	TNT1 A 0 A_ScaleVelocity(0.75)
	X033 IJKL 2 Bright A_FadeOut(0.015)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 MNOP 2 Bright A_FadeOut(0.015)
	TNT1 A 0 A_ScaleVelocity(0.6)
	X033 QR 2 Bright A_FadeOut(0.1)
	Wait
    Death:
	TNT1 A 1
	Stop 
    }
}


//----------------------------------------------------------

// Normal

ACTOR SapphireWand : MWeapWand replaces MWeapWand 7015
{
    Tag "Sapphire Wand"
    SpawnID 150
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 0 // //0.5 with RoW, 1 without
    Weapon.AmmoUse2 1 // 0.5 with RoW, 1 without
    Inventory.PickupMessage "Sapphire Wand"
    Weapon.SisterWeapon "SapphireWandPowered"
    Scale 1.5
    States
    {
    Spawn:
	MWND J -1
	Stop
    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 3 
	MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("WeakSapphireWandShot",0,0,0)
	MWND A 2 Offset (0, 40)
	MWND A 2 Offset (0, 36)
	MWND A 1 Offset (0, 32)
	Goto Ready

//	MWND A 6
//	MWND B 6 Bright Offset(0, 48) A_FireCustomMissile("SapphireWandShot")
//	MWND A 3 Offset(0, 40)
//	MWND A 3 Offset(0, 36) A_ReFire
//	Goto Ready


//	MWND A 2
//	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
//	MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("SapphireWandShot")
//	TNT1 A 0 A_Jump(256,7)
//	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
//	MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("SapphireWandShot",0,0,0)
//	TNT1 A 0 A_GiveInventory("HalfMana2",1)
//	TNT1 A 0 A_Jump(256,3)
//	MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("SapphireWandShot")
//	TNT1 A 0 A_TakeInventory("HalfMana2",1)
//	MWND A 2 Offset (0, 40)
//	MWND A 2 Offset (0, 36)
//	MWND A 1 Offset (0, 32)
//	Goto Ready
    AltFire:
	MWND A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MWND A 0 A_JumpIfInventory("BlueMana",3,2)
	Goto Fire
	MWND A 0 A_JumpIfInventory("BlueMana",2,1)
	Goto Fire
	MWND A 2
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"AltFireHalfMana1")
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot")
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot")
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot")
	MWND A 4 Offset (0, 40)
	MWND A 3 Offset (0, 36)
	MWND A 3 Offset (0, 34)
	Goto Ready
    AltFireHalfMana1:
	MWND A 2
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,"AltFireHalfMana2")
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,1,0)
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,0,0)
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,1,0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	MWND A 4 Offset (0, 40)
	MWND A 3 Offset (0, 36)
	MWND A 3 Offset (0, 34)
	Goto Ready
    AltFireHalfMana2:
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,0,0)
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,1,0)
	MWND A 2 Offset (0, 48)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireWandShot",0,0,0)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	MWND A 4 Offset (0, 40)
	MWND A 4 Offset (0, 36)
	MWND A 3 Offset (0, 34)
	Goto Ready
    }
}

// Powered

ACTOR SapphireWandPowered : SapphireWand
{
    Tag "Sapphire Wand"
    +WEAPON.AMMO_OPTIONAL
    +WEAPON.ALT_AMMO_OPTIONAL
    Weapon.AmmoType1 "BlueMana"
    Weapon.AmmoType2 "BlueMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 0
    Weapon.AmmoUse2 1 // 1 with RoW, 2 without
    Weapon.SisterWeapon "SapphireWand"
    +POWERED_UP
    Scale 1.5
    States
    {
    Spawn:
	MWND J -1
	Stop
    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 3
	MWND A 0 A_PlaySound("weapons/sapphirewand/powered/fire", CHAN_WEAPON, 1.0, 0)
	MWND B 6 Bright Offset (0, 48) A_FireCustomMissile ("SapphireCrystal1",0,0,0)
	MWND A 2 Offset (0, 40)
	MWND A 2 Offset (0, 36)
	MWND A 1 Offset (0, 32)
	Goto Ready
    AltFire:
	MWND A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	MWND A 0 A_JumpIfInventory("BlueMana",6,2)
	Goto Fire
	MWND A 0 A_JumpIfInventory("BlueMana",3,1)
	Goto Fire
	MWND A 2
	MWND A 0 A_PlaySound("weapons/sapphirewand/powered/altfire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireCrystal1",frandom(-2,2),1)
	MWND A 1 Offset (0, 48)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireCrystal2",frandom(-2,2),1)
	MWND A 1 Offset (0, 48)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MWND B 2 Bright Offset (0, 48) A_FireCustomMissile("SapphireCrystal3",frandom(-2,2),1)
	MWND A 4 Offset (0, 40)
	MWND A 4 Offset (0, 36)
	MWND A 3 Offset (0, 34)
	Goto Ready
    }
}

// Extra

ACTOR SapphireWandShot : MageWandMissile replaces MageWandMissile
{
    Radius 8
    Damage 10
    Scale 1.25
    MissileType "MageWandSmoke3"
    -RIPPER
    +STRIFEDAMAGE
    +NOEXTREMEDEATH
    States
    {
    Death:
	MWND E 4 Bright A_Explode(random(72,90),24,0,0,1)
	MWND F 3 Bright
	MWND G 4 Bright
	MWND H 3 Bright
	MWND I 4 Bright
	Stop
    }
}

ACTOR WeakSapphireWandShot : SapphireWandShot
{
    Radius 6
    Damage 6
    Scale 0.85
    MissileType "MageWandSmoke2"
    States
    {
    Death:
	MWND E 4 Bright A_Explode(random(48,64),16,0,0,1)
	MWND F 3 Bright
	MWND G 4 Bright
	MWND H 3 Bright
	MWND I 4 Bright
	Stop
    }
}

ACTOR MageWandSmoke2 : MageWandSmoke replaces MageWandSmoke
{
    Scale 0.85
}

ACTOR MageWandSmoke3 : MageWandSmoke2
{
    Scale 1.25
}

ACTOR SapphireCrystal1 : FastProjectile
{
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    Radius 2
    Height 2
    Speed 75
    Damage 16
    DeathSound "weapons/sapphirewand/powered/hit"
    RenderStyle Add
    Alpha 0.75
    Scale 0.5
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	Goto Spawn+1
    Death:
	TNT1 A 0 A_Explode(random(85,105),64,0)
	TNT1 AAAAAAA 0 A_SpawnItemEx("SapphireCrystalExtra",0,0,0,random(1,4),random(1,4),random(1,4),random(0,359),1)
	SAPH DEFGHIJKLM 3 Bright
	Stop
    }
}

ACTOR SapphireCrystal2 : SapphireCrystal1
{
    States
    {
    Spawn:
	SAPH A 2
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	Goto Spawn+1
    Death:
	TNT1 A 0 A_Explode(random(95,115),64,0)
	TNT1 AAAAAAA 0 A_SpawnItemEx("SapphireCrystalExtra",0,0,0,random(1,4),random(1,4),random(1,4),random(0,359),1)
	SAPH DEFGHIJKLM 3 Bright
	Stop
    }
}

ACTOR SapphireCrystal3 : SapphireCrystal1
{
    States
    {
    Spawn:
	SAPH A 3
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH A 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH B 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	TNT1 A 0 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,-1,0,0,0)
	SAPH C 1 Bright A_SpawnItemEx("SapphireCrystalExtra2",0,0,0,0,1,0,0,0)
	Goto Spawn+1
    Death:
	TNT1 A 0 A_Explode(random(105,125),64,0)
	TNT1 AAAAAAA 0 A_SpawnItemEx("SapphireCrystalExtra",0,0,0,random(1,4),random(1,4),random(1,4),random(0,359),1)
	SAPH DEFGHIJKLM 3 Bright
	Stop
    }
}

Actor SapphireCrystalExtra
{
    PROJECTILE
    Speed 0
    +NOCLIP
    -ACTIVATEPCROSS
    -NOGRAVITY
    Gravity 0.6
    Damage 0
    Scale 0.09
    RenderStyle Add
    States
    {
    Spawn:
	SAPH NNN 1 Bright
	TNT1 A 0 A_Jump(140,1,2,3)
	SAPH NNNNNN 1 Bright	
	SAPH N 1 A_FadeOut(0.2)
	Wait
    }
}

Actor SapphireCrystalExtra2 
{
    +NOINTERACTION
    RenderStyle Add
    Scale 0.12
    States
    {
    Spawn:
	TNT1 A 0
	SAPH N 1 Bright A_FadeOut(0.05)
	Loop
    }
}

//----------------------------------------------------------

//--- Slot 3 ---//

// Normal

ACTOR ArcOfDeath : MWeapLightning2 replaces MWeapLightning
{
    Tag "Arc Of Death"
    SpawnID 113
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoUse1 1 // 3 with RoW, 5 without
    Weapon.AmmoUse2 5 // 5 with RoW, 10 without
    Weapon.SisterWeapon "ArcOfDeathPowered"
    States
    {
    Select:
	MLNG A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	MLNG A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	MLNG AAAAA 1 Bright A_WeaponReady
	MLNG A 1 Bright A_LightningReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	MLNG BBBBBB 1 Bright A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	MLNG CCCCC 1 Bright A_WeaponReady
	MLNG C 1 Bright A_LightningReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,"ReadyPowered")
	MLNG BBBBBB 1 Bright A_WeaponReady
	Loop
    ReadyPowered:
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	PLNG AAAAA 1 Bright A_WeaponReady
	PLNG A 1 Bright A_LightningReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	PLNG BBBBBB 1 Bright A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	PLNG CCCCC 1 Bright A_WeaponReady
	PLNG C 1 Bright A_LightningReady
	TNT1 A 0 A_JumpIfInventory("PowerWeaponLevel2",1,1)
	Goto Ready
	PLNG BBBBBB 1 Bright A_WeaponReady
	Loop
    Fire:
	MLNG D 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MLNG D 0 A_JumpIfInventory("GreenMana",5,4)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG D 0 A_JumpIfInventory("GreenMana",3,2)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG DE 3 Bright
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,3)
	TNT1 AAAA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MLNG F 4 Bright A_MLightningAttack
	MLNG G 4 Bright
	MLNG HI 2 Bright
	MLNG I 5 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 D 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MLNG D 0 A_JumpIfInventory("GreenMana",10,4)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG D 0 A_JumpIfInventory("GreenMana",5,2)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG DE 3 Bright
	MLNG E 0 Bright A_PlaySound("MageLightningFire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MLNG F 4 Bright A_FireCustomMissile("LightningSphere",0,1,0,8)
	MLNG G 4 Bright
	MLNG HI 3 Bright
	TNT1 A 6
	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
    }
}

// Powered

ACTOR ArcOfDeathPowered : ArcOfDeath
{
    Tag "Arc Of Death"
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoUse1 4 // 4 with RoW, 8 without
    Weapon.AmmoUse2 1 // 15 with RoW, 8 without
    Weapon.SisterWeapon "ArcOfDeath"
    +POWERED_UP
    States
    {
    Select:
	PLNG A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	PLNG A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Fire:
	MLNG D 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MLNG D 0 A_JumpIfInventory("GreenMana",8,4)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG D 0 A_JumpIfInventory("GreenMana",4,2)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	PLNG DE 3 Bright
	MLNG E 0 Bright A_PlaySound("MageLightningFire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	PLNG F 4 Bright A_FireBullets(0,0,1,0,"LightningBoltSpot")
	PLNG G 4 Bright
	PLNG HI 3 Bright
	PLNG I 6 Bright Offset (0, 199)
	PLNG C 2 Bright Offset (0, 55)
	PLNG B 2 Bright Offset (0, 50)
	PLNG B 2 Bright Offset (0, 45)
	PLNG B 2 Bright Offset (0, 40)
	Goto Ready
    AltFire:
	MLNG D 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MLNG D 0 A_JumpIfInventory("GreenMana",15,4)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MLNG D 0 A_JumpIfInventory("GreenMana",8,2)
	MLNG D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	PLNG DE 3 Bright
	PLNG E 0 Bright A_PlaySound("MageLightningFire", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,8)
	TNT1 AAAAAAAAAAAAAA 0 A_FireCustomMissile("AmmoUser",0,1,0)
	PLNG F 4 Bright A_FireCustomMissile("LightningSeekerOrb",0,1,0,8)
	PLNG G 4 Bright
	PLNG HI 3 Bright
	TNT1 A 10
	PLNG I 6 Bright Offset (0, 199)
	PLNG C 2 Bright Offset (0, 55)
	PLNG B 2 Bright Offset (0, 50)
	PLNG B 2 Bright Offset (0, 45)
	PLNG B 2 Bright Offset (0, 40)
	Goto Ready
    }
}

// Extra

ACTOR LightningTop : LightningCeiling replaces LightningCeiling
{
    Health 175
    Radius 10
    Damage 10
}

ACTOR LightningBottom : LightningFloor replaces LightningFloor
{
    Health 175
    Radius 10
    Damage 10
}

ACTOR LightningSphere
{
    Speed 30
    Radius 5
    Height 5
    Damage 10
    PROJECTILE
    -ACTIVATEPCROSS
    +NODAMAGETHRUST
    +SEEKERMISSILE
    +NOEXTREMEDEATH
    DamageType "Electric"
    RenderStyle Add
    States
    {
    Spawn:
	THUN ABC 3 Bright
	Loop
    Death:
	TNT1 A 0 A_SpawnItemEx("LightningSphereExplode1",-24,0,0,0,0,0,0,32,0)
	TNT1 A 0 A_PlaySound("lightningsphere/explode", CHAN_AUTO, 1.0, 0)
	Stop
    }
}

ACTOR LightningSphereExplode1
{
    +NOGRAVITY
    +NODAMAGETHRUST
    +ACTIVATEIMPACT
    +DONTSPLASH
//    +FOILINVUL
    RenderStyle Add
    DamageType "Electric"
    Scale 0.4
    States
    {
    Spawn:
	LSP1 A 0
	LSP1 A 1 Bright A_Explode(random(20,28),48,0)
	LSP1 A 0 Bright A_SpawnItemEx("LightningSphereExplode2",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode2 : LightningSphereExplode1
{
    Scale 0.48
    States
    {
    Spawn:
	LSP1 B 0
	LSP1 B 1 Bright A_Explode(random(20,28),56,0)
	LSP1 B 0 Bright A_SpawnItemEx("LightningSphereExplode3",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode3 : LightningSphereExplode1
{
    Scale 0.56
    States
    {
    Spawn:
	LSP1 C 0
	LSP1 C 1 Bright A_Explode(random(20,28),64,0)
	LSP1 C 0 Bright A_SpawnItemEx("LightningSphereExplode4",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode4 : LightningSphereExplode1
{
    Scale 0.64
    States
    {
    Spawn:
	LSP1 D 0
	LSP1 D 1 Bright A_Explode(random(20,28),72,0)
	LSP1 D 0 Bright A_SpawnItemEx("LightningSphereExplode5",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode5 : LightningSphereExplode1
{
    Scale 0.72
    States
    {
    Spawn:
	LSP1 E 0
	LSP1 E 1 Bright A_Explode(random(20,28),80,0)
	LSP1 E 0 Bright A_SpawnItemEx("LightningSphereExplode6",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode6 : LightningSphereExplode1
{
    Scale 0.8
    States
    {
    Spawn:
	LSP1 F 0
	LSP1 F 1 Bright A_Explode(random(20,28),88,0)
	LSP1 F 0 Bright A_SpawnItemEx("LightningSphereExplode7",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode7 : LightningSphereExplode1
{
    Scale 0.88
    States
    {
    Spawn:
	LSP1 G 0
	LSP1 G 1 Bright A_Explode(random(20,28),96,0)
	LSP1 G 0 Bright A_SpawnItemEx("LightningSphereExplode8",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode8 : LightningSphereExplode1
{
    Scale 0.96
    States
    {
    Spawn:
	LSP1 H 0
	LSP1 H 1 Bright A_Explode(random(20,28),104,0)
	LSP1 H 0 Bright A_SpawnItemEx("LightningSphereExplode9",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode9 : LightningSphereExplode1
{
    Scale 1.04
    States
    {
    Spawn:
	LSP1 I 0
	LSP1 I 1 Bright A_Explode(random(20,28),112,0)
	LSP1 I 0 Bright A_SpawnItemEx("LightningSphereExplode10",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode10 : LightningSphereExplode1
{
    Scale 1.12
    States
    {
    Spawn:
	LSP1 J 0
	LSP1 J 1 Bright A_Explode(random(20,28),120,0)
	LSP1 J 0 Bright A_SpawnItemEx("LightningSphereExplode11",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode11 : LightningSphereExplode1
{
    Scale 1.2
    States
    {
    Spawn:
	LSP1 K 0
	LSP1 K 1 Bright A_Explode(random(20,28),128,0)
	LSP1 K 0 Bright A_SpawnItemEx("LightningSphereExplode12",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode12 : LightningSphereExplode1
{
    Alpha 0.96
    Scale 1.28
    States
    {
    Spawn:
	LSP1 L 0
	LSP1 L 1 Bright A_Explode(random(20,28),136,0)
	LSP1 L 0 Bright A_SpawnItemEx("LightningSphereExplode13",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode13 : LightningSphereExplode1
{
    Alpha 0.92
    Scale 1.36
    States
    {
    Spawn:
	LSP1 M 0
	LSP1 M 1 Bright A_Explode(random(20,28),144,0)
	LSP1 M 0 Bright A_SpawnItemEx("LightningSphereExplode14",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode14 : LightningSphereExplode1
{
    Alpha 0.88
    Scale 1.44
    States
    {
    Spawn:
	LSP1 N 0
	LSP1 N 1 Bright A_Explode(random(20,28),152,0)
	LSP1 N 0 Bright A_SpawnItemEx("LightningSphereExplode15",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode15 : LightningSphereExplode1
{
    Alpha 0.80
    Scale 1.52
    States
    {
    Spawn:
	LSP1 O 0
	LSP1 O 1 Bright A_Explode(random(20,28),160,0)
	LSP1 O 0 Bright A_SpawnItemEx("LightningSphereExplode16",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode16 : LightningSphereExplode1
{
   Alpha 0.76
    Scale 1.60
    States
    {
    Spawn:
	LSP1 P 0
	LSP1 P 1 Bright A_Explode(random(20,28),168,0)
	LSP1 P 0 Bright A_SpawnItemEx("LightningSphereExplode17",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode17 : LightningSphereExplode1
{
    Alpha 0.72
    Scale 1.68
    States
    {
    Spawn:
	LSP1 Q 0
	LSP1 Q 1 Bright A_Explode(random(20,28),176,0)
	LSP1 Q 0 Bright A_SpawnItemEx("LightningSphereExplode18",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode18 : LightningSphereExplode1
{
    Alpha 0.68
    Scale 1.76
    States
    {
    Spawn:
	LSP1 R 0
	LSP1 R 1 Bright A_Explode(random(20,28),184,0)
	LSP1 R 0 Bright A_SpawnItemEx("LightningSphereExplode19",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode19 : LightningSphereExplode1
{
    Alpha 0.64
    Scale 1.84
    States
    {
    Spawn:
	LSP1 S 0
	LSP1 S 1 Bright A_Explode(random(20,28),192,0)
	LSP1 S 0 Bright A_SpawnItemEx("LightningSphereExplode20",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode20 : LightningSphereExplode1
{
    Alpha 0.60
    Scale 1.92
    States
    {
    Spawn:
	LSP1 T 0
	LSP1 T 1 Bright A_Explode(random(20,28),200,0)
	LSP1 T 0 Bright A_SpawnItemEx("LightningSphereExplode21",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode21 : LightningSphereExplode1
{
    Alpha 0.56
    Scale 2
    States
    {
    Spawn:
	LSP1 U 0
	LSP1 U 1 Bright A_Explode(random(20,28),208,0)
	LSP1 U 0 Bright A_SpawnItemEx("LightningSphereExplode22",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode22 : LightningSphereExplode1
{
    Alpha 0.52
    Scale 2.08
    States
    {
    Spawn:
	LSP1 V 0
	LSP1 V 1 Bright A_Explode(random(20,28),216,0)
	LSP1 V 0 Bright A_SpawnItemEx("LightningSphereExplode23",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode23 : LightningSphereExplode1
{
    Alpha 0.48
    Scale 2.16
    States
    {
    Spawn:
	LSP1 W 0
	LSP1 W 1 Bright A_Explode(random(20,28),224,0)
	LSP1 W 0 Bright A_SpawnItemEx("LightningSphereExplode24",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode24 : LightningSphereExplode1
{
    Alpha 0.40
    Scale 2.24
    States
    {
    Spawn:
	LSP1 X 0
	LSP1 X 1 Bright A_Explode(random(20,28),232,0)
	LSP1 X 0 Bright A_SpawnItemEx("LightningSphereExplode25",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode25 : LightningSphereExplode1
{
    Alpha 0.36
    Scale 2.32
    States
    {
    Spawn:
	LSP1 Y 0
	LSP1 Y 1 Bright A_Explode(random(20,28),240,0)
	LSP1 Y 0 Bright A_SpawnItemEx("LightningSphereExplode26",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode26 : LightningSphereExplode1
{
    Alpha 0.32
    Scale 2.4
    States
    {
    Spawn:
	LSP1 Z 0
	LSP1 Z 1 Bright A_Explode(random(20,28),248,0)
	LSP1 Z 0 Bright A_SpawnItemEx("LightningSphereExplode27",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode27 : LightningSphereExplode1
{
    Alpha 0.28
    Scale 2.48
    States
    {
    Spawn:
	LSP2 A 0
	LSP2 A 1 Bright A_Explode(random(20,28),256,0)
	LSP2 A 0 Bright A_SpawnItemEx("LightningSphereExplode28",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode28 : LightningSphereExplode1
{
    Alpha 0.24
    Scale 2.56
    States
    {
    Spawn:
	LSP2 B 0
	LSP2 B 1 Bright A_Explode(random(20,28),264,0)
	LSP2 B 0 Bright A_SpawnItemEx("LightningSphereExplode29",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode29 : LightningSphereExplode1
{
    Alpha 0.20
    Scale 2.64
    States
    {
    Spawn:
	LSP2 C 0
	LSP2 C 1 Bright A_Explode(random(20,28),272,0)
	LSP2 C 0 Bright A_SpawnItemEx("LightningSphereExplode30",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode30 : LightningSphereExplode1
{
    Alpha 0.16
    Scale 2.72
    States
    {
    Spawn:
	LSP2 D 0
	LSP2 D 1 Bright A_Explode(random(20,28),280,0)
	LSP2 D 0 Bright A_SpawnItemEx("LightningSphereExplode31",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode31 : LightningSphereExplode1
{
    Alpha 0.12
    Scale 2.8
    States
    {
    Spawn:
	LSP2 E 0
	LSP2 E 1 Bright A_Explode(random(20,28),288,0)
	LSP2 E 0 Bright A_SpawnItemEx("LightningSphereExplode32",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode32 : LightningSphereExplode1
{
    Alpha 0.08
    Scale 2.88
    States
    {
    Spawn:
	LSP2 F 0
	LSP2 F 1 Bright A_Explode(random(20,28),296,0)
	LSP2 F 0 Bright A_SpawnItemEx("LightningSphereExplode33",0,0,0,0,0,0,0,1056,0)
	Stop
    }
}

ACTOR LightningSphereExplode33 : LightningSphereExplode1
{
    Alpha 0.04
    Scale 2.96
    States
    {
    Spawn:
	LSP2 G 0
	LSP2 G 1 Bright A_Explode(random(20,28),304,0)
	Stop
    }
}

ACTOR LightningBolt1 : SpectralLightningV1 replaces SpectralLightningV1
{
    Speed 28
    DamageType "Player"
    +NODAMAGETHRUST
    +NOEXTREMEDEATH
    +PAINLESS
    +DONTREFLECT
    +DONTSPLASH
    +FORCERADIUSDMG
    Scale 0.65
    RenderStyle Add
    DeathSound "weapons/sigilhit"
    States
    {
    Death:
	TNT1 A 0 A_Explode(40,225,0)
	TNT1 A 100
	Stop
    }
}

ACTOR LightningBolt2 : SpectralLightningV2 replaces SpectralLightningV2
{
    Speed 28
    DamageType "Player"
    +NODAMAGETHRUST
    +NOEXTREMEDEATH
    +PAINLESS
    +DONTREFLECT
    +DONTSPLASH
    +FORCERADIUSDMG
    Scale 0.65
    RenderStyle Add
    DeathSound "weapons/sigilhit"
    States
    {
    Death:
	TNT1 A 0 A_Explode(40,225,0)
	TNT1 A 100
	Stop
    }
}

ACTOR LightningBoltSpot : SpectralLightningSpot replaces SpectralLightningSpot
{
    Gravity 5.0
    Speed 10
    Radius 2
    Height 2
    ReactionTime 80
    RenderStyle Add
    +PUFFONACTORS
    +ALWAYSPUFF
    +SEEKERMISSILE
    +FLOORHUGGER
    +RIPPER
    +BLOODLESSIMPACT
    +DONTSPLASH
    States
    {
    Spawn:
	ZAP5 A 4 Bright A_Countdown
	ZAP5 B 4 Bright A_SpectralLightning
	ZAP5 CD 4 Bright A_Countdown
	Loop
    }
}

ACTOR LightningSeekerOrb
{
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    +DONTREFLECT
    Radius 12
    Height 12
    Speed 12
    Damage 45
    DeathSound "weapons/arcofdeath/seeker/explode"
    RenderStyle Add
    Scale 0.6
    Alpha 0.8
    States
    {
    Spawn:
	TNT1 A 0
	ZAP7 AAAA 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 B 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 B 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 B 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 B 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 C 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 C 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 C 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 C 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 D 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 D 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 D 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 D 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 E 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 E 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 E 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 E 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 A 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 A 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 A 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	TNT1 A 0 A_CustomMissile("OrbTracker",0,0,0,6)
	ZAP7 A 1 Bright A_SpawnItemEx("SeekerOrbTrail",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),0,32,0)
	Goto Spawn+5
    Death:
	TNT1 A 0 Bright A_Explode(256,420,0)
	TNT1 AAAAAAAAAA 0 A_SpawnItemEx("SeekerOrbFX1",0,0,0,frandom(-2,2),frandom(-2,2),frandom(-2,2),0,32,0)
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("SeekerOrbFX2",0,0,0,frandom(-3,3),frandom(-3,3),frandom(-3,3),0,32,0)
	TNT1 A 200
	Stop
    }
}

ACTOR SeekerOrbTrail
{
    Radius 5
    Height 8
    Scale 0.6
    RenderStyle Add
    Alpha 0.6
    +NOINTERACTION
    States
    {
    Spawn:
	ZAP7 ABCDE 4 Bright A_FadeOut
	Loop
    }
}

ACTOR OrbTracker
{
    PROJECTILE
    -ACTIVATEPCROSS
    +NOINTERACTION
    +NOEXTREMEDEATH
    BounceType "Doom"
    Radius 6
    Height 8
    Speed 0
    Damage 0
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("OrbAttacker",0,0,0,0,0,0,0,32,0)
	TNT1 A 1
	Stop
    }
}

ACTOR OrbAttacker
{
    Health 100000000
    PROJECTILE
    -ACTIVATEPCROSS
    +FRIENDLY
    +LOOKALLAROUND
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTARGET
    +NOINTERACTION
//    +FOILINVUL
    +NODAMAGETHRUST
    +BLOODLESSIMPACT
    Radius 1
    Height 1
    Speed 0
    MinMissileChance 0
    RenderStyle None
    ReactionTime 3
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_CountDown
	TNT1 A 1 A_LookEx(2,0,300,0,360,"See")
	Loop
    See:
	TNT1 A 0 A_Chase
    Missile:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomRailgun(random(25,35),0,none,"LightSkyBlue1",11,1,5,"ElectricRailPuff")
	TNT1 A 1
	Goto Death
    Death:
	TNT1 A 140
	Stop
    }
}

ACTOR SeekerOrbFX1 : SeekerOrbTrail
{
    Alpha 0.8
}

ACTOR SeekerOrbFX2 : SeekerOrbFX1
{
    Scale 0.4
}

ACTOR ElectricRailPuff
{
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    +PUFFONACTORS
    +ALWAYSPUFF
    DamageType "Meteor"
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 AAAA 0 A_SpawnItemEx("ElectricRailFX",0,0,0,frandom(-3,3),frandom(-3,3),frandom(0,3),frandom(0,360),32,64)
	Stop
    }
}

ACTOR ElectricRailFX : SeekerOrbTrail
{
    PROJECTILE
    +RIPPER
    +BLOODLESSIMPACT
    +PAINLESS
    -ACTIVATEPCROSS
    -NOGRAVITY
    -NOINTERACTION
    Gravity 0.5
    Alpha 1.0
    Scale 0.03
    States
    {
    Spawn:
	ZAP7 ABCDE 4 Bright A_FadeOut(0.08)
	Loop
    }
}

//----------------------------------------------------------

// Normal

ACTOR KingLoricsHeart : MageWeapon 7016
{
    Tag "King Loric's Heart"
    SpawnID 151
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 2 // 2 with RoW, 4 without
    Weapon.SisterWeapon "KingLoricsHeartPowered"
    Scale 0.9
    Inventory.PickupMessage "King Loric's Heart"
    States
    {
    Spawn:
	WHRT ABCDABCDABCDABCDABC 4 Bright
	WHRT D 4 Bright A_PlaySound("weapons/heart/beat", CHAN_ITEM, 0.2, 0)
	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.2, 0)
	Loop
    Deselect:
	LORC A 1 A_Lower
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 AA 0 A_Lower
	Loop
    Select:
	LORC A 1 A_Raise
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	LORC BCD 3
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	LORC E 0 Bright A_JumpIfInventory("BeatCheck",75,15)
	LORC E 0 Bright A_GiveInventory("BeatCheck",8)
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),1,frandom(8,12),frandom(5,7))
	LORC EEM 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC M 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC EMM 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
	LORC L 0 Bright A_TakeInventory("BeatCheck",75)
	LORC L 0 Bright A_PlaySound("weapons/heart/beat", CHAN_AUTO, 0.2, 0)
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0) // MageStafFfire
	LORC L 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),1,frandom(8,12),frandom(5,7))
	LORC LNN 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC L 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC LNN 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
    HoldHalfMana:
	LORC E 0 Bright A_JumpIfInventory("BeatCheck",75,20)
	LORC E 0 Bright A_GiveInventory("BeatCheck",8)
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	LORC E 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	LORC E 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),1,frandom(8,12),frandom(5,7))
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	LORC EMM 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC EMM 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
	LORC L 0 Bright A_TakeInventory("BeatCheck",75)
	LORC L 0 Bright A_PlaySound("weapons/heart/beat", CHAN_AUTO, 0.2, 0)
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0) // MageStafFfire
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	LORC L 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	LORC L 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),1,frandom(8,12),frandom(5,7))
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	LORC LNN 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC L 1 Bright A_FireCustomMissile("BoneShard",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC LNN 1 Bright A_FireCustomMissile("BoneShardNoPain",frandom(-4,4),0,frandom(8,12),frandom(5,7))
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
    AltFire:
	LORC B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	LORC B 0 A_JumpIfInventory("GreenMana",4,4)
	LORC B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	LORC B 0 A_JumpIfInventory("GreenMana",2,2)
	LORC B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	LORC BCD 3
    AltHold:
	LORC E 2 Bright
	LORC M 2 Bright A_PlaySound("weapons/heart/powered/fire", CHAN_WEAPON, 0.6, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	LORC F 4 Bright A_FireCustomMissile("LoricSkull",0,1,0,4)
	LORC G 3
	LORC A 4
	Goto Ready
    }
}

// Powered

ACTOR KingLoricsHeartPowered : KingLoricsHeart
{
    Tag "King Loric's Heart"
    Weapon.AmmoType1 "GreenMana"
    Weapon.AmmoType2 "GreenMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 4 // 4 with RoW, 8 without
    Weapon.SisterWeapon "KingLoricsHeart"
    +POWERED_UP
    Scale 0.9
    Inventory.PickupMessage "King Loric's Heart"
    States
    {
    Spawn:
	WHRT ABCDABCDABCDABCDABC 4 Bright
	WHRT D 4 Bright A_PlaySound("weapons/heart/beat", CHAN_ITEM, 0.2, 0)
	Loop
    Deselect:
	LORC A 1 A_Lower
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 AA 0 A_Lower
	Loop
    Select:
	LORC A 1 A_Raise
	LORC A 0 A_TakeInventory("BeatCheck",75)
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	LORC BCD 3
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	LORC E 0 Bright A_JumpIfInventory("BeatCheck",75,13)
	LORC E 0 Bright A_GiveInventory("BeatCheck",4)
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC E 2 Bright A_RailAttack(0,8,1,none,"00 00 00",11,3)
	LORC M 2 Bright
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC E 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC M 2 Bright
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
	LORC L 0 Bright A_TakeInventory("BeatCheck",75)
	LORC L 0 Bright A_PlaySound("weapons/heart/beat", CHAN_AUTO, 0.2, 0)
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC L 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC L 2 Bright A_RailAttack(0,8,1,none,"00 00 00",11,3)
	LORC N 2 Bright
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC L 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC L 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC N 2 Bright
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
    HoldHalfMana:
	LORC E 0 Bright A_JumpIfInventory("BeatCheck",75,20)
	LORC E 0 Bright A_GiveInventory("BeatCheck",4)
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,6)
	LORC E 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC E 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC M 2 Bright
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,5)
	LORC E 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC E 2 Bright A_RailAttack(0,8,1,none,"00 00 00",11,3)
	LORC M 2 Bright
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	LORC E 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC E 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC E 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC M 2 Bright
	LORC E 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
	LORC L 0 Bright A_TakeInventory("BeatCheck",75)
	LORC L 0 Bright A_PlaySound("weapons/heart/beat", CHAN_AUTO, 0.2, 0)
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,6)
	LORC L 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC L 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC N 2 Bright
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,5)
	LORC L 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC L 2 Bright A_RailAttack(0,8,1,none,"00 00 00",11,3)
	LORC N 2 Bright
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	LORC L 0 Bright A_PlaySound("weapons/heart/fire", CHAN_WEAPON, 0.7, 0)
	LORC L 0 Bright A_RailAttack(random(80,100),8,0,none,"red",11,3,"BoneRailPuff")
	LORC L 2 Bright A_RailAttack(0,8,0,none,"00 00 00",11,3)
	LORC N 2 Bright
	LORC L 1 Bright A_ReFire
	LORC FG 3
	Goto Ready
    AltFire:
	LORC B 0 A_JumpIfInventory("PowerHalfMana",1,3)
	LORC B 0 A_JumpIfInventory("GreenMana",8,4)
	LORC B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	LORC B 0 A_JumpIfInventory("GreenMana",4,2)
	LORC B 0 A_SelectWeapon("Sickle")
	Goto Deselect
	LORC BCD 3
    AltHold:
	LORC E 2 Bright
	LORC M 2 Bright A_PlaySound("weapons/heart/powered/fire", CHAN_WEAPON, 0.6, 0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	LORC F 4 A_FireCustomMissile("BoneSpirit",0,1,0,4)
	LORC G 3
	LORC A 4
	Goto Ready
    }
}

// Extra

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

ACTOR BoneShard : FastProjectile
{
    Radius 3
    Height 3
    Speed 50
    Damage (random(8,12))
    XScale 0.65
    YScale 0.3
    PROJECTILE
    -ACTIVATEPCROSS
    +NODAMAGETHRUST
    States
    {
    Spawn:
	TNT1 A 0
	BNSH A 0 A_Jump(127,3)
	BNSH A 0 ThrustThingZ(0,frandom(0,8),0,1)
	BNSH A 0 A_Jump(256,2)
	BNSH A 0 ThrustThingZ(0,frandom(0,8),1,1)
	BNSH A 4
	Goto Spawn+5
    Death:
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("BoneShardParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,360),0)
	TNT1 A 0 A_PlaySound("weapons/heart/boneshard/miss")
	TNT1 A 0 A_Explode(random(12,18),8,0)
	Stop
    XDeath:
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("BoneShardParticle",0,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,360),0)
	TNT1 A 0 A_PlaySound("weapons/heart/boneshard/hit")
	TNT1 A 0 A_Explode(random(12,18),8,0)
	Stop
    }
}

ACTOR BoneShardNoPain : BoneShard
{
    +PAINLESS
}

ACTOR BoneShardParticle
{
    Radius 1
    Height 1
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.7
    Scale 0.065
    States
    {
    Spawn:
	BNPT A 4 Bright A_FadeOut(0.09)
	Loop
    }
}

ACTOR LoricSkull : FastProjectile
{
    Height 5
    Radius 5
    Speed 42
    Damage 10
    PROJECTILE
    -ACTIVATEPCROSS
    Scale 0.3
    RenderStyle Add
    States
    {
    Spawn:
	SKLL A 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL A 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL A 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL A 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL A 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL A 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL E 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL D 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL C 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 0 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	SKLL B 1 Bright A_CustomMissile("LoricSkullTrail",0+random(10,-10),0+random(10,-10),random(15,-15),0)
	Loop
    Death:
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("LoricShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-25,25))
	TNT1 A 0 A_SpawnItemEx("LoricSkullExplode",0,0,0,0,0,0,0,32,0)
    	TNT1 A 0 A_Explode(64,96,0)
	Stop
    }
}

ACTOR LoricSkullTrail
{
    Mass 1
    Radius 8
    Height 6
    Speed 3
    Scale 0.6
    Alpha 0.3
    Damage 0
    RenderStyle Add
    PROJECTILE
    -ACTIVATEPCROSS
    States
    {
    Spawn:
	TNT1 A 0
        BNFX BCDEFGHIJKLMOPQ 2 Bright
        Stop
    }
}

ACTOR LoricSkullExplode
{
    +NOINTERACTION
    Scale 0.75
    RenderStyle Add
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound("weapons/heart/skull/hit", CHAN_AUTO, 1.0, 0)
	BNFX RSTUVW 2 Bright A_FadeOut(0.08)
	Wait
    }
}

ACTOR LoricShard : BoneShard
{
    Radius 3
    Height 3
    Speed 30
    Damage 4
    DamageType "Loric"
    XScale 0.85
    YScale 0.4
}

ACTOR BoneRailPuff
{
    +BLOODLESSIMPACT
    +NODAMAGETHRUST
    +PUFFONACTORS
    +ALWAYSPUFF
    +NOEXTREMEDEATH
    +NOINTERACTION
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 AAAAAAAAAA 0 A_SpawnItemEx("BoneShardParticle",-2,0,0,frandom(1,-1),frandom(1,-1),frandom(1,-1),frandom(0,360),0)
	Stop
    }
}

ACTOR BoneSpirit
{
    Radius 11
    Height 8
    Speed 22
    Damage 40
    DamageType Fire
    PROJECTILE
    -ACTIVATEPCROSS
    +NOEXTREMEDEATH
    +SEEKERMISSILE
    Scale 0.5
    States
    {
    Spawn:
	TNT1 A 0
	OKFX A 0 Bright A_PlaySound("ironlich/attack1", CHAN_AUTO, 1.0, 1)
	OKFX A 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX A 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX A 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX A 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX A 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX A 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX B 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX B 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX B 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX B 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX B 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
 	OKFX B 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX C 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX C 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX C 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
	OKFX C 1 Bright A_SeekerMissile(4,6,3,50,2)
	OKFX C 0 Bright A_SpawnItemEx("BoneSpiritTrail",0,0,4,frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(-1.5,1.5),frandom(0,360),32,0)
 	OKFX C 1 Bright A_SeekerMissile(4,6,3,50,2)
	Loop
    Death:
	
	TNT1 A 0 A_PlaySound("weapons/heart/bonespirit/hit", CHAN_AUTO, 1.0, 0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("BoneSpiritShard",frandom(-8,8),frandom(-8,8),frandom(0,360),6,frandom(-25,25))
	TNT1 A 0 A_SpawnItemEx("BoneSpiritExplode",0,0,0,0,0,0,0,32,0)
	TNT1 A 0 A_Explode(225,192,0)
	TNT1 A 35
	Stop
    }
}

ACTOR BoneSpiritShard : LoricShard
{
    +RIPPER
    +NOBOSSRIP
    +NODAMAGETHRUST
    DamageType "Loric"
    Damage 3
}

ACTOR BoneSpiritTrail
{
    Radius 10
    Height 6
    Speed 0
    Scale 0.5
    +NOINTERACTION
    RenderStyle Add
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 1
	OKFX JKLMN 5 A_FadeOut
	Stop
    }
}

ACTOR BoneSpiritExplode
{
    +NOINTERACTION
    Scale 0.75
    RenderStyle Add
    States
    {
    Spawn:
	TNT1 A 0
	OKFX DEFGHI 3 Bright
	Stop
    }
}

//----------------------------------------------------------

//--- Slot 4 ---//

// Normal

ACTOR BloodscourgePiece1 : MWeaponPiece1 replaces MWeaponPiece1
{
    WeaponPiece.Weapon Bloodscourge
    Inventory.PickupSound "PickupPiece"
}

ACTOR BloodscourgePiece2 : MWeaponPiece2 replaces MWeaponPiece2
{
    WeaponPiece.Weapon Bloodscourge
    Inventory.PickupSound "PickupPiece"
}

ACTOR BloodscourgePiece3 : MWeaponPiece3 replaces MWeaponPiece3
{
    WeaponPiece.Weapon Bloodscourge
    Inventory.PickupSound "PickupPiece"
}

ACTOR Bloodscourge : MWeapBloodscourge replaces MWeapBloodscourge
{
    Tag "Bloodscourge"
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 8 // 8 with RoW, 16 without
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.KickBack 150
    Weapon.YAdjust 15
    -WEAPON.PRIMARY_USES_BOTH
    Weapon.SisterWeapon "BloodscourgePowered"
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Inventory.PickupMessage "Bloodscourge Assembled"
    Inventory.PickupSound "4thweapon/pickup"
    States
    {
    Select:
	MSTF A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	MSTF A 0 A_StopSound(CHAN_WEAPON)
	MSTF A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Ready:
	MSTF AAAAAABBBBBBCCCCCCDDDDDDEEEEEEFFFFFF 1 A_WeaponReady
	Loop
    Fire:
	MSTF G 4 Offset (0, 40)
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	MSTF H 0 Bright A_PlaySound("weapons/bloodscourge/fire", CHAN_WEAPON, 1.0, 1)
	MSTF H 2 Bright Offset (0, 48) A_FireCustomMissile("BloodscourgeFlame",frandom(-3,3),1,0,4)
	MSTF HHHHH 2 Bright Offset (0, 48) A_FireCustomMissile("BloodscourgeFlame",frandom(-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
    HoldHalfMana:
	MSTF H 0 Bright A_PlaySound("weapons/bloodscourge/fire", CHAN_WEAPON, 1.0, 1)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	MSTF H 2 Bright Offset (0, 48) A_FireCustomMissile("BloodscourgeFlame",frandom(-3,3),0,0,4)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	MSTF H 2 Bright Offset (0, 48) A_FireCustomMissile("BloodscourgeFlame",frandom(-3,3),1,0,4)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	MSTF HHHHH 2 Bright Offset (0, 48) A_FireCustomMissile("BloodscourgeFlame",frandom(-3,3),0,0,4)
	MSTF I 0 Offset (0, 48) A_ReFire("Hold")
	MSTF I 4 Offset (0, 48) A_StopSound(CHAN_WEAPON)
	MSTF I 1 Offset (0, 40)
	MSTF J 5 Offset (0, 36)
	Goto Ready
    AltFire:
	MSTF G 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MSTF G 0 A_JumpIfInventory("GoldMana",16,4)
	MSTF G 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MSTF G 0 A_JumpIfInventory("GoldMana",8,2)
	MSTF G 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MSTF G 4 Offset (0, 40)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MSTF H 4 Bright Offset (0, 48) A_MStaffAttack
	MSTF H 2 Bright Offset (0, 48) A_MStaffPalette
	MSTF II 2 Offset (0, 48) A_MStaffPalette
	MSTF I 1 Offset (0, 40)
	MSTF J 5 Offset (0, 36)
	Goto Ready
    }
}

// Powered

ACTOR BloodscourgePowered : MWeapBloodscourge // Bloodscourge
{
    Tag "Bloodscourge"
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 14 // 14 with RoW, 28 without
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.KickBack 150
    -WEAPON.PRIMARY_USES_BOTH
    +POWERED_UP
    Weapon.SisterWeapon "Bloodscourge"
    Weapon.AmmoType1 "GoldMana"
    Weapon.AmmoType2 "GoldMana"
    Inventory.PickupMessage "Bloodscourge Assembled"
    States
    {
    Select:
	MSTF A 1 A_Raise
	TNT1 A 0 A_Raise
	Loop
    Deselect:
	MSTF A 0 A_StopSound(CHAN_WEAPON)
	MSTF A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
    Fire:
	MSTF G 4 Offset (0, 40)
    Hold:
	MSTF H 0 Bright A_PlaySound("weapons/bloodscourge/fire", CHAN_WEAPON, 1.0, 1)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_Jump(256,6)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	MSTF H 0 Bright Offset (0, 48) A_FireCustomMissile("AmmoUser",0,0,0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	MSTF H 0 Bright Offset (0, 48) A_FireCustomMissile("AmmoUser",0,1,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,0,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,0,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",0,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",0,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",55,55,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",55,-55,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-55,55,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-55,-55,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",70,30,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-70,30,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",70,-30,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-70,-30,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",30,70,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-30,70,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",30,-70,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-30,-70,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,4,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,-4,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",4,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-4,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",69,34,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-69,-34,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-34,69,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",34,-69,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",53,58,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-53,-58,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",58,-53,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-58,53,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",27,72,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-27,-72,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",72,-27,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-72,27,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,8,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,-8,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",8,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-8,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",67,37,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-67,-37,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-37,67,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",37,-67,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",50,60,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-50,-60,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",60,-50,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-60,50,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",23,73,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-23,-73,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",73,-23,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-73,23,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,12,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,-12,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",12,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-12,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",65,41,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-65,-41,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-41,65,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",41,-65,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",47,62,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-47,-62,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",62,-47,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-62,47,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",20,74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-20,-74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",74,-20,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-74,20,32,0,0,0,0,32,0)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_Jump(256,6)
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,4)
	MSTF H 0 Bright Offset (0, 48) A_FireCustomMissile("AmmoUser",0,0,0)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,3)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	MSTF H 0 Bright Offset (0, 48) A_FireCustomMissile("AmmoUser",0,1,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",74,16,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-74,16,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",74,-16,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-74,-16,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",16,74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-16,74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",16,-74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-16,-74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",44,63,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-44,63,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",44,-63,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-44,-63,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",63,44,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-63,44,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",63,-44,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-63,-44,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",74,20,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-74,-20,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",20,-74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-20,74,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",62,47,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-62,-47,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-47,62,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",47,-62,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",41,65,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-41,-65,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",65,-41,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-65,41,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",12,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-12,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,-12,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,12,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",8,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-8,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,-8,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,8,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",37,67,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-37,-67,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-67,37,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",67,-37,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",60,50,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-60,-50,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",50,-60,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-50,60,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",73,23,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-73,-23,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",23,-73,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-23,73,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",4,75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-4,-75,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",75,-4,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-75,4,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",34,69,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-34,-69,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-69,34,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",69,-34,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",58,53,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-58,-53,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",53,-58,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-53,58,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",72,27,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-72,-27,32,0,0,0,0,32,0)
	MSTF H 0 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",27,-72,32,0,0,0,0,32,0)
	MSTF H 1 Bright Offset (0, 48) A_SpawnItemEx("BloodscourgeFireShield",-27,72,32,0,0,0,0,32,0)
	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
    AltFire:
	MSTF G 0 A_JumpIfInventory("PowerHalfMana",1,3)
	MSTF G 0 A_JumpIfInventory("GoldMana",28,4)
	MSTF G 0 A_SelectWeapon("Sickle")
	Goto Deselect
	MSTF G 0 A_JumpIfInventory("GoldMana",14,2)
	MSTF G 0 A_SelectWeapon("Sickle")
	MSTF G 4 Offset (0, 40)
	MSTF H 0 Bright Offset (0, 48) A_PlaySound("MageStaffFire", CHAN_WEAPON, 1.0, 0)
	MSTF H 0 Bright Offset (0, 48) A_SetBlend("OrangeRed",0.7,10)
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 A_FireCustomMissile("AmmoUser",0,1,0)
	MSTF H 4 Bright Offset (0, 48) A_FireCustomMissile("StaffFire2",0,1,0,0)
	MSTF H 2 Bright Offset (0, 48)
	MSTF II 2 Offset (0, 48)
	MSTF I 1 Offset (0, 40)
	MSTF J 5 Offset (0, 36)
	MSTF EF 6 Offset (0, 32)
	Goto Ready
    }
}

// Extra

ACTOR BloodscourgeShot : MageStaffFX2 replaces MageStaffFX2
{
    +FORCERADIUSDMG
//    +FOILINVUL
    +DONTSPLASH
    DamageType "Bloodscourge"
    Radius 8
    Damage 9
    FastSpeed 22
    States
    {
    Spawn:
	MSP2 A 0 Bright A_MStaffTrack
	MSP2 A 1 Bright A_Explode(55,40,0)
	MSP2 A 0 Bright A_MStaffTrack
	MSP2 A 1 Bright A_Explode(55,40,0)
	MSP2 B 0 Bright A_MStaffTrack
	MSP2 B 1 Bright A_Explode(55,40,0)
	MSP2 B 0 Bright A_MStaffTrack
	MSP2 B 1 Bright A_Explode(55,40,0)
	MSP2 C 0 Bright A_MStaffTrack
	MSP2 C 1 Bright A_Explode(55,40,0)
	MSP2 C 0 Bright A_MStaffTrack
	MSP2 C 1 Bright A_Explode(55,40,0)
	MSP2 D 0 Bright A_MStaffTrack
	MSP2 D 1 Bright A_Explode(55,40,0)
	MSP2 D 0 Bright A_MStaffTrack
	MSP2 D 1 Bright A_Explode(55,40,0)
	Loop
    Death:
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MageStaffFXExtra",0,0,6,random(4,-4)/(2*1.5),random(4,-4)/(2*1.5),random(4,-4)/(2*1.5),random(1,359),32)
	TNT1 A 0 A_SetTranslucent(1,1)
	MSP1 G 2 Bright A_Explode(random(210,280),192,0)
	MSP1 HIJKLMOP 2 Bright A_FadeOut(0.08)
	Stop
    }
}

ACTOR BloodscourgeFlame
{
    Radius 10
    Height 6
    Speed 18
    Damage 4
    Alpha 0.8
    Scale 0.65
    PROJECTILE
    -ACTIVATEPCROSS
    +NOBOSSRIP
    +RIPPER
    +BLOODLESSIMPACT
//    +FOILINVUL
    DamageType "Bloodscourge"
    RenderStyle Add
    States
    {
    Spawn:
	FX06 A 0
	FX06 A 0 Bright A_Jump(127,3)
	FX06 A 0 Bright ThrustThingZ(0,frandom(0,3),0,1)
	FX06 A 0 Bright A_Jump(256,2)
	FX06 A 0 Bright ThrustThingZ(0,frandom(0,3),1,1)
	FX06 ABC 2 Bright A_FadeOut
	Goto Spawn+5
    Death:
    	TNT1 A 0
    	Stop
    }
}

ACTOR BloodscourgeFireShield
{
    PROJECTILE
    -ACTIVATEPCROSS
    +RIPPER
    +FIREDAMAGE
    +NOBOSSRIP
    +NOTIMEFREEZE
    +STRIFEDAMAGE
    +NODAMAGETHRUST
    +BLOODLESSIMPACT
    RenderStyle Add
    Scale 0.75
    Alpha 0.1
    Radius 10
    Height 10
    Speed 0
    Damage 3
    DamageType "Bloodscourge"
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(128,1,3,5)
	FX06 AB 1 Bright A_SpawnItemEx("FireCurtain",0,0,0,0,0,10,0,48,0)
	Stop
	FX06 BC 1 Bright A_SpawnItemEx("FireCurtain",0,0,0,0,0,10,0,48,0)
	Stop
	FX06 CA 1 Bright A_SpawnItemEx("FireCurtain",0,0,0,0,0,10,0,48,0)
	Stop
    }
}

ACTOR FireCurtain : BloodscourgeFlame
{
    Speed 0
    Damage 2
    Alpha 0.3
    States
    {
    Spawn:
	FX06 A 0
	FX06 A 0 Bright A_Jump(127,3)
	FX06 A 0 Bright ThrustThingZ(0,frandom(0,3),0,1)
	FX06 A 0 Bright A_Jump(256,2)
	FX06 A 0 Bright ThrustThingZ(0,frandom(0,3),1,1)
	FX06 ABC 2 Bright A_FadeOut(0.025)
	Goto Spawn+5
    }
}

ACTOR StaffFire2
{
    PROJECTILE
    -ACTIVATEPCROSS
    +EXTREMEDEATH
    +RIPPER
    +NOBOSSRIP
    +FORCERADIUSDMG
    Radius 12
    Height 8
    Speed 20
    Damage 10
    DeathSound "MageStaffFire"
    DamageType "Bloodscourge"
    Scale 1.5
    States
    {
    Spawn:
	MSP1 CDEF 2 Bright
	MSP1 A 1 Bright A_CustomMissile("StaffFireSS",0,0,45,4)
	MSP1 A 1 Bright A_CustomMissile("StaffFireSS",0,0,-45,4)
	MSP1 B 1 Bright A_CustomMissile("StaffFireSS",0,0,90,4)
	MSP1 B 1 Bright A_CustomMissile("StaffFireSS",0,0,-90,4)
	MSP1 C 1 Bright A_CustomMissile("StaffFireSS",0,0,135,4)
	MSP1 C 1 Bright A_CustomMissile("StaffFireSS",0,0,-135,4)
	MSP1 D 1 Bright A_CustomMissile("StaffFireSS",0,0,180,4)
	MSP1 D 1 Bright A_CustomMissile("StaffFireSS",0,0,-180,4)
	MSP1 E 1 Bright A_CustomMissile("StaffFireSS",0,0,225,4)
	MSP1 E 1 Bright A_CustomMissile("StaffFireSS",0,0,-225,4)
	MSP1 F 1 Bright A_CustomMissile("StaffFireSS",0,0,270,4)
	MSP1 F 1 Bright A_CustomMissile("StaffFireSS",0,0,-270,4)
	MSP1 A 1 Bright A_CustomMissile("StaffFireSS",0,0,315,4)
	MSP1 A 1 Bright A_CustomMissile("StaffFireSS",0,0,-315,4)
	Goto Spawn+2
    Death:
	TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MageStaffFXExtra",0,0,6,random(4,-4)/(2*1.5),random(4,-4)/(2*1.5),random(4,-4)/(2*1.5),random(1,359),32)
	MSP1 G 2 Bright A_Explode(400,192,0)
	MSP1 HIJKLMOP 2 Bright 
	Stop
    }
}

ACTOR StaffFireSS
{
    PROJECTILE
    +EXPLODEONWATER
    +EXTREMEDEATH
    +DONTSPLASH
    +DONTREFLECT
    +FORCERADIUSDMG
    -ACTIVATEPCROSS
    -NOGRAVITY
    Gravity 0.1
    Radius 12
    Height 8
    Speed 10
    Damage 15
    SeeSound "weapons/bloodscourge/crackle"
    DeathSound "MageStaffExplode"
    DamageType "Bloodscourge"
    States
    {
    Spawn:
	MSP2 ABCD 3 Bright A_CustomMissile("ExtensionBall",0,0,20)
	Loop
    Death:
	TNT1 A 0 A_SetTranslucent(1,1)
	TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx("MageStaffFXExtra",0,0,6,random(4,-4)/(2*1.5),random(4,-4)/(2*1.5),random(6,1)/(2*1.5),random(1,359),32)
	MSP1 G 2 Bright A_Explode(160,96,0)
	MSP1 HIJKLMOP 2 Bright A_FadeOut
	Stop
    }
}

ACTOR ExtensionBall
{
    PROJECTILE
    +DONTSPLASH
    +BLOODLESSIMPACT
    +EXPLODEONWATER
    +EXTREMEDEATH
    +DONTREFLECT
    -ACTIVATEPCROSS
    -NOGRAVITY
    Radius 8
    Height 6
    Speed 0
    Damage 12
    Gravity 0.5
    DeathSound "MageStaffExplode"
    DamageType "Bloodscourge"
    RenderStyle Add
    ReactionTime 30
    States
    {
    Spawn:
	WRBL ABC 4 Bright A_CountDown
	Loop
    Death:
	TNT1 A 0 A_Explode(96,64,0)
	TNT1 A 0 A_SpawnItemEx("MageStaffFXExtra",random(4,-4),random(4,-4),random(0,4),0,0,random(10,1)/(8*1.05),0,32)
	TNT1 A 0 A_SetTranslucent(1,0)
	WRBL DDEEFFGGHHII 2 Bright A_FadeOut(0.08)
	Stop
    }
}

Actor MageStaffFXExtra
{
    +NOINTERACTION
    Scale 0.9
    RenderStyle Add
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(200,3,4,6,8)
	MSXP AAAABBBBCCCCDDDDEEEEFFFF 1 Bright A_FadeOut(0.035)
	Wait
    }
}

//==========================================================
//
// All Class Weapon
//
//==========================================================

// Normal

ACTOR StaffofDSparil : Weapon 6154
{
    Tag "Staff Of D'Sparil"
    +FLOORCLIP
    Weapon.Ammotype1 "GoldMana"
    Weapon.Ammotype2 "GoldMana"
    Weapon.AmmoGive1 25
    Weapon.AmmoGive2 0
    Weapon.MinSelectionAmmo1 4
    Weapon.MinSelectionAmmo2 6
    Weapon.AmmoUse1 2 // 2 with RoW, 4 without
    Weapon.AmmoUse2 6 // 6 with RoW, 12 without
    Weapon.SisterWeapon "StaffOfDSparilPowered"
    Obituary "%o was zapped by %k's staff."
    Inventory.PickupMessage "Staff of D'Sparil"
    Inventory.PickupSound "weaponbuild"
    Scale 0.75
    States
    {
    Spawn:
	WDSP A 5
	Loop
    Ready: 
	DSTF A 1 A_WeaponReady
	Loop
    Deselect: 
	DSTF A 1 A_Lower
	TNT1 AA 0 A_Lower
	Loop
    Select: 
	DSTF A 1 A_Raise
	TNT1 AA 0 A_Raise
	Loop
    Fire:
	DSTF D 0 A_JumpIfInventory("PowerHalfMana",1,5)
	DSTF D 0 A_JumpIfInventory("GoldMana",4,8)
	DSTF D 0 A_SelectWeapon("FGauntlets")
	DSTF D 0 A_SelectWeapon("ClericMace")
	DSTF D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	DSTF D 0 A_JumpIfInventory("GoldMana",2,4)
	DSTF D 0 A_SelectWeapon("FGauntlets")
	DSTF D 0 A_SelectWeapon("ClericMace")
	DSTF D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	DSTF BC 3 Bright
	TNT1 A 0 Bright A_GunFlash
	DSTF D 3 Bright A_PlaySound("dsparil/attack", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 Bright A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 Bright A_FireCustomMissile("AmmoUser",0,1,0)
	DSTF E 4 Bright A_FireCustomMissile("FSorcerer2FX1",0,1,0,2)
	DSTF F 10
	DSTF A 4 
	Goto Ready
    AltFire:
	DSTF D 0 A_JumpIfInventory("PowerHalfMana",1,5)
	DSTF D 0 A_JumpIfInventory("GoldMana",12,8)
	DSTF D 0 A_SelectWeapon("FGauntlets")
	DSTF D 0 A_SelectWeapon("ClericMace")
	DSTF D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	DSTF D 0 A_JumpIfInventory("GoldMana",6,4)
	DSTF D 0 A_SelectWeapon("FGauntlets")
	DSTF D 0 A_SelectWeapon("ClericMace")
	DSTF D 0 A_SelectWeapon("Sickle")
	Goto Deselect
	DSTF E 0 Bright A_JumpIfInventory("PowerHalfMana",1,2)
	DSTF E 0 Bright A_JumpIfInventory("GoldMana",12,2)
	Goto Ready
	DSTF E 0 Bright A_JumpIfInventory("GoldMana",6,1)
	Goto Ready
	DSTF BC 3 Bright
	TNT1 A 0 Bright A_GunFlash
	DSTF D 3 Bright A_PlaySound("dsparil/attack", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 Bright A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 Bright A_FireCustomMissile("AmmoUser",0,1,0)
	DSTF E 0 Bright A_FireCustomMissile("DiscipleFSummoner1",48,0,0,8)
	DSTF E 4 Bright A_FireCustomMissile("DiscipleFSummoner2",-48,1,0,8)
	DSTF F 20
	DSTF A 4
	Goto Ready
    Flash:
	TRAN A 3 A_Light1
	TRAN A 2 A_Light2
	TRAN A 1 A_Light0
	Stop
    }
}

// Powered

ACTOR StaffOfDSparilPowered : StaffOfDSparil
{
    Tag "Staff Of D'Sparil"
    +FLOORCLIP
    +POWERED_UP
    Weapon.Ammotype1 "GoldMana"
    Weapon.Ammotype2 "GoldMana"
    Weapon.AmmoGive1 0
    Weapon.AmmoGive2 0
    Weapon.MinSelectionAmmo2 10
    Weapon.AmmoUse1 1 // 0.5 with RoW, 1 without
    Weapon.AmmoUse2 5 // 10 with RoW, 5 without
    Weapon.SisterWeapon "StaffOfDSparil"
    Obituary "%o was zapped by %k's staff."
    Inventory.PickupMessage "Staff of D'Sparil"
    Inventory.PickupSound "weaponbuild"
    Scale 0.75
    States
    {
    Fire:
	DSTF A 2
	DSTF B 3
	TNT1 A 0 A_GunFlash
    Hold:
	TNT1 A 0 A_JumpIfInventory("PowerHalfMana",1,"HoldHalfMana")
	DSTF C 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF C 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,8)
	DSTF C 0 Bright A_FireCustomMissile("LightningTagger",8,0,8)
	DSTF C 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),0,8,-6)
	DSTF B 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF B 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,-8)
	DSTF B 0 Bright A_FireCustomMissile("LightningTagger",8,0,-8)
	DSTF B 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),1,-8,-6)
	DSTF B 0 Bright A_ReFire
	DSTF A 3
	Goto Ready
    HoldHalfMana:
	TNT1 A 0 A_JumpIfInventory("HalfMana2",1,11)
	DSTF C 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF C 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,8)
	DSTF C 0 Bright A_FireCustomMissile("LightningTagger",8,0,8)
	DSTF C 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),0,8,-6)
	DSTF B 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF B 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,-8)
	DSTF B 0 Bright A_FireCustomMissile("LightningTagger",8,0,-8)
	DSTF B 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),0,-8,-6)
	TNT1 A 0 A_GiveInventory("HalfMana2",1)
	TNT1 A 0 A_Jump(256,10)
	DSTF C 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF C 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,8)
	DSTF C 0 Bright A_FireCustomMissile("LightningTagger",8,0,8)
	DSTF C 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),0,8,-6)
	DSTF B 0 Bright A_PlaySound("dsparil/lightning", CHAN_WEAPON)
	DSTF B 0 Bright A_FireCustomMissile("LightningTargetMissile",8,0,-8)
	DSTF B 0 Bright A_FireCustomMissile("LightningTagger",8,0,-8)
	DSTF B 2 Bright A_FireCustomMissile("LightningMissile1",8+random(-2,2),1,-8,-6)
	TNT1 A 0 A_TakeInventory("HalfMana2",1)
	DSTF B 0 Bright A_ReFire("Hold")
	DSTF A 3
	Goto Ready
    AltFire:
	DSTF E 0 Bright A_JumpIfInventory("PowerHalfMana",1,2)
	DSTF E 0 Bright A_JumpIfInventory("GoldMana",10,2)
	Goto Ready
	DSTF E 0 Bright A_JumpIfInventory("GoldMana",5,1)
	Goto Ready
	DSTF BC 3 Bright
	TNT1 A 0 Bright A_GunFlash
	TNT1 A 0 ACS_Execute(802,0,0,0,0)
	DSTF D 3 Bright A_PlaySound("dsparil/attack", CHAN_WEAPON, 1.0, 0)
	TNT1 A 0 Bright A_JumpIfInventory("PowerHalfMana",1,2)
	TNT1 A 0 Bright A_FireCustomMissile("AmmoUser",0,1,0)
	DSTF E 4 Bright A_FireCustomMissile("SkullWizardFSummoner",0,1,0,8)
	DSTF F 35
	DSTF A 4
	Goto Ready
    Flash:
	TRAN A 3 A_Light1
	TRAN A 2 A_Light2
	TRAN A 1 A_Light0
	Stop
    }
}

// Extra

ACTOR LightningTargetMissile : FastProjectile
{
    Speed 200
    Damage 0
    PROJECTILE
    -ACTIVATEPCROSS
    +THRUACTORS
    +BLOODLESSIMPACT
    +SKYEXPLODE
    States
    {
    Spawn:
	TNT1 A 8
	Goto Death
    Death:
	TNT1 A 0 A_SpawnItemEx("LightningTarget",0,0,0,0,0,0,0,32)
	TNT1 A 1
	Stop
    }
}
ACTOR LightningTarget 
{
    Radius 3
    Height 3
    Speed 0
    Damage 0
    Health 1000000
    DamageFactor "Normal", 0
//    MONSTER
    +NOCLIP
    +NOBLOOD
    -COUNTKILL
    +NOGRAVITY
    +FLOAT
    +SPECTRAL
    +THRUACTORS
    +NORADIUSDMG
    RenderStyle None
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 Thing_ChangeTid(0,1932)
	TNT1 A 35
	Stop
    Death:
	TNT1 A 0
	Stop
    }
}

ACTOR LightningMissile1
{
    Radius 2
    Height 2
    Speed 40
    Damage 12
    DamageType "DSparil"
    PROJECTILE
    -ACTIVATEPCROSS
    +BLOODLESSIMPACT
    +EXTREMEDEATH
    +NODAMAGETHRUST
    +SEEKERMISSILE
    DeathSound "weapons/lightningend"
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 AAAAA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
//	TNT1 A 0 A_CustomMissile("LightningMissile2",0,0,frandom(-15,15),230,(momz+frandom(-15,15)))
	TNT1 A 0 A_ChangeVelocity(0,frandom(-6,6),frandom(-6,6),1)
	TNT1 AAAAA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_SeekerMissile(30,30,3,50,5)
	Loop
//	Stop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("DLightningFX",0,0,0,frandom(6,-6),frandom(6,-6),frandom(6,-6),0,0)
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(25,10,0)
	TNT1 A 1 A_Scream
	Stop
    }
}

ACTOR LightningMissile2 : LightningMissile1
{
    Damage 10
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 AAAA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_CustomMissile("LightningMissile3",0,0,frandom(-15,15),230,(momz+frandom(-15,15)))
	TNT1 AA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	Stop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("DLightningFX",0,0,0,frandom(6,-6),frandom(6,-6),frandom(6,-6),0,0)
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(15,10,0)
	TNT1 A 1 A_Scream
	Stop
    }
}

ACTOR LightningMissile3 : LightningMissile2
{
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 AAAA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_CustomMissile("LightningMissileTargetSeeker",0,0,frandom(-15,15),230,(momz+frandom(-15,15)))
	TNT1 AA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	Stop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("DLightningFX",0,0,0,frandom(6,-6),frandom(6,-6),frandom(6,-6),0,0)
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(15,10,0)
	TNT1 A 1 A_Scream
	Stop
    }
}

ACTOR LightningMissile4 : LightningMissile3
{
    +SEEKERMISSILE
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_JumpIfCloser(15,"Death")
	TNT1 AAAA 1 A_SpawnItemEx("LightningTrail",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_SeekerMissile(90,90)
	Loop
    Death:
	TNT1 AAAAAAA 0 A_SpawnItemEx("DLightningFX",0,0,0,frandom(6,-6),frandom(6,-6),frandom(6,-6),0,0)
	TNT1 A 0 A_Explode(15,10,0)
	TNT1 A 1 A_Scream
	Stop
    }
}

ACTOR LightningMissileTargetSeeker 
{  
    +FRIENDLY
    MONSTER
    -COUNTKILL
    +NOGRAVITY
    +NOCLIP
    +THRUACTORS
    +LOOKALLAROUND
    Radius 1
    Height 1
    Speed 0
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 Thing_ChangeTid(0,1933)
	TNT1 A 0 Thing_Hate(1933,1932,2)
	TNT1 A 0 A_UnSetShootable
	TNT1 A 0 A_Look
    See:
	TNT1 A 0 A_Chase
    Missile:
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("LightningMissile4",0,0)
	Stop
    }
}

ACTOR LightningTagger : FastProjectile
{
    Damage 15
    Speed 60
    Radius 3
    Height 3
    PROJECTILE
    -ACTIVATEPCROSS
    +EXTREMEDEATH
//    +FOILINVUL
    +NODAMAGETHRUST
    DamageType "DSparil"
    RenderStyle None
    States
    {
    Spawn:
	TNT1 AAAAAAAAAAAAAAAAAA 1
	Stop
    Death:
	TNT1 A 0 A_CustomMissile("LightningTrail",0,0)
	Stop
    }
}

ACTOR DLightningFX
{
    Scale 0.35
    RenderStyle Add
    +NOINTERACTION
    Alpha 1.0
    Scale 0.03
    States
    {
    Spawn:
	ZAP7 ABCDE 4 Bright A_FadeOut(0.08)
	Loop
    }
}

ACTOR DiscipleFSummoner1 : SorcFX3
{
    +NOTIMEFREEZE
    SeeSound ""
    Translation "0:255=%[0.0,0.0,0.0]:[1.2,0.0,1.2]"
    States
    {
    Death:
	SBS3 A 4 Bright
	SBS3 A 0 Bright A_SpawnItemEx("DiscipleFRise1")
	Stop
    }
}

ACTOR DiscipleFSummoner2 : DiscipleFSummoner1
{
    +NOTIMEFREEZE
    SeeSound ""
    Translation "0:255=%[0.0,0.0,0.0]:[1.2,0.0,1.2]"
    States
    {
    Death:
	SBS3 A 4 Bright
	SBS3 A 0 Bright A_SpawnItemEx("DiscipleFRise2")
	Stop
    }
}

ACTOR DiscipleFRise1
{
    +NOTIMEFREEZE
    States
    {
    Spawn:
    Death:
	TNT1 A 0
	BISH P 0 Bright A_PlaySound("SorcererBishopSpawn")
	BISH P 3 Bright A_SpawnItemEx("DiscipleSummonFX",0,0,0,0,0,0,0,32,0)
	BISH ON 3 Bright
	BISH MLKJIH 2 Bright
	BISH G 2 Bright A_SpawnItemEx("DiscipleFChecker1",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR DiscipleFRise2
{
    +NOTIMEFREEZE
    States
    {
    Spawn:
    Death:
	TNT1 A 0
	BISH P 0 Bright A_PlaySound("SorcererBishopSpawn")
	BISH P 3 Bright A_SpawnItemEx("DiscipleSummonFX",0,0,0,0,0,0,0,32,0)
	BISH ON 3 Bright
	BISH MLKJIH 2 Bright
	BISH G 2 Bright A_SpawnItemEx("DiscipleFChecker2",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR DiscipleFChecker1
{
    +NOTIMEFREEZE
    MONSTER
    +FRIENDLY
    -COUNTKILL
    Radius 18
    Height 68
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_UnSetSolid
	TNT1 A 0 A_SpawnItem("DiscipleF1")
	Stop
    }
}

ACTOR DiscipleFChecker2
{
    +NOTIMEFREEZE
    MONSTER
    +FRIENDLY
    -COUNTKILL
    Radius 18
    Height 68
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_UnSetSolid
	TNT1 A 0 A_SpawnItem("DiscipleF2")
	Stop
    }
}

ACTOR SkullWizardFSummoner : SorcFX3
{
    +NOTIMEFREEZE
    SeeSound ""
    Translation "0:255=%[0.0,0.0,0.0]:[1.0,0.25,0.2]"
    States
    {
    Spawn:
	SBS3 ABC 2 Bright
	Loop
    Death:
	SBS3 A 4 Bright
	SBS3 A 0 Bright A_SpawnItemEx("SkullWizardFRise",0,0,0,0,0,0,0,32,0)
	Stop
    }
}

ACTOR SkullWizardFRise
{
    +NOTIMEFREEZE
    Scale 1.15
    States
    {
    Spawn:
    Death:
	TNT1 A 0
	SKWZ P 0 Bright A_PlaySound("SorcererBishopSpawn")
	SKWZ P 3 Bright A_SpawnItemEx("SkullWizardSummonFX",0,0,0,0,0,0,0,32,0)
	SKWZ ON 3 Bright
	SKWZ MLKJIH 2 Bright
	SKWZ G 2 Bright A_SpawnItem("SkullWizardFChecker")
	Stop
    }
}

ACTOR SkullWizardFChecker
{
    +NOTIMEFREEZE
    MONSTER
    +FRIENDLY
    -COUNTKILL
    Radius 18
    Height 68
    States
    {
    Spawn:
	TNT1 A 0
	TNT1 A 0 A_UnSetSolid
	TNT1 A 0 A_SpawnItem("SkullWizardF")
	Stop
    }
}

//----------------------------------------------------------

// Upgraded with Serpent's Eye Gem (will replace Staff of D'Sparil once gem is picked up)

// Normal

// ACTOR UpgradedStaff

// Powered

// ACTOR UpgradedStaffPowered

//==========================================================
//
// Miscellaneous
//
//==========================================================

ACTOR LifeDrainGiver
{
    Health 10000
    Radius 10
    Height 56
    Speed 0
    +NONSHOOTABLE
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +LOOKALLAROUND
    MinMissileChance 0
    States
    {
    Spawn:
        TNT1 AA 1 A_Look
        Loop
    See:
    Missile:
	TNT1 A 0
        TNT1 A 0 A_GiveToTarget("Health",random(15,30))
        Stop
    }
}

ACTOR ManaDrainGiver
{
    Health 10000
    Radius 10
    Height 56
    Speed 0
    +NONSHOOTABLE
    +MISSILEMORE
    +MISSILEEVENMORE
    +NOTIMEFREEZE
    +LOOKALLAROUND
    MinMissileChance 0
    States
    {
    Spawn:
        TNT1 AA 1 A_Look
        Loop
    See:
    Missile:
	TNT1 A 0
        TNT1 A 0 A_GiveToTarget("BlueMana",random(5,10))
	TNT1 A 0 A_GiveToTarget("GreenMana",random(5,10))
	TNT1 A 0 A_GiveToTarget("GoldMana",random(5,10))
        Stop
    }
}

ACTOR GManaDrainGiver : ManaDrainGiver
{
    States
    {
    See:
    Missile:
	TNT1 A 0
	TNT1 A 0 A_Jump(48,2)
        TNT1 A 0 A_GiveToTarget("BlueMana",1)//random(1,2))
	TNT1 A 0 A_Jump(48,2)
	TNT1 A 0 A_GiveToTarget("GreenMana",1)//random(1,2))
	TNT1 A 0 A_Jump(48,2)
	TNT1 A 0 A_GiveToTarget("GoldMana",1)//random(1,2))
	TNT1 A 0
        Stop
    }
}

ACTOR AmmoUser
{
    PROJECTILE
    -ACTIVATEPCROSS
    Radius 0
    Height 0
    Speed 0
    RenderStyle None
    States
    {
    Spawn:
	TNT1 A 0
	Stop
    }
}

ACTOR HalfMana2 : Inventory
{
    Inventory.Amount 1
    Inventory.MaxAmount 1
}