ACTOR GWAutoShot : Weapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoGive 8
	Weapon.SlotNumber 3
	Weapon.SelectionOrder 5000
	Weapon.AmmoType "Shell"
	Inventory.PickupMessage "You picked up the Automatic Shotgun!"
	Decal "BulletChip"
	States
	{
	Ready:
		LAZZ A 1 A_WeaponReady (WRF_ALLOWRELOAD)
		Loop
	Deselect:
		LAZZ A 1 A_Lower
		Loop
	Select:
		LAZZ A 1 A_Raise
		Loop
	Fire:
		LAZZ A 3
		LAZZ A 0 A_FireBullets (10, 3, 9, 10, "BulletPuff")
		LAZZ A 0 A_PlaySound ("autoshotty", CHAN_WEAPON)
		LAZZ A 1 A_GunFlash
		LAZZ B 1
		LAZZ CD 1 A_SetPitch (Pitch-0.50)
		LAZZ DC 2 A_SetPitch (Pitch+0.50)
		LAZZ BA 2
	Fired:
		LAZZ A 2 A_ReFire
		Goto Ready
	Flash:
		WAZZ A 1 Bright A_Light1  
		WAZZ B 1 Bright A_Light2
		Goto LightDone
	Spawn:
		SHHH A -1
		Stop
	}
}

actor GWChanneler : Weapon
{
  radius 20
  height 16
  Weapon.SelectionOrder 5000
  Weapon.SlotNumber 4
  Weapon.AmmoUse1 1
  Weapon.AmmoType1 "Cell"
  Weapon.AmmoGive 40
  Weapon.AmmoUse2 1
  Weapon.AmmoType2 "Cell"
  Weapon.UpSound "Channeler/Up"
  inventory.pickupsound "misc/w_pkup"
  inventory.pickupmessage "You got the ''Channeler'' Plasma Rifle! (6)"
  obituary "%o was burned by %k's volatile plasma."
  states
  {
  Ready:
    CHAN A 1 A_WeaponReady
    loop
  Deselect: 
    CHAN A 1 A_Lower
    CHAN A 0 A_Lower
    CHAN A 0 A_StopSoundEx(soundslot7)
    loop
  Select:
    CHAN A 1 A_Raise
    CHAN A 0 A_Raise
    CHAN A 0 A_StopSoundEx(soundslot7)
    loop
  Fire:
    CHAF A 0 A_PlaySoundEx("Channeler/Fire", "soundslot7", 1)
    CHAF A 0 A_GunFlash
    CHAF A 1 Bright A_FireCustomMissile("GWChannelerBeam", 0, 0, 0, 0)
    CHAF B 1 Bright A_FireCustomMissile("GWChannelerBeam", 0, 1, 0, 0)
    CHAN B 1 A_ReFire
    CHAN B 10 A_StopSoundEx(soundslot7)
    goto Ready
  AltFire:
    CHAF A 0 A_PlaySoundEx("Channeler/AltFire", "soundslot7", 0)
    CHAF A 0 A_GunFlash
    CHAF A 0 A_FireCustomMissile("GWChannelerSeducer", 0, 1, 0, 0)
    CHAF AB 1 Bright
    CHAN B 1 A_ReFire
    CHAN B 20
    goto Ready
  Flash:
    TNT1 A 1 bright A_Light1
    TNT1 A 1 bright A_Light2
    TNT1 A 0 bright A_Light0
    stop
  Spawn:
    CHAN X -1
    Stop
  }
}

Actor GWChannelerBeam : FastProjectile
{
  Speed 100
  Radius 13
  Height 8
  Damage 1
  Decal DoomImpScorch
  Renderstyle Add
  SeeSound ""
  Scale 0.55
  -CANNOTPUSH
  -NODAMAGETHRUST
  +NOEXTREMEDEATH
  MissileType "ChannelerTrailSpawner"
  states
  {
  Death:
    PLSE A 0 A_CustomMissile("GWChannelerBeam2",0,0,random(0,360),4,random(0,360))
    PLSE ABCDE 2 bright
    stop
  }
}

ACTOR GWChannelerBeam2 : GWChannelerBeam
{
  states
  {
  Death:
    PLSE A 0 A_CustomMissile("GWChannelerBeam3",0,0,random(0,360),4,random(0,360))
    PLSE ABCDE 2 bright
    stop
  }
}

ACTOR GWChannelerBeam3 : GWChannelerBeam
{
  states
  {
  Death:
    PLSE A 0 A_CustomMissile("GWChannelerBeam4",0,0,random(0,360),4,random(0,360))
    PLSE ABCDE 2 bright
    stop
  }
}

ACTOR GWChannelerBeam4 : GWChannelerBeam
{
  states
  {
  Death:
    PLSE A 0
    PLSE ABCDE 2 bright
    stop
  }
}

ACTOR GWChannelerSeducer : GWChannelerBeam
{
  states
  {
  Death:
    PLSE A 0 A_CustomMissile("GWChannelerSeductor",0,0,0,4,0)
    PLSE ABCDE 2 bright
    stop
  }
}

ACTOR GWChannelerSeductor
{  
   Radius 0
   Height 0
   Scale 1
   +ISMONSTER
   +FRIENDLY
   +LOOKALLAROUND
   +NOBLOCKMONST
   +NOGRAVITY
   +NOINTERACTION
   Obituary "%o was burned by %k's volatile plasma."
   RenderStyle None
   States
   {
   Spawn:
     TNT1 A 0 A_Look
   See:
      TNT1 A 0 A_Chase
   Missile:
      TNT1 A 0 A_FaceTarget
      TNT1 A 1 A_CustomMissile("GWChannelerBeam4",0,0,0)
      Stop
   }
}

ACTOR GWChannelerTrailSpawner
{
  +NoGravity
  +NoClip
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_SpawnItemEx ("GWChannelerTrail", random (-3, 3), 0, random (-3, 3), 0, 0, 0, 0, 160)
    stop
  }
}

ACTOR GWChannelerTrail
{
  Radius 2
  Height 2
  RenderStyle Add
  Scale 1
  +NOINTERACTION
  States
  {
  Spawn:
    PLSE AAAAAAAAAA 1 A_FadeOut
    stop
  }
}

ACTOR GWDrummle : Weapon
{
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "You got the ''Drummle'' Auto-Shotgun!"
   Obituary "%o is full of lead, courtesy of %k's ''Drummle''."
   Weapon.AmmoType "Shell"
   Weapon.AmmoGive 4
   Weapon.AmmoUse 1
   Weapon.Kickback 30
   Weapon.SlotNumber 3
   Weapon.SelectionOrder 4000
   Weapon.UpSound "weapons/DrummleIn"
   AttackSound "weapons/Drummlefire"
   +NOAUTOFIRE
   States
   {
   Spawn:
      ASHG X -1
      Loop
   Ready:
      ASHG A 1 A_WeaponReady
      Loop
   Deselect:
      ASHG A 1 A_Lower
      ASHG A 0 A_Lower
      Loop
   Select:
      ASHG A 1 A_Raise
      ASHG A 0 A_Raise
      Loop
   Fire:
      ASHF A 0 A_GunFlash
      ASHF A 0 A_Recoil(1)
      ASHF A 0 A_FireBullets(5.5, 0, 7, 5, "BulletPuff")
      ASHF AB 1 BRIGHT
      ASHG BCDCBA 1
      ASHG A 15
      Goto Ready
   Flash:
       TNT1 A 1 A_Light2
       TNT1 A 1 A_Light1
       TNT1 A 0 A_Light0
       Stop
   }
}

ACTOR GWDrummleClip : Ammo
{
Inventory.MaxAmount 12
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 12
Inventory.Icon ASHGX0
}

Actor GWDualLaser : Weapon
{
	Weapon.AmmoUse 1
	Weapon.SlotNumber 6
	Weapon.SelectionOrder 5000
	Weapon.AmmoGive 60
	Weapon.AmmoType "Cell"
	Inventory.PickupMessage "You picked up the Dual Laser"

	States
	{
	Ready:
		DUAL A 1  A_WeaponReady
		Loop
	Deselect:
		DUAL A 1  A_Lower
		Loop
	Select:
		DUAL A 1  A_Raise
		Loop
	Fire:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",0,1,4,0,0,0)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",0,1,-4,0,0,0)
		DUAL A 1  A_GunFlash
		DUAL A 0  A_Recoil(5)
		DUAL A 0  A_PlaySound ("FIRELASERS", CHAN_WEAPON)
		DUAL AB 2 
		DUAL CD 1 A_SetPitch (Pitch-0.50)
		DUAL DC 1 A_SetPitch (Pitch+0.50) 
		DUAL BA 5 
		DUAL A 10  A_ReFire
		DUAL A 5
		goto ready
	Hold:
		DUAL A 0  A_Jump(256, "Hold1", "Hold2", "Hold3", "Hold4", "Hold5")
		goto Held0
	Hold1:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",0,1,4,0,0,0)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",0,1,-4,0,0,0)
		goto Held0
	Hold2:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",2,1,4,0,0,0)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",2,1,-4,0,0,0)
		goto Held0
	Hold3:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",-2,1,4,0,0,0)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",-2,1,-4,0,0,0)
		goto Held0
	Hold4:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",1,1,4,0,0,1)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",1,1,-4,0,0,1)
		goto Held0
	Hold5:
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",-1,1,4,0,0,1)
		DUAL A 0  A_FireCustomMissile ("GWD_Laser",-1,1,-4,0,0,1)
		goto Held0
	Held0:
		DUAL A 1  A_GunFlash
		DUAL A 0  A_Recoil(5)
		DUAL A 0  A_PlaySound ("FIRELASERS", CHAN_WEAPON)
		DUAL AB 2 
		DUAL CD 1 A_SetPitch (Pitch-0.50)
		DUAL DC 1 A_SetPitch (Pitch+0.50) 
		DUAL BA 5
		DUAL A 10  A_ReFire
		DUAL A 5
		goto ready
	Flash:
		DUAL EF 1 Bright A_Light1
		goto lightdone
	Spawn:
		DUSP A -1
		stop
		
	}
}

ACTOR GWD_Laser : FastProjectile
{
	Radius 13
	Height 8
	Speed 180
	Damage (5*random(5,10))
	Projectile
	+RANDOMIZE
	RenderStyle Add
	Alpha 0.75
	DeathSound "weapons/plasmax"
	Obituary "$OB_MPPLASMARIFLE"
	Decal "GatDecal"
	States
	{
	Spawn:
		LSER A 1 Bright
		Loop
	Death:
		LAZR ABCDE 4 Bright
		Stop
	}
}

ACTOR GWSlugs : Ammo
{
 Inventory.Amount 12
 Inventory.MaxAmount 50
 Ammo.BackpackAmount 20
 Ammo.BackpackMaxAmount 100
 Inventory.Icon "SLUGB0"
 Inventory.PickupMessage "Picked up a box of Slugs."
 States
 {
 Spawn:
  EMSG B -1
  Stop
 }
}

ACTOR GWSlugMag : GWSlugs
{
 Inventory.Amount 6
 Inventory.PickupMessage "Picked up a mag of Slugs."
 States
 {
 Spawn:
  EMSG A -1
  Stop
 }
}


ACTOR GWEMSRifle : GWEmsRifleBase
{
	Weapon.AmmoUse 1
	Weapon.AmmoGive 12
	Weapon.SlotNumber 6
	Weapon.SelectionOrder 6000
	Weapon.AmmoType "GWSlugs"
	Inventory.PickupMessage "You picked up the EMS Rifle!"
	Decal "BulletChip"
	States
	{
	Ready:
		RIFL A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
		RIFL A 1 A_Lower
		Loop
	Select:
		RIFL A 1 A_Raise
		Loop
	Fire:
		RIFL A 0 A_PlaySound ("frifle", CHAN_WEAPON)
		RIFL A 1 A_FireEms(500, "DarkGrey", "Cyan", "GWRiflePuff")
		RIFL A 1 A_GunFlash
		RIFL A 1 offset(0, 42)
		RIFL BC 2 offset(0, 36) A_SetPitch (Pitch-0.50)
		RIFL CB 2 A_SetPitch (Pitch+0.50)
		RIFL A 3 offset(0, 34)
		RIFL A 2 offset (0, 32)
		RIFL A 0 A_CheckForReload(6, "Fired")
		goto Reload
	Reload:
		RIFL A 0 A_JumpIfNoAmmo("Fired")
		RIFL B 0  A_PlaySound ("dropmag", CHAN_AUTO)
		RIFL ABC 3
		RRLD ABCD 1
		RRLD E 0 A_PlaySound ("reload", CHAN_AUTO)
		RRLD EFGHIJ 3
		RIFL CB 3
		RIFL B 1 A_ResetReloadCounter
		RIFL A 2 A_ReFire				
		
	Fired:
		RIFL A 20
		RIFL A 2 A_ReFire
		Goto Ready
	Flash:
		RIFF A 1 Bright A_Light1  
		RIFF B 1 Bright A_Light2
		Goto LightDone
	Spawn:
		RIFS A -1
		Stop
	}
}	

ACTOR GWRiflePuff
{
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +RANDOMIZE
  +ALWAYSPUFF
  RenderStyle Translucent
  Alpha 0.5
  VSpeed 1
  Mass 5
  States
  {
  Spawn:
    DUFF AB 4 Bright
    DUFF CD 4
    Stop
  }
}

ACTOR GWEnforcer : Weapon
{
   Inventory.PickupSound "misc/w_pkup"
   Inventory.PickupMessage "You got the ''Enforcer'' Pistol"
   Obituary "%o was forced to die by %k's ''Enforcer''."
   Weapon.AmmoType "Clip"
   Weapon.AmmoGive 0
   Weapon.AmmoUse 1
   Weapon.SlotNumber 2
   Weapon.SelectionOrder 4000
   Weapon.Kickback 75
   Weapon.UpSound "weapons/enforcerup"
   AttackSound "weapons/enforcerfire"
   Scale 0.4
   States
   {
   Spawn:
      LIBG X -1
      Loop
   Ready:
      LIBG A 1 A_WeaponReady
      Loop
   Deselect:
      LIBG A 1 A_Lower
      LIBG A 0 A_Lower
      Loop
   Select:
      LIBG A 1 A_Raise
      LIBG A 0 A_Raise
      Loop
   Fire:
      LIBF A 0 A_GunFlash
      LIBF A 0 A_FireBullets (5.6,0,1,6,"BulletPuff")

      LIBF AB 1 BRIGHT
      LIBG CEDCBA 1
      LIBG A 4
      LIBG A 0 A_ReFire
      Goto Ready
   Flash:
       TNT1 A 2 A_Light2
       TNT1 A 1 A_Light1
       TNT1 A 0 A_Light0
       Stop
   }
}

Actor GWFistsOfFury : Weapon
{
Weapon.SlotNumber 1
Weapon.KickBack 50
Weapon.SelectionOrder 4000
Scale 0.8
Inventory.PickupMessage "You learned Fists of Fury!"
Inventory.PickupSound "FuryScroll/Pickup"
Obituary "%o suffered the wrath of %k's fists."
Tag "Fists of Fury"
+WEAPON.MELEEWEAPON
States
	{
	Spawn:
		KUNG A -1
		Stop
	Select:
		KNGF A 1 A_Raise
		Loop
	Deselect:
		KNGF A 1 A_Lower
		Loop
	Ready:
		TNT1 A 0 A_Jump(128,"ReadyAlt")
		KNGF A 1 A_WeaponReady
		Goto Ready+1
	ReadyAlt:
		KNGF B 1 A_WeaponReady
		Loop
	Fire:
		TNT1 A 0 A_JumpIfInventory("PowerStrength",1,"Berserker")
		TNT1 A 0 A_Jump(256,"RightHand","LeftHand")
	RightHand:
		KNGF C 1
		KNGF C 1 A_WeaponOffset(-12,0)
		KNGF C 1 { A_WeaponOffset(-35,-14); A_CustomPunch(4,false,CPF_NOTURN,"GWFuryPuff",64,0,0,"ArmorBonus","Puff/HitThing","Puff/HitMiss"); }
		KNGF C 1 A_WeaponOffset(-41,30)
		KNGF C 1 A_WeaponOffset(-53,60)
		TNT1 A 3 { A_WeaponOffset(0,32); A_Refire; }
		KNGF A 1 A_WeaponOffset(0,62)
		KNGF A 1 A_WeaponOffset(0,52)
		KNGF A 1 A_WeaponOffset(0,42)
		KNGF A 1 A_WeaponOffset(0,32)
		Goto Ready
	LeftHand:
		KNGF D 1
		KNGF D 1 A_WeaponOffset(12,0)
		KNGF D 1 { A_WeaponOffset(35,-14); A_CustomPunch(4,false,CPF_NOTURN,"GWFuryPuff",64,0,0,"ArmorBonus","Puff/HitThing","Puff/HitMiss"); }
		KNGF D 1 A_WeaponOffset(41,30)
		KNGF D 1 A_WeaponOffset(53,60)
		TNT1 A 3 { A_WeaponOffset(0,32); A_Refire; }
		KNGF A 1 A_WeaponOffset(0,62)
		KNGF A 1 A_WeaponOffset(0,52)
		KNGF A 1 A_WeaponOffset(0,42)
		KNGF A 1 A_WeaponOffset(0,32)
		Goto Ready
	Berserker:
		TNT1 A 0 A_JumpIf(CountInv("PowerStrength")<1,"Fire")
		TNT1 A 0 A_Jump(256,"RightHandBerserk","LeftHandBerserk")
	RightHandBerserk:
		KNGF C 1
		KNGF C 1 A_WeaponOffset(-12,0)
		KNGF C 1 { A_WeaponOffset(-35,-14); A_CustomPunch(12,false,CPF_NOTURN,"GWFuryPowerPuff",64,0,0,"ArmorBonus","Puff/HitThing","Puff/HitMiss"); }
		KNGF C 1 A_WeaponOffset(-41,30)
		KNGF C 1 A_WeaponOffset(-53,60)
		TNT1 A 3 { A_WeaponOffset(0,32); A_Refire; }
		KNGF A 1 A_WeaponOffset(0,62)
		KNGF A 1 A_WeaponOffset(0,52)
		KNGF A 1 A_WeaponOffset(0,42)
		KNGF A 1 A_WeaponOffset(0,32)
		Goto Ready
	LeftHandBerserk:
		KNGF D 1
		KNGF D 1 A_WeaponOffset(12,0)
		KNGF D 1 { A_WeaponOffset(35,-14); A_CustomPunch(12,false,CPF_NOTURN,"GWFuryPowerPuff",64,0,0,"ArmorBonus","Puff/HitThing","Puff/HitMiss"); }
		KNGF D 1 A_WeaponOffset(41,30)
		KNGF D 1 A_WeaponOffset(53,60)
		TNT1 A 3 { A_WeaponOffset(0,32); A_Refire; }
		KNGF A 1 A_WeaponOffset(0,62)
		KNGF A 1 A_WeaponOffset(0,52)
		KNGF A 1 A_WeaponOffset(0,42)
		KNGF A 1 A_WeaponOffset(0,32)
		Goto Ready
	}
}

Actor GWFuryPuff
{
VSpeed 1
Renderstyle Translucent
Alpha 0.5
AttackSound "Puff/HitWall"
+NOBLOCKMAP
+NOGRAVITY
+ALLOWPARTICLES
+NOEXTREMEDEATH
States
	{
	Spawn:
		PUFF CD 4
		Stop
	}
}

Actor GWFuryPowerPuff : GWFuryPuff
{
VSpeed 0
Scale 0.7
+PUFFONACTORS
-ALLOWPARTICLES
-NOEXTREMEDEATH
States
	{
	Spawn:
		BAL1 DE 4
		Stop
	}
}

ACTOR GWGatLaser : Weapon
{
	Weapon.AmmoUse 1
	Weapon.SlotNumber 4
	Weapon.SelectionOrder 6000
	Weapon.AmmoGive 60
	Weapon.AmmoType "Cell"
	Inventory.PickupMessage "You picked up a Gatling Laser"
	
	States
	{
	Ready:
		GATL A 1 A_WeaponReady
		Loop
	Deselect:
		GATL A 1 A_Lower
		GATL A 0 A_StopSound(5)
		Loop
	Select:
		GATL A 1 A_Raise
		Loop
	Fire:
		GATL C 0 A_PlaySound("gatcharge", CHAN_WEAPON)
		GATL CDEFGHI 3
		GATL I 0 A_PlaySound("midfire", 5, 1, TRUE)
	Hold:
		GATL B 0 A_PlaySound("gatling", CHAN_WEAPON)
		GATL B 0 A_GunFlash 
		GATL J 0 A_FireCustomMissile ("GWD_Laser",random(3,-3),1,0,0,0,random(3,-3))
		GATL J 1 Offset (0, 36)
		GATL J 0 A_SetPitch (pitch-0.15)
		GATL I 0 A_SetPitch (pitch+0.15)
		GATL I 1 Offset (0, 33)
		GATL I 0 A_ReFire("Fired")
		GATL B 0 A_StopSound(5)
		GATL B 0 A_PlaySound("endfire", 5)
		GATL IHGFEDCA 3  
		Goto Ready
		
	Fired:
		GATL B 0 A_PlaySound("gatling", 6)
		GATL B 0 A_GunFlash 
		GATL J 0 A_FireCustomMissile ("GWD_Laser",random(5,-5),1,0,0,0,random(5,-5))
		GATL J 1 Offset (0, 36)
		GATL J 0 A_SetPitch (pitch-0.15)
		GATL I 0 A_SetPitch (pitch+0.15)
		GATL I 1 Offset (0, 33)
		GATL I 0 A_ReFire("Hold")
		GATL B 0 A_StopSound(5)
		GATL B 0 A_PlaySound("endfire", 5)
		GATL IHGFEDCA 3  
		Goto Ready

	Flash:
		GATT A 0 A_Jump (127, 2)
		GATT A 1 Bright A_Light1
		goto lightdone
		GATT B 1 Bright A_Light1
		goto lightdone
	Spawn:
		GATS A -1
		Stop
	}
}

Actor GWIonspray : Weapon
{
   Inventory.PickupMessage "You got the Ionspray"
   Obituary "%o was ionized by %k"
   Inventory.PickupSound "misc/w_pkup"
   Weapon.SelectionOrder 7000
   Weapon.SlotNumber 6
   Weapon.Kickback 1
   Weapon.AmmoType "Cell"
   Weapon.AmmoGive 40
   Weapon.AmmoUse 1
   States
   {
   Spawn:
      ISPP A -1
      Loop
   Ready:
      ISPG A 0 A_StopSoundEx("SoundSlot7")
      ISPG A 1 A_WeaponReady
      Loop
   Deselect:
      ISPG A 0 A_StopSoundEx("SoundSlot7")
      ISPG A 1 A_Lower
      Loop
   Select: 
      ISPG A 1 A_Raise
      Loop
   Fire:
      ISPG B 0 A_GunFlash
      ISPG B 0 A_PlaySoundEx("Weapons/IonFire", "SoundSlot7", 1)
      ISPG B 0 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG B 1 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG B 0 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG B 1 A_FireCustomMissile("GWIonBall", Random(-2, 2), 1, Random(-6, 6), Random(-4, 4))
   Hold:
      ISPG B 0 A_GunFlash
      ISPG C 0 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG C 1 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG C 0 A_FireCustomMissile("GWIonBall", Random(-2, 2), 0, Random(-6, 6), Random(-4, 4))
      ISPG C 1 A_FireCustomMissile("GWIonBall", Random(-2, 2), 1, Random(-6, 6), Random(-4, 4))
      ISPG C 0 A_ReFire
      ISPG C 4 A_StopSoundEx("SoundSlot7")
      ISPG B 3 A_PlaySoundEx("Weapons/IonCool", "SoundSlot7", 0)
      ISPG A 20
      Goto Ready
   Flash:
      TNT1 A 2 bright A_Light1
      TNT1 A 2 bright A_Light0
      Stop
   }
}

Actor GWIonBall
{
  Radius 13
  Height 8
  Speed 26
  Damage (Random(3, 6))
  Projectile
  RenderStyle Add
  Alpha 0.45
  Scale 0.35
  Decal RailScorchLower
  States
  {
  Spawn:
    IONB A 1 Bright
    Loop
  Death:
    IONB BCDEFGHIJKL 2 Bright
    stop
  }
}

ACTOR GWPlasmaSplitter : Weapon
{
   Weapon.SelectionOrder 6000
   Weapon.SlotNumber 7
   Weapon.UpSound "Splitter/Up"
   Weapon.AmmoType "Cell"
   Weapon.AmmoUse 2
   Weapon.AmmoGive 50
   Inventory.PickupMessage "You got the Plasma Splitter!"
   Obituary "%o got disintegrated by %k"
   +Weapon.NOAUTOFIRE
   +Weapon.BFG
   States
   {
   Ready: 
      PLSC A 1 A_WeaponReady
      Loop
   Deselect: 
	  TNT1 A 0 A_StopSound(7)
      PLSC A 1 A_Lower(9)
      Loop
   Select: 
      PLSC A 1 A_Raise(9)
      Loop
   Fire:
	  PLSC ABCD 4
	  PLSC E 5 A_PlaySound("Splitter/Start",7,3,1)
      Goto Hold
   Hold:
      TNT1 A 0 A_PlaySound("Splitter/Loop",7,3,1)
	  TNT1 A 0 Radius_Quake(10,2,0,20,0)
	  TNT1 A 0 A_Recoil(2)
	  PLSC FG 2 A_FireCustomMissile("GWBFGBeam")
	  TNT1 A 0 A_refire
	  Goto LetGo
   LetGo:
	  TNT1 A 0 A_StopSound(7)
	  TNT1 A 0 A_PlaySound("Splitter/End")
	  PLSC EDCBA 4
	  PLCR ABCDEF 2
	  Goto Ready
   Spawn:
      PLSP A -1
      Loop
   }
}

ACTOR GWBFGBeam : MageWandMissile
{
	Decal "BFGScorch"
	Radius 8
	Height 8
	Speed 100
	Scale 0.65
	Damage 3
	DamageType "Disintegrate"
	RenderStyle Add
	Alpha 0.75
	Projectile
	DeathSound "weapons/plasmax"
	+EXTREMEDEATH
	+CANNOTPUSH
	+BRIGHT
    +BLOODLESSIMPACT
    -BLOODSPLATTER
	States
	{
	Spawn:
	BFE2 AAAA 1 A_SpawnItemEX("GWBFGBeamTrail")
	Loop
	Death:
	TNT1 A 0 A_SpawnItemEX("GWBFGBeamDeath")
	BFE1 BA 3
	BFE2 BCD 3
	Stop
	}
}

ACTOR GWBFGBeamTrail : MageWandSmoke
{
	Radius 8
	Height 8
	Speed 0
	RenderStyle Add
	Alpha 0.65
	Scale 0.75
	Projectile
	+BRIGHT
	States
	{
	Spawn:
	TNT1 A 0
	Goto Death
	Death:
	BFE2 BCD 2
	Stop
	}
}

ACTOR GWBFGBeamDeath
{
	Radius 8
	Height 8
	Speed 0
	RenderStyle Add
	Alpha 0.75
	Scale 0.5
	Projectile
	+BRIGHT
	States
	{
	Spawn:
	TNT1 A 0
	Goto Death
	Death:
	GRBR ABCDEFGHIJK 2
	Stop
	}
}

ACTOR GWDemonicLeechLive : CustomInventory
{
	Inventory.PickupMessage "Oh god, what is this thing!? Get it off!"
	Inventory.Pickupsound "Idles"
	Speed 2
	Scale 0.5
	+INVENTORY.AUTOACTIVATE
	States
		{
		Spawn:
			DLEP AAABBBCCCBBB 2 A_Wander
			TNT1 A 0
			{
				if (Random(0, 255) < 25)
				{
					A_PlaySound("Idles");
				}
			}
			loop
		Use:
			TNT1 A 0 A_GiveInventory("GWDemonicLeech", 1)
			Stop
		}
}

Actor GWDemonicLeech : Weapon
{
  Weapon.SelectionOrder 5000
  Weapon.Kickback 0
  Weapon.SlotNumber 1
  Inventory.Pickupsound "Idles"
  +WEAPON.MELEEWEAPON
  Inventory.PickupMessage "Oh god, what is this thing!? Get it off!"
  Obituary "%o's blood was sucked out by %k's Demonic Leech."
  States
  {
  Ready:
    DLEI AAAAAA 4 A_WeaponReady
	TNT1 A 0
	{
		if (Random(0, 255) < 25)
		{
			A_PlaySound("Idles");
		}
	}
	DLEI BB 4 A_WeaponReady
    loop
  Deselect:
    DLEI A 1 A_Lower
    loop
  Select: 
    DLEI A 1 A_Raise
    loop
  Fire:
    DLEF A 1 A_Saw("NoSlurps/Missed","Slurps",1,"GWGorePuff", SF_NOPULLIN | SF_NOTURN,75,3,0,1,100)
	DLEF BCDEFG 3
	TNT1 A 0 A_ReFire
	Goto Ready
  AltFire:
	DLEF GFEDCBA 4
	DLEF A 5 A_PlaySound("Barfs")
	DLEF A 10
	{
		if (health > 10)
		{
			A_DamageSelf(random(5,10));
			A_FireCustomMissile("GWGoreRandom",0,0,5,8);
		}
	}
	goto Ready
  }
}

//Gore//
Actor GWGoreRandom : RandomSpawner
{
	DropItem "GWGore1"
	DropItem "GWGore2"
	DropItem "GWGore3"
	DropItem "GWGore4"

}

actor GWGore1
{
    PROJECTILE
	BounceType Doom
	-NOGRAVITY
    -NOBLOCKMAP
    -NOTELEPORT
    +RANDOMIZE
	-GrenadeTrail
	-ROCKETTRAIL
	+DontFall
	+CanBounceWater
	BounceFactor 1
	BounceCount 4
	BounceSound "Splaty"
    Radius 2
    Damage (random(20,35))
    Speed 20
	Scale 1
    States
    {
    Spawn:
        GUT1 ABCDEFGH 2 A_SpawnItem("GWGoreTrail")
        loop
    Death:
		GUT1 H 1
        Stop
    }
}

actor GWGore2 : GWGore1
{
    States
    {
    Spawn:
        GUT2 ABCDEFGH 2 A_SpawnItem("GWGoreTrail")
        loop
    }
}

actor GWGore3 : GWGore1
{
    States
    {
    Spawn:
        GUT3 ABCDEFGH 2 A_SpawnItem("GWGoreTrail")
        loop
    }
}

actor GWGore4 : GWGore1
{
    States
    {
    Spawn:
        GUT4 ABCDEFGH 2 A_SpawnItem("GWGoreTrail")
        loop
    }
}

//GoreTrail//
Actor GWGoreTrail
{
	+NOCLIP
	+NOINTERACTION
	-NOGRAVITY
	Scale 0.5
	States
	{
	Spawn:
		DLBL AABBCC 2
		Stop
	}
}

//GorePuff//
Actor GWGorePuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	Mass 5
	States
	{
	Spawn:
		DLBL ABC 2
	Melee:
		DLBL ABC 2
		Stop
	}
}

actor DivineShadow 10100
{
	//$Category Monsters
	//$Sprite VIL2G1
	//$Title Divine Shadow

	Health 250
	Radius 20
	Height 56
	Mass 500
	Speed 20
	PainChance 0
	BloodColor "00 80 00"
	
	DamageFactor BFGSplash, 0.5
	
	Species "DivineShadow"
	Monster
	
	//RenderStyle Add
	//Alpha 0.5
	
	+QUICKTORETALIATE
	+FLOORCLIP
	+NOTARGET
	
	SeeSound "vile/sight"
	PainSound "vile/pain"
	DeathSound "vile/death"
	ActiveSound "vile/active"
	MeleeSound "vile/stop"
	
	Obituary "%o was disintegrated by a Divine Shadow."
	
	States
	{
	Spawn:
		VIL1 AB 10 A_Look
		loop
		
	See:
		VIL1 AABBCC 2 A_Chase
		loop
		
	Missile:
		TNT1 A 0 A_Jump(64, "MissileLoopStart")
		//goto MissileSingle
		
	MissileSingle:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::HoldVile", 0, 0, 0, 0)
		TNT1 A 0 A_CustomMissile("DivineShadowAtkLarge", 50.0, 0)
		TNT1 A 0 A_PlaySound("weapons/bfgf")
		VIL2 G 4 BRIGHT
		VIL2 HIJKLMNONP 4 BRIGHT
		goto See

	MissileLoopStart:
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::Circle", 0, 0, 0, 0)
		goto MissileLoop
		
	MissileLoop:
		VIL2 A 1 BRIGHT
		loop
		
	Death:
		VIL3 R 7 A_Scream
		VIL3 S 7 A_NoBlocking
		VIL3 TUWVXY 7
		VIL3 Z -1
		stop
	}
}

actor DivineShadowAtkSmall : BFGBall
{
	Scale 0.5
	Alpha 1.0
	Damage (random(25, 50))
	RenderStyle Add
	
	+MTHRUSPECIES
	
	States
	{
	Death:
		BFE1 ABC 8 BRIGHT
		//BFE1 C 8 BRIGHT A_BFGSpray("BFGExtra", 1, 2) // spray doesn't behave correctly here
		BFE1 DEF 8 BRIGHT
		stop
	}
}

actor DivineShadowAtkTrail
{
	+NOINTERACTION
	+NOGRAVITY
	
	RenderStyle Add
	Alpha 0.8

	States
	{
	Spawn:
		BFS1 AB 1 BRIGHT
		TNT1 A 0 A_FadeOut(0.1, FTF_REMOVE)
		TNT1 A 0 A_SetScale(scalex-0.1)
		loop
	}
}

actor DivineShadowAtkLarge : BFGBall
{
	Alpha 1.0
	RenderStyle Add
	Speed 10
	Damage 35
	
	+SEEKERMISSILE
	+MTHRUSPECIES
	
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteWithResult("DivineShadow::HoldBall", 0, 0, 0, 0) // basically, this holds the projectile in place for a bit
		BFS2 ABCDEF 6 BRIGHT
		goto SpawnLoop
	SpawnLoop:
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 G 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		TNT1 A 0 A_SeekerMissile(0, 3, SMF_PRECISE)
		BFS2 H 1 BRIGHT A_SpawnItem("DivineShadowAtkTrail", 0, -16, false, false)
		loop
	Death:
		BFE1 ABC 8 Bright
		//BFE1 C 8 Bright A_BFGSpray
		BFE1 DEF 8 Bright
		Stop
	}
}