ACTOR " Demon Tech Rifle " : "Demon Tech Rifle " replaces "Demon Tech Rifle "
{
Weapon.SisterWeapon "Powered Demon Tech Rifle"
}

ACTOR "Powered Demon Tech Rifle" : " Demon Tech Rifle "
{
   Weapon.AmmoUse 2
   Weapon.SisterWeapon " Demon Tech Rifle "
   +WEAPON.POWERED_UP
   States
   {
   Ready:
     TNT1 A 0 A_PlayWeaponSound("weapons/demontechload")
	 STRS ABCDE 1
   ReadyLoop:
     TNT1 A 0 A_JumpIfInventory("DemonMagazine",1,2)
	 TNT1 A 0
	 Goto NoBuzzing
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady	 
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK AAA 1 A_WeaponReady
	 TNT1 A 0 A_PlaySound("weapons/demontechidle")
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK BB 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK BB 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK CC 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK CC 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK DD 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK DD 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK EE 1 A_WeaponReady
	 TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	 STEK EE 1 A_WeaponReady
     Goto ReadyLoop
   NoBuzzing:
     TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	 TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
     STEK A 1 A_WeaponReady
	 Loop
   Deselect:
     TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
     STEK A 1 A_Lower
     Goto Deselect+1
   Select:
	 TNT1 A 0 A_Raise
	 Wait
   Fire:
     TNT1 A 0 A_JumpIfNoAmmo("Empty")
	 TNT1 A 0 A_AlertMonsters
     TNT1 A 0 A_GunFlash
	 TNT1 A 0 Radius_Quake(4,2,0,1,0)
     TNT1 A 0 A_Light1
	 TNT1 A 0 A_PlaySound("weapons/demontechfire")
     STKF A 2 Bright A_FireCustomMissile("PoweredDemonTechProjectile",Random(100,-100)/100.00,1,0,0,0,Random(100,-100)/100.00)
	 STKF B 1 Bright A_Light2
     STKF C 2 A_Light0
     TNT1 A 0 A_ReFire
     Goto ReadyLoop
   Empty:
     STEK A 10 A_PlayWeaponSound("weapons/click2")	 
   AltFire:
  	 TNT1 A 0 A_JumpIfInventory("DemonMagazine",60,2)
     TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,2)
	 TNT1 A 0
	 Goto ReadyLoop
     STKR AB 2
	 STKR C 3
	 STKR D 4 A_PlayWeaponSound("weapons/demontecheject")
	 TNT1 A 0 A_PlayWeaponSound("weapons/demontechsteam")
	 STKR EFG 1 Radius_Quake(2,2,0,1,0)
	 STKR H 2 Radius_Quake(2,2,0,1,0)
	 STKR I 3 Radius_Quake(2,2,0,1,0)
	 STKR J 4 A_FireCustomMissile("DemonTechEmptyMagSpawner", 0, 0, 0, 1)
	 STKR K 15 
	 STKR LM 2
	 STKR N 2 A_PlayWeaponSound("weapons/demontechload")
	 TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"Reload")	 
	 STKR O 8
	 STKR O 2 A_PlayWeaponSound("weapons/demontechclick")
     STKR CB 3
	 STKR A 2
	 Goto ReadyLoop
   Reload:
	 TNT1 A 0 A_TakeInventory("DemonAmmo",1)
	 TNT1 A 0 A_GiveInventory("DemonMagazine",1)
	 TNT1 A 0 A_JumpIfInventory("DemonMagazine",60,"Full")
	 TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"Reload")
	 Goto AltFire+19
   Full:
     TNT1 A 0
	 Goto AltFire+19
   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") 
	 STRS 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 Ready+1
   MineCheck:
	 TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	 TNT1 A 0 A_TakeInventory("MineAction",1)
	 Goto Ready+6
   MineToss:
  	 TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	 STRS 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 Ready+1		 
   Spawn:
     STEP A -1
     Stop
     }
}

ACTOR PoweredDemonTechProjectile : DemonTechProjectile
{
   Speed 70
   Damage 16
   Scale 0.1
   Decal Scorch
   +NODAMAGETHRUST
   States
   {
   Spawn:
	  TNT1 A 0
	  TNT1 A 0 A_Jump(128,"Spawn2")
   Normal:
   	  TNT1 A 0 A_Jump(128,"NormalFX")
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   NormalFX:
	  TNT1 A 0 A_SpawnItemEx("RDTechLightning",Random(1,-1),Random(1,-1),Random(1,-1),0,0,0,0,128)
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
	  TNT1 A 0 A_SpawnItemEx("RDTechLightning2",Random(1,-1),Random(1,-1),Random(1,-1),0,0,0,0,128)
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Goto Normal
   Spawn2:
	  TNT1 A 0 A_Jump(128,"Spawn2FX")
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail2",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   Spawn2FX:
	  TNT1 A 0 A_SpawnItemEx("RDTechLightning",Random(1,-1),Random(1,-1),Random(1,-1),0,0,0,0,128)
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
	  TNT1 A 0 A_SpawnItemEx("RDTechLightning2",Random(1,-1),Random(1,-1),Random(1,-1),0,0,0,0,128)
      PDTS A 1 Bright A_SpawnItemEx("PoweredDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Goto Spawn2
   Death:
   	  TNT1 A 0
	  TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 A 0 A_SpawnItemEx("PoweredDemonTechEx",0,0,0,0,0,0,0,128,0)
	  TNT1 AAA 0 A_CustomMissile("Kaboom10", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 A 1 Bright A_Explode(80,60)
      Stop
	  }
}

ACTOR PoweredDemonTechEx : DemonTechEx
{
Scale 0.8
States
{
Spawn:
SRPG BCDEF 3 Bright A_FadeOut(0.1)
Stop
}
}

ACTOR PoweredDemonTechTrail : BFG9500Trail
{
Scale 0.04
Alpha 0.65
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 A 2
    PDTT AAAAAABBBBBB 1 Bright A_FadeOut(0.05)
    Stop
    }
}

ACTOR PoweredDemonTechTrail2 : DemonTechTrail
{
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 A 2
    PDTT AAAAAACCCCC 1 Bright A_FadeOut(0.05)
    Stop
    }
}