ACTOR "Demon Tech Railgun" : Weapon 16657
{
//$Category Weapons/LCA
//$Sprite DRGIA0
//$Title "Demon Tech Railgun"
	Scale 0.8
	Weapon.PreferredSkin "DTechRailgun-Marine"
	Weapon.Selectionorder 4000
	Weapon.KickBack 200
	Weapon.AmmoUse 10
	Weapon.AmmoGive 60
	Weapon.AmmoGive2 60
	Weapon.AmmoType "DemonAmmoCharge"
	Weapon.AmmoType2 "DemonAmmo"
	Inventory.PickupSound "weapons/pickupdtrg"
	Inventory.Pickupmessage "Demon Tech Railgun"
	Obituary "%o sucked on %k's Demon Tech Railgun slug."
	DamageType "DTRailgun"
	Decal GreenRocketScorch
	AttackSound "weapons/dtrailf"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOALERT  
	+WEAPON.NOAUTOAIM
	+INVENTORY.UNDROPPABLE
	States {
  Deselect:
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"Deselect2")
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	DRGS JIHGF 1 A_Lower
    Wait
  Deselect2:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_TakeInventory("RailgunAction",1)
	DRGS EDCBA 1 A_Lower
    Wait	
  Ready:
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,0)
	TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",0,"ReadyEmpty")
	TNT1 A 0 A_PlaySound("weapons/dtrgselect")
	DRGS FGHIJ 1
	Goto RealReady
  ReadyEmpty:
    TNT1 A 0 A_PlaySound("weapons/dtrgselect")
	DRGS ABCDE 1
	Goto RealReady
  RealReady:
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"Ready2")
	DRGG D 3 A_WeaponReady
    Goto RealReady+1
  ReadyPulse:
    TNT1 A 0 A_PlayWeaponSound("weapons/dtrgselect")
	DRGS ABCDE 1
    Goto Ready2
  Ready2:
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,2)
	TNT1 A 0
	Goto RealReady+1
    TNT1 A 0 A_PlayWeaponSound("weapons/dtrailgunhum")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	//TNT1 A 0 A_JumpIfInventory("RailgunAction",1,2)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG 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)
	DRGG C 1 A_WeaponReady
    Loop
  Select:
    TNT1 A 0 A_Raise
    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("DTRail", 0, 0, 0, 5)
    DRGF A 2 Bright A_RailAttack(450, 0, 1, "00 FF 85", None, 0, 0, "PlayerRailPuffGreen", 0, 0, 8192, 35, 0.5, 0.5, "DTRailCoreTrail")
	//TNT1 A 0 A_PlaySound("weapons/dtrailf", 0)
	DRGF B 2 Bright A_Light2
	TNT1 A 0 A_Light0
	TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,"ChargedRecoil")
	DRGF KLMN 2
	DRGF OPQ 1
	DRGG D 40
    Goto RealReady+1
  ChargedRecoil:
    DRGF CDEF 2
	DRGF GHI 1
	DRGF J 40
	Goto Ready2
  Empty:
    DRGG D 15 A_PlaySound("weapons/click2")
  AltFire:
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",60,"Ready2")
    TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",10,8)
    TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,1)
	Goto RealReady
	DRGR WXYZ 2
    TNT1 A 0 A_Jump(256,6)
    TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,1)
	Goto Ready2
	DRGR ABCDEF 2
	DRGR G 4 A_PlayWeaponSound("weapons/demontecheject")
	TNT1 A 0 A_PlayWeaponSound("weapons/demontechsteam")
	DRGR HIJ 2
	DRGR K 3
	DRGR L 20 A_FireCustomMissile("DemonTechEmptyMagSpawner", random(-13,-15), 0, 2, 1)
	DRGR MNO 1
	DRGR PQ 2
	DRGR R 4
	DRGR R 6 A_PlayWeaponSound("weapons/demontechload")
	TNT1 A 0 A_JumpIfInventory("DemonAmmo",10,"Reload")	
	DRGR S 4
	DRGR T 3 A_PlayWeaponSound("weapons/demontechclick")
	DRGR U 2
	DRGR V 4
	Goto Ready2
  Reload:
    TNT1 A 0 A_TakeInventory("DemonAmmo",10)
	TNT1 A 0 A_GiveInventory("DemonAmmoCharge",10)
	TNT1 A 0 A_JumpIfInventory("DemonAmmoCharge",60,"Full")
	TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"Reload")
	Goto AltFire+30
  Full:
    TNT1 A 0
	Goto AltFire+30
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto RealReady
    TNT1 A 0
	Goto Ready
  GrenadeToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_JumpIfInventory("CellCharge",10,"GrenadeToss2")
	DRGS EDCBA 1
	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)
	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
	Goto RealReady+2
  GrenadeToss2:
	DRGS EDCBA 1
	TNT1 A 6
	HGRN ABC 1
	HGRN D 3
	HGRN EFGHI 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
	Goto ReadyPulse+1
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto RealReady
    TNT1 A 0
	Goto RealReady
  MineToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_JumpIfInventory("CellCharge",10,"MineToss2")
	DRGS EDCBA 1
	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
	Goto RealReady+2
  MineToss2:
	DRGS EDCBA 1
	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
	Goto ReadyPulse+1
  Spawn:
    DRGI A -1
    Stop
    }
}

ACTOR DemonAmmoCharge : Ammo {
	Inventory.Amount 0
	Inventory.MaxAmount 60
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 60
	Inventory.Icon "DRGIA0"
	+IGNORESKILL
}

ACTOR PlayerRailPuffGreen : BulletPuff
{
DamageType "PlayerDTRG"
+MTHRUSPECIES
States
{
Spawn:
	TNT1 A 0
	TNT1 A 1 A_SpawnItem("RailgunImpactEffectGreen")
	Stop
	}
}

ACTOR DTRail : DarkCyberRail
{
Radius 6
Height 12
Speed 500
Scale 0.25
DamageType "PlayerDTRG"
Damage (Random(60,80))
SeeSound "weapons/dtrail"
MissileType "DTRailTrail"
MissileHeight 8
Species "Player"
//DeathSound "weapons/dtrailimpact"
DeathSound "cyberrail/impact"
+RIPPER
+THRUSPECIES
+EXTREMEDEATH
+BLOODLESSIMPACT
States
{
Spawn:
    TNT1 A 1 Bright
    Loop
Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("BFGShockwave", 0, 0, 0, 0, 0, 0, 0, 128)
    TNT1 AAAA 0 A_CustomMissile("GreenKaboom2", 0, 0, random(0,360), 2, random(0,360))	
	TNT1 A 1 A_SpawnItem("RailGunImpactEffectGreen")
	Stop
	}
}

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

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

ACTOR DTRailCoreTrail : DTRailTrail
{
+NOGRAVITY
+NOBLOCKMAP
+NOCLIP
+NOINTERACTION
+CLIENTSIDEONLY
RenderStyle Add
Alpha 0.75
Scale 0.50
States
{
Spawn:
	TNT1 AA 0
BurnOut:
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 A 1 Bright A_FadeOut(0.01)
	X020 B 1 Bright A_FadeOut(0.01)
	X024 C 1 Bright A_FadeOut(0.01)

	X020 A 2 Bright A_FadeOut(0.01)
	X024 B 2 Bright A_FadeOut(0.01)
	X020 C 2 Bright A_FadeOut(0.01)
	X024 A 2 Bright A_FadeOut(0.01)
	X020 B 2 Bright A_FadeOut(0.01)
	X024 C 2 Bright A_FadeOut(0.01)

	X020 D 2 Bright
	X024 E 2 Bright
	X020 F 2 Bright
	Stop
}
}

ACTOR PlayerDTRail : DTRail
{
   DamageType "PDTBFG"
   Species "Player"  
}

ACTOR PlayerRailgunShotTestSpawner
{
Radius 1
Height 2
+NOGRAVITY
+NOBLOCKMAP
+NOCLIP
+NOINTERACTION
-RANDOMIZE
Projectile
States
{
Spawn:
  TNT1 A 0
  TNT1 A 0 A_CustomMissile("DTRail", 8, 0, 0, CMF_AIMDIRECTION) // CMF_AIMOFFSET
  TNT1 A 0 A_CustomMissile("DTRailCore", 8, 0, 0, CMF_AIMDIRECTION) // CMF_AIMOFFSET
  MISL BCD 30
  Loop
}
}

ACTOR DemonTechRailGunTrailSpark
{ 
    RenderStyle Add
    Scale 0.025
    Alpha 0.95
    +NOINTERACTION
    +NOGRAVITY
    States
    {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	SPKG A 0 A_JumpIf(ScaleX <= 0, "NULL")
	SPKG A 0 A_SetScale(ScaleX-0.0008)
    SPKG A 1 bright A_ChangeVelocity (frandom(-0.2, 0.2), frandom(-0.2, 0.2), frandom(-0.2, 0.2), 0)
    SPKG A 2 bright A_FadeOut(0.05)
    Loop
  Toaster:
    TNT1 A 0
    Stop
    }
}