Actor PlasmaRifleGiver : CustomInventory Replaces "Plasma Rifle"
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
Scale 0.95
-COUNTITEM
+INVENTORY.BIGPOWERUP
+INVENTORY.AUTOACTIVATE
+INVENTORY.IGNORESKILL
Inventory.PickupSound "weapons/pickuphr"
Inventory.PickupMessage "Plasma Rifle"
States
{
   Spawn:
     TNT1 A 0
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckWeaponWorldSpawn") == 2,1)
	 Goto SpawnDropped
	 PLAS A -1
	 Wait
   SpawnDropped:
     TNT1 A 1 A_SpawnItem("PlasmaRifleGiverDropped")
	 Stop
   Pickup:
	 TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("MPWeaponCheck") == 2,"PickupMP")
	 TNT1 A 0 A_JumpIfInventory("ShockDRifle",1,"GiveUpgrade")
	 TNT1 A 0 A_GiveInventory("NewCell",40)
	 TNT1 A 1 A_GiveInventory(" Plasma Rifle ",1)
	 Stop
   GiveUpgrade:
     TNT1 A 0 A_GiveInventory("NewCell",40)
     TNT1 A 1 A_GiveInventory("ShockDRifle",1)
	 Stop
   PickupMP:
     TNT1 A 0 A_JumpIfInventory(" Plasma Rifle ",1,"Nope")
	 TNT1 A 0 A_JumpIfInventory("ShockDRifle",1,"Nope")
	 TNT1 A 0 A_GiveInventory("NewCell",40)
     TNT1 A 1 ACS_NamedExecuteAlways("SpawnWeaponActive",0,6)
	 Fail
   Nope:
     PLAS A 1
	 Fail
	 }
}

Actor PlasmaRifleGiverDropped : PlasmaRifleGiver
{
+INVENTORY.TOSSED
+INVENTORY.NEVERRESPAWN
States
{
  Spawn:
   PLAS A -1
   Loop
  Pickup:
   TNT1 A 0 A_JumpIfInventory("ShockDRifle",1,"GiveUpgrade")
   TNT1 A 0 A_GiveInventory("NewCell",40)
   TNT1 A 1 A_GiveInventory(" Plasma Rifle ",1)
   Stop
   }
}

ACTOR PlasmaRifleStartToken : Inventory {Inventory.MaxAmount 1}

Actor " Plasma Rifle " : "Plasma RifleNEO"
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
Weapon.AmmoGive 0
Weapon.AmmoGive2 0
Dropitem "PlasmaRifleGiverDropped"
+INVENTORY.UNDROPPABLE
States
{
  Deselect:
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	TNT1 A 0 A_Lower
	PR2Z A 1 A_Lower
    Goto Deselect+1
  Ready:
    TNT1 A 0 A_JumpIfInventory("PlasmaRifleStartToken",1,1)
	Goto Startup
	TNT1 A 0 A_PlayWeaponSound("weapons/pickuphr")
	PR3Z XWVUTSRQPO 1
  ReadyLoop:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
    PR2Z A 1 A_WeaponReady
    Loop
  Startup:
    TNT1 A 0 A_GiveInventory("PlasmaRifleStartToken",1)
	TNT1 A 0 A_PlaySound("weapons/foley",CHAN_WEAPON)
	PR1Z ABCDEFG 1
	TNT1 A 0 A_PlaySound("PlasmaRifle/CellMagIn",6)
	PR1Z HI 2
  Reload2:
	TNT1 A 0 A_TakeInventory("NewCell",1)
	TNT1 A 0 A_GiveInventory("PlasmaCell",1)
	TNT1 A 0 A_JumpIfInventory("PlasmaCell",50,2)
	TNT1 A 0 A_JumpIfInventory("NewCell",1,"Reload2")
	PR1Z JKLMNO 2
	PR1Z PQRSTU 1
	Goto ReadyLoop
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	PR3Z OPQRSTUVWX 1
	TNT1 A 1
	Wait
  Fire:
	TNT1 A 0 A_JumpIfNoAmmo("Empty")
	TNT1 A 0 A_AlertMonsters
	TNT1 A 0 Radius_Quake(1,2,0,1,0)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlaySound("weapons/hrfire")
	PR2Z C 2 A_FirePlasma
	PR2Z D 1 Bright
	TNT1 A 0 A_JumpIfInventory("PlasmaCell",1,1)
	Goto Recoil
	TNT1 A 0 A_ReFire
  Recoil:
	PR2Z EFGH 1
	PR2Z I 2
	PR2Z J 7
	PR2Z KLMNOP 1
	Goto ReadyLoop
  Empty:
    PR2Z A 10 A_PlayWeaponSound("weapons/click3")
  AltFire:
  	TNT1 A 0 A_JumpIfInventory("PlasmaCell",50,"ReadyLoop")
    TNT1 A 0 A_JumpIfInventory("NewCell",1,1)
	Goto ReadyLoop
	TNT1 A 0 A_PlayWeaponSound("weapons/plasmacellout")
	TNT1 A 0 A_PlaySound("weapons/foley",CHAN_AUTO)
	TNT1 A 0 A_FireCustomMissile("PlasmaCellCasingSpawner",0,0,0,1)
	PR2Z QRSTU 1
	PR2Z VWX 2
	PR2Z "Y" 3
	PR2Z "Z" 5
	PR3Z ABC 2
  Reload:
	TNT1 A 0 A_TakeInventory("NewCell",1)
	TNT1 A 0 A_GiveInventory("PlasmaCell",1)
	TNT1 A 0 A_JumpIfInventory("PlasmaCell",50,2)
	TNT1 A 0 A_JumpIfInventory("NewCell",1,"Reload")
	TNT1 A 0 A_PlayWeaponSound("PlasmaRifle/CellMagIn")
	PR3Z DEF 2
	PR3Z GHIJKLMN 1
	PR1Z STU 1
	Goto ReadyLoop
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
  GrenadeToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	PR3Z OPQRSTUVWX 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+2
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
  MineToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
	PR3Z OPQRSTUVWX 1
	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 JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	Goto Ready+2
  Flash:
	TNT1 A 2 Bright A_Light1
	PR2Z B 2 Bright A_Light2
	Goto LightDone	
    }
}

ACTOR ShockDRifleUpgradeToken : Inventory {inventory.maxamount 1}
ACTOR ShockDRifleStartToken : Inventory {inventory.maxamount 1}
ACTOR ShockDRifleSwitch : Inventory {inventory.maxamount 1}

ACTOR ShockDRifleCharge : Inventory {inventory.maxamount 55}

Actor "ShockDRifle" : Weapon
{ //Scripted (Mutiplayer weapon spawn can break as well as functions in the upgrade ACS code... this counts for all upgradable weapon actors)
//Creator: Fluffy
//Origin: Nexus Infinity
//Sprite: DRXX
//Title: "Shock Disintegrater Rifle" 
Scale 0.8
Weapon.KickBack 500 //200
Weapon.Selectionorder 4000
Decal RailScorch
Weapon.AmmoType "SDRCell"
Weapon.AmmoType2 "Dcell"
Weapon.AmmoGive 0
Weapon.AmmoGive2 0
Weapon.AmmoUse 5
Inventory.PickupSound "shockd/pickup"
Inventory.PickupMessage "Shock Disintegrater Rifle"
Obituary "%o was shocked by %k's Shock D-Rifle."
Dropitem "PlasmaRifleGiverDropped"
Tag "Shock Disintegrater Rifle"
+WEAPON.AMMO_OPTIONAL
+WEAPON.NOALERT  
+WEAPON.NOAUTOAIM
+WEAPON.CHEATNOTWEAPON
+INVENTORY.UNDROPPABLE
States
{
  Spawn:
	DR99 A 1
	Wait
  Select:
	TNT1 A 0 A_Raise
    Wait
  Deselect:
    TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto Deselect2
	TNT1 A 0 A_Lower
	DR20 A 1 A_Lower
    Goto Deselect+2
  Deselect2:
	TNT1 A 0 A_Lower
	DR20 P 1 A_Lower
	Loop
  Startup:
    TNT1 A 0 A_GiveInventory("ShockDRifleStartToken",1)
	TNT1 A 0 A_GiveInventory("ShockDRifleUpgradeToken",1)
	TNT1 A 0 A_TakeInventory(" Plasma Rifle ",1)
	TNT1 A 0 A_PlaySound("executor/foley",7)
	DR22 RSTU 1
	DR20 VWXYZ 2
	DR21 AK 2
	Goto AltFire+27
  ReadyLoopReady:
    TNT1 A 0 A_PlaySound("shockd/beep",7)
	Goto ReadyLoop
  Ready:
    TNT1 A 1
    TNT1 A 0 A_JumpIfInventory("ShockDRifleStartToken",1,1)
	Goto Startup
    TNT1 A 0 A_PlaySound("shockd/ready",CHAN_WEAPON)
	TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto Ready2
	DR19 ABCDEFGHIJKLMNOP 1
  ReadyLoop:
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto ReadyLoop2
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon")
    DR20 A 1 A_WeaponReady
	Loop
  Ready2:
    DR19 ABCDEFGH 1
	DR22 JKLMNOPQ 1
  ReadyLoop2:
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,"ReadyLoopReady")
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAction",1,"GrenadeCheck")
	TNT1 A 0 A_JumpIfInventory("MineAction",1,"MineCheck")
	TNT1 A 0 A_JumpIfInventory("RailgunAction",1,"Zoom")
	TNT1 A 0 A_JumpIfInventory("WEMAction",1,"LowerWeapon2")
    DR20 P 1 A_WeaponReady
	Loop
  LowerWeapon:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	DR19 PONMLKJIHGFEDCBA 1
	TNT1 A 1
	Wait
  LowerWeapon2:
	TNT1 A 0 A_TakeInventory("WEMAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	DR22 QPONMLKJ 1
	DR19 HGFEDCBA 1
	TNT1 A 1
	Wait
  Fire:
    TNT1 A 0 A_JumpIfNoAmmo("Empty")
    TNT1 A 0 A_JumpIfInventory("ShockDRifleSwitch",1,"DBuff")
    TNT1 A 0 A_AlertMonsters  
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
	TNT1 A 0 A_JumpIfInventory("SDRCell",10,"ChargedRecoil")
	TNT1 A 0 A_PlaySound("shockd/primefire",CHAN_WEAPON)
	TNT1 A 0 A_PlaySound("shockd/primefiredry",6)
    TNT1 A 0 A_FireCustomMissile("ShockDRRail",0,0,0,5)
	TNT1 A 0 A_FireCustomMissile("ShockDImpact",0,0,0,5)
    DR20 B 1 Bright A_RailAttack(Random(400,450),0,1,none,none,RGF_SILENT|RGF_NOPIERCING|RGF_FULLBRIGHT,0,"ShockRailPuff",0,0,0,0,4,0,"ShockDTrail",1)
	TNT1 A 0 Radius_Quake(0.1,6,0,1,0)
	DR20 J 1 Bright A_Light2
	DR20 K 5 A_Light0
	DR20 LMNO 2
	DR20 P 35 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto ReadyLoop
  ChargedRecoil:
	TNT1 A 0 A_PlaySound("shockd/primefire",CHAN_WEAPON)
	TNT1 A 0 A_PlaySound("shockd/primefire2",6)
    TNT1 A 0 A_FireCustomMissile("ShockDRRail",0,0,0,5)
	TNT1 A 0 A_FireCustomMissile("ShockDImpact",0,0,0,5)
    DR20 B 1 Bright A_RailAttack(Random(400,450),0,1,none,none,RGF_SILENT|RGF_NOPIERCING|RGF_FULLBRIGHT,0,"ShockRailPuff",0,0,0,0,4,0,"ShockDTrail",1)
	TNT1 A 0 Radius_Quake(0.1,6,0,1,0)
	DR20 C 1 Bright A_Light2
	DR20 D 5 A_Light0
	DR20 EFGH 2
	DR20 I 35 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	TNT1 A 0 A_PlaySound("shockd/beep",7)
	DR20 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	Goto ReadyLoop
  DBuff:
    TNT1 A 0 A_JumpIfInventory("SDRCell",25,1)
	Goto Empty2
	TNT1 A 0 A_TakeInventory("ShockDRifleCharge",55)
	TNT1 A 0 A_PlaySound("shockd/charge",CHAN_WEAPON)
  DBuffCharge:
    TNT1 A 0 A_JumpIfInventory("ShockDRifleCharge",55,"DBuffFire")
    DR23 A 1 A_GiveInventory("ShockDRifleCharge",1)
    TNT1 A 0 A_ReFire(1)
	Goto DBuffStop
    DR23 B 1 A_GiveInventory("ShockDRifleCharge",1)
    TNT1 A 0 A_ReFire(1)
	Goto DBuffStop
	DR23 C 1 A_GiveInventory("ShockDRifleCharge",1)
    TNT1 A 0 A_ReFire(1)
	Goto DBuffStop
	DR20 A 1 A_GiveInventory("ShockDRifleCharge",1)
	TNT1 A 0 A_ReFire("DBuffCharge")
  DBuffStop:
	TNT1 A 0 A_PlaySound("executor/turnoff",CHAN_WEAPON)
	TNT1 A 0 A_TakeInventory("ShockDRifleCharge",55)
	Goto ReadyLoop
  DBuffFire:
    TNT1 A 0 A_JumpIfInventory("SDRCell",25,1)
	Goto Empty2
    TNT1 A 0 A_AlertMonsters 
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_Light1
	TNT1 A 0 A_PlaySound("shockd/primefire",CHAN_WEAPON)
	TNT1 A 0 A_PlaySound("shockd/dbfire",6)
    TNT1 A 0 A_FireCustomMissile("ShockDRRail2",0,0,0,5)
	TNT1 A 0 A_FireCustomMissile("ShockDImpact",0,0,0,5)
	TNT1 A 0 A_TakeInventory("SDRCell",25,TIF_NOTAKEINFINITE)
    DR20 B 1 Bright A_RailAttack(Random(400,450),0,FALSE,none,none,RGF_SILENT|RGF_NOPIERCING|RGF_FULLBRIGHT,0,"ShockRailPuff",0,0,0,0,4,0,"ShockDTrail",1)
	TNT1 A 0 Radius_Quake(0.1,6,0,1,0)
	DR20 J 1 Bright A_Light2
	DR20 K 5 A_Light0
	DR20 LMNO 2
	DR20 P 35 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
    Goto ReadyLoop
  Empty2:
    DR20 A 15 A_PlaySound("shockd/empty")
	Goto AltFire
  Empty:
    DR20 P 15 A_PlaySound("shockd/empty")
  AltFire:
    TNT1 A 0 A_JumpIfInventory("SDRCell",25,"ReadyLoop")
	TNT1 A 0 A_JumpIfInventory("Dcell",5,1)
	Goto ReadyLoop
	TNT1 A 0 A_PlaySound("executor/foley",7)
	TNT1 A 0 A_JumpIfInventory("SDRCell",5,"MaxReload")
	DR20 QRSTUVWXYZ 1
	TNT1 A 0 A_PlaySound("shockd/emptyreloadeject",CHAN_WEAPON)
	DR21 ABCDEF 2
	TNT1 A 0 A_FireCustomMissile("CellCasingSpawner",random(-13,-15),0,2,1)
	DR21 GHIJ 3
	DR21 K 10
	DR21 LMNO 2
  Reload:
    TNT1 A 0 A_TakeInventory("Dcell",5)
	TNT1 A 0 A_GiveInventory("SDRCell",5)
	TNT1 A 0 A_JumpIfInventory("SDRCell",25,"ReloadDone")
	TNT1 A 0 A_JumpIfInventory("Dcell",5,"Reload")
  ReloadDone:
	TNT1 A 0 A_JumpIfInventory("PowerDoubleFiringSpeed",1,"ReloadFaster")
	TNT1 A 0 A_JumpIfInventory("AgilityRuneRage",1,"ReloadFaster")
	TNT1 A 0 A_JumpIfInventory("TrueLegDoubleFiringSpeed",1,"ReloadFaster")
	TNT1 A 0 A_JumpIfInventory("PowerFireSpeedee",1,"ReloadFaster")
	TNT1 A 0 A_JumpIfInventory("CFSPFirepower",1,"ReloadFaster")
	TNT1 A 0 A_JumpIfInventory("DoomSlayerFirepower",1,"ReloadFaster")
	TNT1 A 0 A_PlaySound("shockd/load",CHAN_WEAPON)
	DR21 PQRST 3
	DR21 UVWXYZ 2
	DR22 ABCDEFGHI 1
	Goto ReadyLoop
  ReloadFaster:
	TNT1 A 0 A_PlaySound("shockd/loadfast",CHAN_WEAPON)
	DR21 PQRST 3
	DR21 UVWXYZ 2
	DR22 ABCDEFGHI 1
	Goto ReadyLoop
  MaxReload:
    DR22 IHGFEDCBA 1
	DR21 ZYXWVU 2
	TNT1 A 0 A_PlaySound("shockd/eject",CHAN_WEAPON)
	TNT1 A 0 A_PlaySound("executor/turnoff",6)
	DR21 TSR 3
	DR21 QP 2
	DR21 ONML 1
	Goto AltFire+26
  Zoom:
    TNT1 A 0 A_TakeInventory("RailgunAction",1)
  SwitchMode:
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto Empty
    TNT1 A 0 A_JumpIfInventory("ShockDRifleSwitch",1,"SwitchMode2")
    TNT1 A 0 A_PlayWeaponSound("shockd/switchmode")
	TNT1 A 0 A_GiveInventory("ShockDRifleSwitch",1)
	TNT1 A 0 A_Print("D-Buff Shot",1)
	DR22 VVVWWWXXX 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  SwitchMode2:
    TNT1 A 0 A_PlayWeaponSound("shockd/switchmode")
	TNT1 A 0 A_TakeInventory("ShockDRifleSwitch",1)
	TNT1 A 0 A_Print("Standard Shot",1)
	DR22 VVVWWWXXX 1 A_WeaponReady(WRF_NOFIRE)
	Goto ReadyLoop
  GrenadeCheck:
	TNT1 A 0 A_JumpIfInventory("HandGrenadeAmmo",1,"GrenadeToss")
	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	Goto ReadyLoop
  GrenadeToss:
    TNT1 A 0 A_PlayWeaponSound("weapons/weapondown") 
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto GrenadeToss2
	DR19 PONMLKJIHGFEDCBA 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+3
  GrenadeToss2:	
	DR22 QPONMLKJ 1
	DR19 HGFEDCBA 1
	TNT1 A 4
	HGRN ABCDEFGHI 1
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadepin")
	HGRN JKLM 2
	TNT1 A 11
	TNT1 A 0 A_PlayWeaponSound("weapons/hgrenadethrow")
	TNT1 A 0 A_TakeInventory("HandGrenadeAmmo",1,TIF_NOTAKEINFINITE)
	HGRN N 1 A_FireCustomMissile("ThrownGrenade",0,0,0,0)
	HGRN OPQRS 1
	HGRN TU 2
	TNT1 A 6 A_TakeInventory("HandGrenadeAction",1)
	Goto Ready+3
  MineCheck:
	TNT1 A 0 A_JumpIfInventory("MineAmmo",1,"MineToss")
	TNT1 A 0 A_TakeInventory("MineAction",1)
	Goto ReadyLoop
  MineToss:
  	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
    TNT1 A 0 A_JumpIfInventory("SDRCell",5,1)
	Goto MineToss2
	DR19 PONMLKJIHGFEDCBA 1
	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 JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	Goto Ready+3
  MineToss2:
	DR22 QPONMLKJ 1
	DR19 HGFEDCBA 1
	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 JKLM 1
	TNT1 A 5 A_TakeInventory("MineAction",1)
	Goto Ready+3
	}
}

Actor ShockDTrail : NewRailgunTrail
{
States
{
  Spawn:
	TNT1 A 2
	B3FL A 1 Bright
	Goto Spawn2
	}
}

Actor ShockDImpact : RailgunImpact { -THRUACTORS }

Actor ShockDRRail : DTRail
{
Renderstyle Add
DamageType "PlayerDBFG2"
MissileType ""
+FOILINVUL
-RIPPER
-THRUACTORS
States
{
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(32,64,0,False,32)
	TNT1 A 0 A_SpawnItemEx("T3BlueLaserFlare")
	T3FS ABCDEFGHIJKLMNOP 2 Bright A_FadeOut(0.06,1)
	Stop
	}
}

Actor ShockDRRail2 : ShockDRRail
{
States
{
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode(32,64,0,False,32)
	TNT1 A 0 A_SpawnItemEx("T3BlueLaserFlare")
	TNT1 A 0 A_RadiusGive("ShockDBuff",120,RGF_MONSTERS,1)
	T3FS ABCDEFGHIJKLMNOP 2 Bright A_FadeOut(0.06,1)
	Stop
	}
}

ACTOR ShockDBuff : Crusaderbuff //20 seconds
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_JumpIfInventory("MonsterDBuffed",1,"Nope")
	TNT1 A 0 A_GiveInventory("SDHalfDamagePower",1)
	TNT1 A 0 A_GiveInventory("MonsterDBuffed",1)
	TNT1 A 0 A_SpawnItemEx("ShockDBuffFloater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER,0,height)
	TNT1 A 0 ACS_NamedExecuteAlways("ShockDBuffMon",0)
	stop
  Nope:
    TNT1 A 1
	Fail
	}
}

ACTOR MonsterDBuffed : Inventory {inventory.maxamount 1}

ACTOR SDHalfDamagePower : PowerupGiver
{
Inventory.MaxAmount 1
Powerup.Duration -20
Powerup.Type "PowerSDHalfDamage"
+INVENTORY.AUTOACTIVATE
+INVENTORY.ALWAYSPICKUP
}

ACTOR PowerSDHalfDamage : PowerDamage { DamageFactor "Normal", 0.5 }

ACTOR ShockRailPuff : NewPlayerRailPuff { DamageType "PlayerDBFG2" +FOILINVUL }

Actor ShockDBuffFloater : PatriarchOrbitCube1
{
Scale 0.8
Alpha 1.0
Tag "\c[l5]Shock DBuff Floater\c-"
-CLIENTSIDEONLY
+NOTELEPORT
+NOBLOCKMAP
States
{
  Spawn:
    TNT1 AA 1 A_Warp(AAPTR_MASTER,0,0,tid+10,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    TNT1 A 0 A_JumpIfInventory("MonsterDBuffed",1,1,AAPTR_MASTER)
	Goto Fade
    DE45 A 1 A_Warp(AAPTR_MASTER,0,0,tid+10,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
  Fade:
	DE45 A 1 A_Warp(AAPTR_MASTER,0,0,tid+10,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_FadeOut(0.1)
	Loop
	}
}

ACTOR SDRCell : Ammo
{
Inventory.Amount 0
Inventory.MaxAmount 25
Ammo.BackpackAmount 0
Ammo.BackpackMaxAmount 25
Inventory.Icon "DR99A0"
+IGNORESKILL
}