ACTOR PoweredDemonTechRailgun : "Demon Tech Railgun"
{
  Decal Scorch
  Weapon.SisterWeapon "Demon Tech Railgun "
  +WEAPON.POWERED_UP
  States 
  {
	Spawn:
		PDRI A -1
		Loop
	Ready:
		TNT1 A 0 A_PlaySound("weapons/dtrgselect")
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ChargeUp")
		Goto EmptyUp
	EmptyUp:
		TNT1 AAA 0 A_StopSound(6)
		PDRS FGHIJ 1
		Goto ReadyEmpty
	ChargeUp:
		PDRS ABCDE 1
		Goto ReadyCharge
	ReadyEmptyStart:
		TNT1 AAA 0 A_StopSound(6)
		PDRG D 1 A_WeaponReady(WRF_NOFIRE)
	ReadyEmpty:
		PDRG D 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ReadyCharge")
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		Loop
	ReadyChargeStart:
		PDRG AABBCC 1 A_WeaponReady(WRF_NOFIRE)
	ReadyCharge:
		TNT1 A 0 A_PlaySound("weapons/dtrailgunhum",6,1.0,1)
		PDRG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		PDRG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ReadyCharge")
		Goto ReadyEmptyStart
	Select:
		TNT1 A 0 A_Raise
		Wait
	Deselect:
		TNT1 A 0
		TNT1 AAA 0 A_StopSound(6)
		TNT1 A 0 A_PlaySound("weapons/weapondown",CHAN_WEAPON)
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0 A_TakeInventory("RailgunAction",1)
		TNT1 A 0 A_TakeInventory("MineAction",1)
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"Deselect2")
		PDRS JIHGF 1 A_Lower
		Wait
	Deselect2:
		PDRS EDCBA 1 A_Lower
		Wait
	Fire:
		TNT1 A 0 A_JumpIfNoAmmo("Empty")
		TNT1 A 0 A_AlertMonsters  
		TNT1 A 0 Radius_Quake(12,4,0,1,0)
		TNT1 A 0 A_GunFlash
		TNT1 A 0 A_Light1
		TNT1 A 0 A_FireCustomMissile("PlayerPoweredDTRail",0,0,0,5)
		PDRF A 2 Bright A_RailAttack(750,0,1,"00 FF 85",None,0,0,"PlayerRailPuffRed",0,0,8192,35,0.5,0.5,"PoweredDTRailCoreTrail")
		PDRF B 2 Bright A_Light2
		TNT1 A 0 A_Light0
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ChargedRecoil")
		Goto EmptyRecoil
	EmptyRecoil:
		TNT1 AAA 0 A_StopSound(6)
		PDRF KLMN 2
		PDRF OPQ 1
		PDRG D 1
		PDRG DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOBOB)
		Goto ReadyEmptyStart
	ChargedRecoil:
		PDRF CDEF 2
		PDRF GHI 1
		PDRF J 1
		PDRF JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOBOB)
		Goto ReadyChargeStart
	Empty:
		TNT1 A 0 A_PlaySound("weapons/click2")
		PDRG DDDDDDDDDDDDDDD 1 A_WeaponReady(WRF_NOFIRE)
	AltFire:
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",60,"ReadyChargeStart")
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ChargeReload")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,"EmptyReload")		
		Goto ReadyEmptyStart
	EmptyReload:
		PDRR WXYZ 2
		Goto ChargeReload2
	ChargeReload:
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,1)
		Goto ReadyChargeStart
		PDRR ABCD 2
	ChargeReload2:
		PDRR EF 2
		PDRR G 4 A_PlaySound("weapons/demontecheject",6)
		TNT1 A 0 A_PlaySound("weapons/demontechsteam",1)
		PDRR HIJ 2
		PDRR K 3
		PDRR L 20 A_FireCustomMissile("DemonTechEmptyMagSpawner",random(-13,-15),0,2,1)
		PDRR MNO 1
		PDRR PQ 2
		PDRR R 4
		PDRR R 6 A_PlayWeaponSound("weapons/demontechload")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,"Reload")
	Low:
		PDRR S 4
		PDRR "Y" 3 A_PlayWeaponSound("weapons/demontechclick")
		PDRR "X" 2
		PDRR W 4
		Goto ReadyEmptyStart
	Full:
		PDRR S 4
		PDRR T 3 A_PlayWeaponSound("weapons/demontechclick")
		PDRR U 2
		PDRR V 4
		Goto ReadyChargeStart
	Reload:
		TNT1 A 0 A_TakeInventory("DemonAmmo",10,TIF_NOTAKEINFINITE)
		TNT1 A 0 A_GiveInventory("DemonAmmoCharge",10)
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",60,"Full")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,"Reload")
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"Full")
		Goto Low
	GrenadeCheck:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
		TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ReadyChargeStart")
		Goto ReadyEmptyStart
	GrenadeToss:
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"GrenadeToss1")
		PDRS JIHGF 1
		Goto GrenadeToss2
	GrenadeToss1:	
		PDRS EDCBA 1
	GrenadeToss2:
		TNT1 A 4
		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,TIF_NOTAKEINFINITE)
		HGNE A 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0,false)
		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
		Goto Ready+1
	MineCheck:
		TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
		TNT1 A 0 A_TakeInventory("MineAction",1)
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ReadyChargeStart")
		Goto ReadyEmptyStart
	MineToss:
		TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
		TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"MineToss1")
		PDRS JIHGF 1
		Goto MineToss2
	MineToss1:
		PDRS EDCBA 1
	MineToss2:
		TNT1 A 8
		TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
		MINE ABCDEF 1
		TNT1 A 0 A_TakeInventory("MineAmmo",1,TIF_NOTAKEINFINITE)	  
		MINE G 1 A_FireCustomMissile("ThrownMine",0,0,0,0,false)
		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
		Goto Ready+1
    }
}

ACTOR PlayerRailPuffRed : BulletPuff
{
States
{
Spawn:
	TNT1 A 0
	TNT1 A 1 A_SpawnItem("RailgunImpactEffectRed")
	Stop
	}
}

ACTOR PoweredDTRail : DTRail
{
Damage (Random(75,110))
SeeSound "weapons/dtrail"
MissileType "PoweredDTRailTrail"
Species ""
States
{
Spawn:
    TNT1 A 1 Bright
    Loop
Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 0, 0, 0, 0, 0, 128)
    TNT1 AAAA 0 A_CustomMissile("EKaboomLN2", 0, 0, random(0,360), 2, random(0,360))	
	TNT1 A 1 A_SpawnItem("RailGunImpactEffectRed")
	Stop
	}
}

ACTOR PoweredDTRailTrail : DTRailTrail
{
Radius 6
Height 12
Scale 0.1
States
{
Spawn:
	TNT1 A 0
	TNT1 A 1 bright A_SpawnItemEx("EBFGParticle", random(4,-4), random(4,-4), random(2,-6), 0, 0, 0, 0, 128, 0)
	P401 ABC 2 Bright A_FadeOut(0.04)
	Loop
}
}

ACTOR PoweredDTRailCore : DTRail
{
Damage 0
Speed 500
MissileType "PoweredDTRailCoreTrail"
SeeSound ""
DeathSound ""
States
{
Death:
	TNT1 A 0
	Stop
}
}

ACTOR PoweredDTRailCoreTrail : DTRailTrail
{
+NOGRAVITY
+NOBLOCKMAP
+NOCLIP
+NOINTERACTION
+CLIENTSIDEONLY
RenderStyle Add
Alpha 0.75
Scale 0.50
States
{
Spawn:
	TNT1 AA 0
BurnOut:
	PDTP ABC 1 Bright A_FadeOut(0.01)
	PDTP BABC 1 Bright A_FadeOut(0.01)
	PDTP BABC 1 Bright A_FadeOut(0.01)
	PDTP BABC 1 Bright A_FadeOut(0.01)
	PDTP BABC 1 Bright A_FadeOut(0.01)
	PDTP BABC 1 Bright A_FadeOut(0.01)
	PDTP B 1 Bright A_FadeOut(0.01)
	PDTP D 2 Bright
	PDTP E 2 Bright
	PDTP F 2 Bright
	Stop
}
}

ACTOR PlayerPoweredDTRail : PoweredDTRail
{
   DamageType "PDTBFG"
   Species "Player"  
}