Actor Satanic_Leech : Weapon //Replaces PlasmaRifle
{    
	XScale 1
	YScale 0.65
	SpawnID 32
	Weapon.SelectionOrder 10000
	Weapon.AmmoUse2 	0
    Weapon.AmmoUse 		0
    Weapon.AmmoType 	"Satanic_SoulAmmo"
    Weapon.Kickback 	100
	Inventory.PickupMessage "the vampiric energies of the leech sword are now at your disposal."
	Tag "Leech Sword"
	//+NO_AUTO_SWITCH
	States 
    { 
	Spawn: 
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("Satanic_Leech",1,"RemoveAndSpawnMana",AAPTR_PLAYER1)
		WFR1 A 1 BRIGHT
		TNT1 A 0 A_CheckSight("NoSpawnFlames")
		TNT1 AA 0 A_SpawnItemEx("SmallBloodFlame",random(-2,2),random(-2,2),random(10,50),0,0,frandom(0.1,1))
		Loop 
	NoSpawnFlames:
		WFR1 A 1 BRIGHT
		Goto Spawn
	RemoveAndSpawnMana:
		TNT1 A 0 A_SpawnItemEx("Satanic_SoulAmmoNotTheLastOne")
		Stop
	Ready: 
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 A 0 A_JumpIfInventory("SwordHeldSouthpaw",1,"LeftyReady")
	ReadyLoop:	
		FSRD AAA 1 A_WeaponReady
		FSRD BBB 1 A_WeaponReady
		FSRD CCC 1 A_WeaponReady
		Loop
	LeftyReady:	
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
	LeftyReadyLoop:	
		FSLD AAA 1 A_WeaponReady
		FSLD BBB 1 A_WeaponReady
		FSLD CCC 1 A_WeaponReady
		Loop
	Select:
		TNT1 A 0 A_JumpIfInventory("SwordHeldSouthpaw",1,"LeftySelect")
		TNT1 A 0 A_GiveInventory("WeapWithNoTertChecker",1)
		TNT1 A 0 A_JumpIfInventory("PWCIsOff",1,"DefXHair")
		TNT1 A 0 A_SetCrosshair(8)
		Goto SelectLoop
	DefXHair:	
		TNT1 A 0 A_SetCrosshair(0)
	SelectLoop:	
		TNT1 A 0 A_Raise
		FSRD ABC 1 A_Raise 
		Loop
	LeftySelect: 
		TNT1 A 0 A_GiveInventory("WeapWithNoTertChecker",1)
		TNT1 A 0 A_JumpIfInventory("PWCIsOff",1,"DefXHair")
		TNT1 A 0 A_SetCrosshair(8)
		Goto LeftySelectLoop
	DefXHair:	
		TNT1 A 0 A_SetCrosshair(0)
	LeftySelectLoop:	
		TNT1 A 0 A_Raise
		FSLD ABC 1 A_Raise 
		Loop
	Deselect:
		TNT1 A 0 A_JumpIfInventory("SwordHeldSouthpaw",1,"LeftyDeselect")
		TNT1 A 0 A_TakeInventory("WeapWithNoTertChecker",1)
	DeselectLoop:	
		TNT1 A 0 A_Lower
		FSRD ABC 1 A_Lower 
		Loop 
	LeftyDeselect:
		TNT1 A 0 A_TakeInventory("WeapWithNoTertChecker",1)
	LeftyDeselectLoop:	
		TNT1 A 0 A_Lower
		FSLD ABC 1 A_Lower 
		Loop 
	Fire: 
		TNT1 A 0 A_JumpIfInventory("LeftComboCounter",2,"LeftCombo3")
		TNT1 A 0 A_JumpIfInventory("LeftComboCounter",1,"LeftCombo2")
	LeftCombo1:
		TNT1 A 0 A_Recoil(-1)
		FSRD ONM 3
		FSRD L 3 A_Saw("none","imp/melee",4,"SwordPuff")
		FSRD KJ 3
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("LeftComboCounter",1)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		Goto LeftComboCancel
	LeftCombo2:
		TNT1 A 0 A_Recoil(-2)
		FSRD DEF 2
		FSRD G 2 A_Saw("none","imp/melee",6,"SwordPuff")
		FSRD HI 2
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("LeftComboCounter",2)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		Goto LeftComboCancel
	LeftCombo3:
		TNT1 A 0 A_Recoil(-3)
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",36,-20,37,1,0,0)
		FSRD O 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,10,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",33,-12,35,1,0.25,0)
		FSRD N 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,5,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",30,-4,33,1,0.50,0)
		FSRD M 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",27,4,31,1,0.75,0)
		TNT1 A 0 A_Saw("none","imp/melee",0,"SwordPuff")
		FSRD L 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",24,12,29,1,1.00,0)
		FSRD K 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,-5,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",21,20,27,1,1.25,0)
		FSRD J 1 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,-10,4)
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 A 0 A_GiveInventory("SwordHeldSouthpaw",1)
		Goto LeftComboCancel
	LeftComboCancel:
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		SRL9 A 1
		SRL8 A 1
		SRL7 A 1
		SRL6 B 1
		SRL5 B 1
		SRL4 B 1
		SRL3 C 1
		SRL2 C 1
		SRL1 C 1
		Goto LeftyReady
	AltFire: 
		TNT1 A 0 A_TakeInventory("SwordHeldSouthpaw",1)
		TNT1 A 0 A_JumpIfInventory("RightComboCounter",2,"RightCombo3")
		TNT1 A 0 A_JumpIfInventory("RightComboCounter",1,"RightCombo2")
	RightCombo1:
		TNT1 A 0 A_Recoil(-1)
		FSRD DEF 3
		FSRD G 3 A_Saw("none","imp/melee",4,"SwordPuff")
		FSRD HI 3
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("RightComboCounter",1)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto RightComboCancel
	RightCombo2:
		TNT1 A 0 A_Recoil(-2)
		FSRD ONM 2
		FSRD L 2 A_Saw("none","imp/melee",6,"SwordPuff")
		FSRD KJ 2
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("RightComboCounter",2)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto RightComboCancel
	RightCombo3:
		TNT1 A 0 A_Recoil(-3)
		TNT1 A 0 ACS_ExecuteAlways(769,0,10,0,0)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",36,20,37,1,0,0)
		FSRD D 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,10,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",33,12,35,1,-0.25,0)
		FSRD E 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,5,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",30,4,33,1,-0.50,0)
		FSRD F 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",27,-4,31,1,-0.75,0)
		TNT1 A 0 A_Saw("none","imp/melee",0,"SwordPuff")
		FSRD G 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",24,-12,29,1,-1,0)
		FSRD H 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,-5,4)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",21,-20,27,1,-1.25,0)
		FSRD I 1 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,-10,4)
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto RightComboCancel
	RightComboCancel:
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		SRR9 A 1
		SRR8 A 1
		SRR7 A 1
		SRR6 B 1
		SRR5 B 1
		SRR4 B 1
		SRR3 C 1
		SRR2 C 1
		SRR1 C 1
		Goto Ready
	} 
}

ACTOR Satanic_Leech2 : Satanic_Leech
{
	+CHEATNOTWEAPON
	States
	{
	LeftCombo1:
		TNT1 A 0 A_Recoil(-1)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD O 3 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD N 3 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD M 3 
		TNT1 A 0 A_Saw("none","imp/melee",5,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD L 3 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD K 3 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD J 3 
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("LeftComboCounter",1)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		Goto Super::LeftComboCancel
	LeftCombo2:
		TNT1 A 0 A_Recoil(-2)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD D 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD E 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD F 2
		TNT1 A 0 A_Saw("none","imp/melee",10,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD G 2 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD H 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD I 2
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("LeftComboCounter",2)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("LeftComboCancel")
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		Goto Super::LeftComboCancel
	LeftCombo3:
		TNT1 A 0 A_Recoil(-3)
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",36,-20,37,1,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD O 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",33,-12,35,1,0.25,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD N 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",30,-4,33,1,0.50,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD M 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",27,4,31,1,0.75,0)
		TNT1 A 0 A_Saw("none","imp/melee",15,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD L 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",24,12,29,1,1.00,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD K 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",21,20,27,1,1.25,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechSoulShot",0,0,0,4)
		FSRD J 1 
		TNT1 A 0 A_TakeInventory("LeftComboCounter",2)
		TNT1 A 0 A_GiveInventory("SwordHeldSouthpaw",1)
		Goto Super::LeftComboCancel
	RightCombo1:
		TNT1 A 0 A_Recoil(-1)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD D 3
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD E 3
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD F 3
		TNT1 A 0 A_Saw("none","imp/melee",5,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD G 3 
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD H 3
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD I 3
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("RightComboCounter",1)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto Super::RightComboCancel
	RightCombo2:
		TNT1 A 0 A_Recoil(-2)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD O 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD N 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD M 2
		TNT1 A 0 A_Saw("none","imp/melee",10,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD L 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD K 2
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD J 2
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		TNT1 AAAAA 1
		TNT1 A 0 A_GiveInventory("RightComboCounter",2)
		TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_ReFire("RightComboCancel")
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto Super::RightComboCancel
	RightCombo3:
		TNT1 A 0 A_Recoil(-3)
		TNT1 A 0 ACS_ExecuteAlways(769,0,10,0,0)
		TNT1 A 0 A_SpawnItemEx("BloodFlame",36,20,37,1,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD D 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",33,12,35,1,-0.25,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD E 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",30,4,33,1,-0.50,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD F 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",27,-4,31,1,-0.75,0)
		TNT1 A 0 A_Saw("none","imp/melee",0,"SwordPuff")
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD G 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",24,-12,29,1,-1,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD H 1 
		TNT1 A 0 A_SpawnItemEx("BloodFlame",21,-20,27,1,-1.25,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_LeechVampiricShot",0,0,0,4)
		FSRD I 1 
		TNT1 A 0 A_TakeInventory("RightComboCounter",2)
		Goto Super::RightComboCancel
	}
}

ACTOR SpecialLeech : CustomInventory
{
	XScale 1
	YScale 0.65
	Inventory.PickupMessage "the vampiric energies of the leech sword are now at your disposal."
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("Satanic_SoulAmmoNotTheLastOne",0,0,0,random(-5,5),random(-5,5),random(1,5))
	SpawnLoop:	
		WFR1 A 4 BRIGHT Light("weaponpickuplight")
		Loop
	Pickup:
		TNT1 A 0 A_GiveInventory("Satanic_Leech",1)
		Stop
	}
}

ACTOR RightComboCounter : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 2
}

ACTOR LeftComboCounter : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 2
}

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

ACTOR BloodFlame
{
	+BRIGHT
	+NOINTERACTION
	Scale 0.10
	RenderStyle "Add"
	Alpha 0.80
	Translation "224:231=176:191","160:167=176:191"
	States
	{
	Spawn:
		FIRE CDEFGH 3
		Stop
	}
}

ACTOR SmallBloodFlame : BloodFlame
{
	Scale 0.05
	States
	{
	Spawn:
		FIRE CDEFGH 5
		Stop
	}
}

Actor Satanic_LeechSoulShot
{
	Speed 32
	Height 2
	Radius 4
	Mass 19
	Damage 6
	DamageType DrainMana
	PROJECTILE
	+RIPPER
	States
	{
	Spawn:
		NONE A 4
		Stop	
	Death: 
		NONE A 0
		Stop
    }
}

Actor Satanic_LeechVampiricShot
{
	Speed 32
	Height 2
	Radius 4
	Mass 19
	Damage 6
	DamageType DrainHealth
	PROJECTILE
	+RIPPER
    States
	{
	Spawn:
		NONE A 4
		Stop	
	Death: 
		NONE A 0
		Stop
    }
}