ACTOR "PhaseRifle" : Weapon
{
   Weapon.PreferredSkin "DemonTechRifle-Marine"
   Weapon.SelectionOrder 7980
   Weapon.KickBack 60
   Weapon.AmmoUse1 1
   Weapon.AmmoGive1 0
   Weapon.AmmoGive2 30
   Scale 0.95
   Weapon.AmmoType1 "PDemonMagazine"   
   Weapon.AmmoType2 "DemonAmmo"
   Inventory.PickupMessage "Phase D-Tech Rifle"
   Inventory.PickupSound "weapons/demontechload"
   Obituary "%o didnt see %k when they were roasted by a Phase D-tech Rifle."
   Tag "Phase Rifle"
   +WEAPON.AMMO_OPTIONAL
   +WEAPON.NOALERT
   +INVENTORY.UNDROPPABLE
   States
   {
   Ready:
		TNT1 A 0 A_PlayWeaponSound("weapons/demontechload")
		PTEK ABCDE 1
   ReadyLoop:
		TNT1 A 0 A_JumpIfInventory("PDemonMagazine",1,2)
		TNT1 A 0
		Goto NoBuzzing
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady	 
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK AAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK 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")
		PTEK BB 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK BB 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK CC 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK CC 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK DD 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK DD 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK EE 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK EE 1 A_WeaponReady
		Goto ReadyLoop
	NoBuzzing:
		TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
		TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
		PTEK A 1 A_WeaponReady
		Loop
    Deselect:
	    PTEK A 1 Offset(-1,35)
		PTEK A 1 Offset(-15,39)
		PTEK A 1 Offset(-35,45)
		PTEK A 1 Offset(-55,52)
		PTEK A 1 Offset(-70,60)
		PTEK A 1 Offset(-90,69)
		PTEK A 1 Offset(-105,89)
		PTEK A 1 Offset(-125,102)
		PTEK A 1 Offset(-125,102)
		PTEK A 1 Offset(-155,108)
		PTEK A 1 Offset(-155,150)
	DeselectRaise:
		PTEK A 1 Offset(-1,0)
		PTEK A 1 A_Lower
		loop
	Select:
		PTEK A 1 Offset(-90,69)
		PTEK A 1 Offset(-70,60)
		PTEK A 1 Offset(-55,52)
		PTEK A 1 Offset(-35,45)
		PTEK A 1 Offset(-15,39)
		PTEK A 1 Offset(-1,35)
	SelectRaise:
		PTEK A 1 A_Raise
	Fire:
		TNT1 A 0 A_JumpIfNoAmmo("Empty")
		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")
		PTKF A 2 Bright A_FireCustomMissile("PPhaseDTProjectile",Random(100,-100)/100.00,1,0,0,0,Random(100,-100)/100.00)
		PTKF B 1 Bright A_Light2
		PTKF C 2 A_Light0
		TNT1 A 0 A_ReFire
		Goto ReadyLoop
	Empty:
		PTEK A 10 A_PlayWeaponSound("weapons/click2")	 
	AltFire:
	    TNT1 A 0 A_JumpIfInventory("PDemonMagazine",50,2)
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,2)
		TNT1 A 0
		Goto ReadyLoop
		PTKR AB 2
		PTKR C 3
		PTKR D 4 A_PlayWeaponSound("weapons/demontecheject")
		TNT1 A 0 A_PlayWeaponSound("weapons/demontechsteam")
		PTKR EFG 1 Radius_Quake(2,2,0,1,0)
		PTKR H 2 Radius_Quake(2,2,0,1,0)
		PTKR I 3 Radius_Quake(2,2,0,1,0)
		PTKR J 4 A_FireCustomMissile("DemonTechEmptyMagSpawner", 0, 0, 0, 1)
		PTKR K 15 
		PTKR LM 2
		PTKR N 2 A_PlayWeaponSound("weapons/demontechload")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"ReloadCheck")	 
		PTKR O 8
		PTKR O 2 A_PlayWeaponSound("weapons/demontechclick")
		PTKR CB 3
		PTKR A 2
		Goto ReadyLoop
	ReloadCheck:
	    TNT1 A 0 A_JumpIfInventory("PDemonMagazine",1,"ReloadNotFull")
		Goto ReloadFull
	ReloadFull:
	    TNT1 A 0 A_TakeInventory("DemonAmmo",1)
		TNT1 A 0 A_GiveInventory("PDemonMagazine",1)
		TNT1 A 0 A_JumpIfInventory("PDemonMagazine",50,"Full")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"ReloadFull")
		TNT1 A 0 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_GiveInventory("PhaseRifleInvisibility")
		Goto AltFire+19
	ReloadNotFull:
	    TNT1 A 0 A_TakeInventory("DemonAmmo",1)
		TNT1 A 0 A_GiveInventory("PDemonMagazine",1)
		TNT1 A 0 A_JumpIfInventory("PDemonMagazine",50,"Full2")
		TNT1 A 0 A_JumpIfInventory("DemonAmmo",1,"ReloadNotFull")
        Goto AltFire+19		
	Full:
		TNT1 AAAAA 0 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_GiveInventory("PhaseRifleInvisibility") 
		Goto AltFire+19
	Full2:
	    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") 
		PTRS 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") 
		PTRS 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		 
	GoInvisible:
		TNT1 A 0 A_GiveInventory("PhaseRifleInvisibility")
		GoTo Ready
	Spawn:
		PTEP A -1
		Stop
	}
}

Actor PhaseDTProjectile 
{
   Height 4
   Radius 4
   Speed 50
   Damage 10
   Scale 0.06
   PROJECTILE
   +THRUSPECIES
   +FORCERADIUSDMG
   DamageType "ZombieDemonTech"
   DeathSound "weapons/demontechex"
   Decal DTRScorch
   States
   {
   Spawn:
	  TNT1 A 0 A_SeekerMissile(12,0)
	  TNT1 A 0
	  TNT1 A 0 A_Jump(128,"Spawn2")
   Normal:
	  TNT1 A 0 A_SeekerMissile(12,0)
   	  TNT1 A 0 A_Jump(128,"NormalFX")
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   NormalFX:
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail",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_SeekerMissile(12,0)
	  TNT1 A 0 A_Jump(128,"Spawn2FX")
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail2",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      Loop
   Spawn2FX:
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),128)
      PTPR A 1 Bright A_SpawnItemEx("PhaseDemonTechTrail",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("PhaseDemonTechEx",0,0,0,0,0,0,0,128,0)
	  TNT1 AAA 0 A_CustomMissile("Kaboom8", 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(20,64)
      Stop
	}
}

Actor PPhaseDTProjectile : PhaseDTProjectile
{
	Species "player"
}

ACTOR PDemonMagazine : Ammo 
{
+IGNORESKILL
Inventory.Amount 0
Inventory.MaxAmount 50
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 50
Inventory.Icon "PTEPA0"
}

ACTOR PhaseRifleInvisibility : PowerInvisibility
{
  Powerup.Duration -10
  Powerup.Strength 100
  Powerup.Mode "Cumulative"
}

ACTOR PhaseDemonTechEx
{
RenderStyle Add
Alpha 0.75
Scale 0.5
PROJECTILE
+NOCLIP
States
{
Spawn:
PTXP ABCDEFGH 2 Bright A_FadeOut(0.1)
Stop
}
}

ACTOR PhaseDemonTechTrail : BFG9500Trail
{
Scale 0.04
Alpha 0.65
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 2
    PTRI AAAAAABBBBBBBB 1 Bright A_FadeOut(0.05)
    Stop
    }
}

ACTOR PhaseDemonTechTrail2 : DemonTechTrail
{
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 2
    PTRI AAAAAACCCCCCCC 1 Bright A_FadeOut(0.05)
    Stop
    }
}