Actor LegendarySaber : DoomWeapon
{
  Scale 0.7
  Weapon.AmmoType1 "LDemonAmmo"
  Weapon.AmmoType2 "DustMana"
  Weapon.AmmoUse1 0
  Weapon.AmmoUse2 0
  Weapon.AmmoGive1 40
  Weapon.AmmoGive2 50
  Inventory.PickupSound "Saber/Pickup"
  Inventory.PickupMessage "You got the Legendary Saber! With enough thinking, you may be able to discover new powers..."
  Weapon.PreferredSkin "Fist-Marine"
  Obituary "%o was amazed that %k actually got this obituary to appear."
  Tag "Legendary Saber"
  +WEAPON.AMMO_OPTIONAL
  States
  {
  Ready:
	TNT1 A 0 A_JumpIfInventory("LDemonAmmo",20,"Ready2")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"ChangeMode")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	LGSB A 1 A_WeaponReady
	Loop
  Ready2:
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"ChangeMode")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	LSB2 AAAA 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"ChangeMode")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	LSB2 BBBB 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"ChangeMode")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	LSB2 CCCC 1 A_WeaponReady
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"ChangeMode")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	LSB2 DDDD 1 A_WeaponReady
	Loop
  Deselect:
	TNT1 A 0 A_PlaySound("weapons/weapondown",1)
	TNT1 A 0 A_Lower
	LGSB A 1 A_Lower
	Goto Deselect+1
  Select: 
	TNT1 A 0 A_Raise
	LGSB A 1 A_Raise
	Loop
  Fire:
	TNT1 A 0 A_JumpIfInventory("LDemonAmmo",15,"Fire2")
	Goto FireNoAmmo
  Fire2:
	LSB2 EF 2
  Refire2:
	TNT1 A 0 A_PlaySound("Saber/Swing",1)
	TNT1 A 0 A_Quake(3,10,0,10,0)
	LGSB DE 1
	LSB2 GHIJ 1
	TNT1 A 0 A_CustomPunch((random(50,150)*random(1,3)),0,0,"SaberBulletPuff2",110)
	LSB2 KLMNOP 1
	TNT1 A 4
	TNT1 A 0 A_JumpIfInventory("LDemonAmmo",15,2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_Refire("Refire2")
	TNT1 A 0
	Goto Done2
  FireNoAmmo:
	LGSB BC 2
  RefireNoAmmo:
	TNT1 A 0 A_PlaySound("Saber/Swing",1)
	TNT1 A 0 A_Quake(3,10,0,10,0)
	LGSB DEFGHI 1
	TNT1 A 0 A_CustomPunch(random(15,30),0,0,"SaberBulletPuff",110)
	LGSB KLMNOP 1
	LGSB JKLM 1
	TNT1 AA 1
	TNT1 A 4
	TNT1 A 0 A_Refire("RefireNoAmmo")
	Goto Done
  AltFire:
	TNT1 A 0 A_JumpIfInventory("LDemonAmmo",20,"AltFireContinue")
	Goto Ready
  AltFireContinue:
	LSB2 EF 2
  AltFireRefire:
	TNT1 A 0 A_PlaySound("Saber/Swing",1)
	TNT1 A 0 A_PlaySound("Saber/AltSwing",7)
	TNT1 A 0 A_Quake(4,20,0,10,0)
	LGSB DDEE 1
	LSB2 GGHHIIJJ 1
	TNT1 A 0 A_TakeInventory("LDemonAmmo",20,TIF_NOTAKEINFINITE)
	TNT1 A 0 A_FireCustomMissile("CrusaderRazorWind",0,0,0,0)
	LSB2 KKLLMMNNOOPP 1
	TNT1 A 5
	TNT1 A 0 A_JumpIfInventory("LDemonAmmo",20,2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_Refire("AltFireRefire")
	TNT1 A 0
	Goto Done2
  Done:
	LGSB NOPQ 2 Bright
	Goto Ready	
  Done2:
	LSB2 RSTU 2 Bright
	Goto Ready	
  ChangeMode:
	TNT1 A 0 A_JumpIfInventory("DustMana",200,"ResistanceBuff")
	TNT1 A 0 A_TakeInventory("RailgunAction")
	Goto Ready
  ResistanceBuff:
	LSB2 EF 2
	TNT1 A 0 A_PlaySound("Saber/Buff",1)
	TNT1 A 0 A_Quake(4,20,0,10,0)
	LGSB DDEE 1
	LSB2 GGHHIIJJ 1
	TNT1 A 0 A_TakeInventory("DustMana",200)
	TNT1 A 0 A_TakeInventory("RailgunAction")
	TNT1 A 0 A_SpawnItemEx("SaberPlayerResistanceBuffGiver",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION)
	LSB2 KKLLMMNNOOPP 1
	TNT1 A 5
	Goto Done2
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+6
  GrenadeToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	LGSB ABC 2
	TNT1 A 3
	HGRN ABC 1
	HGRN D 2
	HGRN EFG 1
	HGRN HI 2
	TNT1 A 15 A_PlayWeaponSound("weapons/hgrenadepin")
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1)
	HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN J 1
	HGRN KLM 2
	HGRN NO 1
	TNT1 A 6
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,2)
	TNT1 A 0 A_TakeInventory("Hand Grenade",1)
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0
	LGSB CBA 2
	Goto Ready+6
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto Ready
  MineToss:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	LGSB ABC 2
	TNT1 A 8
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	MINE ABCDEF 1		
	TNT1 A 0 A_TakeInventory("MineAmmo",1)	  
	MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0)
	MINE HI 1
	MINE JK 2
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,2)
	TNT1 A 0 A_TakeInventory("Land Mine",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0
	TNT1 A 5
	LGSB CBA 2
	Goto Ready
  Spawn:
	HEVB A 1
	Loop
  }
}

Actor SaberPlayerResistanceBuffGiver
{
  +NOGRAVITY
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_RadiusGive("SaberPlayerResistanceBuff",800,RGF_PLAYERS)
	TNT1 A 1
	Stop
	}
}

Actor SaberPlayerResistanceBuff : CrusaderBuff
{
  States
  {
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_JumpIfInventory("SaberBuffResistanceCheck",1,"Nope")
	TNT1 A 0 A_SetBlend("Blue",0.8,20)
	TNT1 A 0 A_Print("! Resistance Buff !",3)
	TNT1 A 0 A_PlaySound("Saber/Resistance",0,1.0,0,ATTN_STATIC)
	TNT1 A 0 A_GiveInventory("SaberBuffResistanceCheck")
	TNT1 A 0 A_GiveInventory("SaberResistanceGiver")
	TNT1 A 0 ACS_NamedExecuteAlways("SaberResistanceBuff")
	Stop
	}
}
Actor SaberBuffResistanceCheck : Inventory { Inventory.MaxAmount 1 }
Actor SaberResistance : PowerProtection
{
  DamageFactor "Normal", 0.25
}
Actor SaberResistanceGiver : PowerupGiver
{
  inventory.pickupmessage " "
  inventory.maxamount 1
  powerup.type "SaberResistance"
  powerup.duration -30
  powerup.color Blue, 0.2
  +NOTIMEFREEZE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
}

Actor SaberBulletPuff : BulletPuff
{
+NOGRAVITY
+PUFFGETSOWNER
+PUFFONACTORS
+EXTREMEDEATH
DamageType "Melee"
AttackSound "Saber/WallHit"
SeeSound "Saber/Hit"
RenderStyle Add
Alpha 0.8
Scale 0.8
VSpeed 0
States
{
  Spawn:
  Melee:
	LSAK ABCDEFG 2 Bright A_FadeOut(0.1)
	Stop	
  XDeath:
	FAXE FGHIJK 3
	Stop
    }
}

Actor SaberBulletPuff2 : SaberBulletPuff
{
VSpeed 0
ProjectileKickBack 50
Damagetype "Legendary"
States
{
  Spawn:
  Melee:
	LSAR ABCDEFG 2 Bright A_FadeOut(0.1)
	Stop	
  XDeath:
	TNT1 A 0 A_SetScale(0.65)
	TNT1 A 0 A_PlaySound("Saber/Explode",7)
	TNT1 A 0 A_SpawnItemEx("LegendaryBlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
	TNT1 AAA 0 A_CustomMissile("LegendaryKaboom6", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("LegendarySmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 0 A_TakeInventory("LDemonAmmo",15,TIF_NOTAKEINFINITE,AAPTR_TARGET)
	LSX0 ABCDEFG 3
	Stop
    }
}