Actor TechVulcanGiver : CustomInventory
{
  Scale 0.9
  Inventory.Amount 1
  Inventory.MaxAmount 0
  Inventory.InterHubAmount 0
  Inventory.PickupMessage "$NETVulcPick"
  Inventory.PickupSound "vulcan/pickup"
  Obituary "%o got plasmaficated by %k's Tech Vulcan"
  Tag "$NETVulc"
  States
  {
  Spawn:
	VULC Z 0 NoDelay ACS_NamedExecuteWithResult("WeaponListCheck",6,0)
  SpawnLoop:
	VULC Z -1
	Loop
  Pickup:
	TNT1 A 0 A_JumpIfInventory("TechVulcan",1,"JustAmmo")
  All:
	TNT1 A 0 A_GiveInventory("TechVulcan",1)
	TNT1 A 0 A_JumpIfInventory("TechVulcanGiverCheck",1,"HoldAndDestroy")
	TNT1 A 0 A_GiveInventory("TechVulcanGiverCheck",1)
	TNT1 A 0 A_GiveInventory("DemonAmmo",40)
	Stop
  JustAmmo:
    TNT1 A 0 A_JumpIfInventory("TechVulcanGiverCheck",1,"Null")
	TNT1 A 0 A_GiveInventory("TechVulcanGiverCheck",1)
	TNT1 A 0 A_GiveInventory("DemonAmmo",40)
	TNT1 A 0 A_SpawnItemEx("TechVulcan")
	Stop
  }
}

Actor TechVulcanSpawnerGiver : TechVulcanGiver
{
  States
  {
  JustAmmo:
    TNT1 A 0 A_JumpIfInventory("TechVulcanGiverCheck",1,"Null")
	TNT1 A 0 A_GiveInventory("TechVulcanGiverCheck",1)
	TNT1 A 0 A_GiveInventory("DemonAmmo",40)
	Stop
  }
}

Actor TechVulcanGiverCheck : Inventory { Inventory.Amount 1 Inventory.MaxAmount 1 Inventory.InterHubAmount 0 }



Actor TechVulcan : Weapon
{
  Tag "$NETVulc"
  Weapon.Selectionorder 4050
  Weapon.KickBack 100
  Weapon.AmmoType "DemonAmmo"
  Weapon.AmmoGive 80
  Weapon.AmmoUse 1
  Weapon.AmmoType2 "DemonAmmo"
  Weapon.AmmoUse2 10
  Weapon.SlotNumber 6
  Weapon.SlotPriority 2.1
  Weapon.PreferredSkin "Minigun-Marine"
  Inventory.PickupMessage "$NETVulcPick"
  Inventory.PickupSound "vulcan/pickup"
  Weapon.Upsound "vulcan/pickup"
  Obituary "%o got plasmaficated by %k's Tech Vulcan"
  Decal DoomImpScorch
  +WEAPON.NOAUTOAIM
  States
  {
  Spawn:
  	VULC Z 0 NoDelay ACS_NamedExecuteWithResult("WeaponListCheck",6,0)
  SpawnLoop:
    VULC Z -1
    Loop
	Ready:
    VULC A 1 A_WeaponReady
    Loop
   Deselect:
  	TNT1 A 0 A_TakeInventory("HandGrenadeAction",1)
	TNT1 A 0 A_TakeInventory("MineAction",1)
	TNT1 A 0 A_PlayWeaponSound("weapons/weapondown")
	VULC A 0 A_Lower
	VULC A 1 A_Lower
	Wait
   Select:
	VULC A 0 A_Raise
	VULC A 1 A_Raise
	Loop
  Fire:
	TNT1 A 0 A_JumpIfInventory("PowerSpreadRune",1,"FireSpread")
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3)) //15
	VULC B 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3))
	VULC C 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3))	
	VULC D 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
	VULC A 1 Bright A_ReFire
    VULC A 4
    VULC A 6 A_ReFire
    Goto Ready
  FireSpread:
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25+15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25-15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)+15.0,1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)-15.0,1,0,frandom(4,-3))
	VULC B 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25+15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25-15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)+15.0,1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)-15.0,1,0,frandom(4,-3))
	VULC C 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/fire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25+15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 A 0 A_SpawnItemEx("RedCasing",25-15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
    VULC A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2),1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)+15.0,1,0,frandom(4,-3))
    TNT1 A 0 A_FireCustomMissile("VulcanPlasmaTracer",frandom(2,-2)-15.0,1,0,frandom(4,-3))
	VULC D 1 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
	VULC A 1 Bright A_ReFire
    VULC A 4
    VULC A 6 A_ReFire
    Goto Ready
  AltFire:
	TNT1 A 0 A_JumpIfInventory("PowerSpreadRune",1,"FireSpread")
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/altfire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 AAA 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	VULC E 0 A_FireCustomMissile("VulcanLazer",0,0,-8,8)
	VULC E 0 A_FireCustomMissile("VulcanLazer",0,0,8,8)
    VULC E 0 A_FireCustomMissile("VulcanLazer",0,1,0,8)
    VULC E 2 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,44)
	VULC A 1 Offset(0,48)
	VULC A 1 Offset(0,44)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
	VULC A 7 Bright
    VULC A 6 A_ReFire
    Goto Ready
  AltFireSpread:
    TNT1 A 0 A_GunFlash
	TNT1 A 0 A_PlayWeaponSound("vulcan/altfire")
	TNT1 A 0 Radius_Quake(2,2,0,1,0)
	TNT1 AAA 0 A_SpawnItemEx("RedCasing",25,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 AAA 0 A_SpawnItemEx("RedCasing",25+15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	TNT1 AAA 0 A_SpawnItemEx("RedCasing",25-15.0,-8,25,frandom(2,4),frandom(-3,-6),frandom(3,6),0)
	VULC E 0 A_FireCustomMissile("VulcanLazer",0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",15.0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",-15.0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",15.0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",-15.0,0,-8,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",0,1,0,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",15.0,0,0,8)
	TNT1 A 0 A_FireCustomMissile("VulcanLazer",-15.0,0,0,8)
    VULC E 2 Bright Offset(0,36)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,44)
	VULC A 1 Offset(0,48)
	VULC A 1 Offset(0,44)
	VULC A 1 Offset(0,40)
	VULC A 1 Offset(0,36)
	VULC A 1 Offset(0,32)
	VULC A 7 Bright
    VULC A 6 A_ReFire("AltFire")
    Goto Ready
  Flash:
    TNT1 A 1 A_Light1
    TNT1 A 1 A_Light2
    TNT1 A 1 A_Light1
    TNT1 A 1 A_Light0
    Stop
  }
}


Actor VulcanPlasmaTracer : FastProjectile
{
  Radius 1
  Height 1
  Speed 250
  Damage 10
  +THRUSPECIES
  +NOGRAVITY
  +FORCERADIUSDMG
  +FORCEXYBILLBOARD
  Projectile
  Scale 0.5 
  Renderstyle Add
  Alpha 0.75
  Decal BulletChip
  DamageType "Player"
  States
  {
  Spawn:
    TRA3 A 1 Bright
	Loop
  Death:
  	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
	TNT1 AAA 0 A_CustomMissile("Kaboom10", 0, 0, frandom(0,360), 2, frandom(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, frandom(0,360), 2, frandom(0,360))
    RFOG A 3 Bright A_Explode(Random(25,36),72)
    RFOG BCDEF 3 Bright
    Stop
  }
}

Actor VulcanLazer : FastProjectile
{
  Radius 6
  Height 8
  Speed 75
  Damage 1
  Scale 0.45
  Species "Player"
  DamageType "Player"
  RenderStyle Add
  DeathSound "monsters/newfireexplode"
  Decal DoomImpScorch
  MissileType "VulcanLazerEffect"
  ReactionTime 35
  Projectile
  +RIPPER
  +BLOODLESSIMPACT
  +MTHRUSPECIES
  States
  {
  Spawn:
    TNT1 A 1 A_CountDown
    Loop
  Death:
  	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SpawnItemEX("VulcanLazerEffect", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom10", 0, 0, frandom(0,360), 2, frandom(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, frandom(0,360), 2, frandom(0,360))	
    TNT1 A 1
    Stop
  }
}

Actor VulcanLazerEffect
{
  +NOBLOCKMAP
  +NOGRAVITY
  +PAINLESS
  +FORCERADIUSDMG
  Scale 0.22
  RenderStyle Add
  DamageType "Player"
  MissileType ""
  Radius 1
  Height 2
  States
  {
  Spawn:
    VUEL A 0 A_Explode(4,8)
    VUEL A 1 bright A_FadeOut(0.3)
    Loop
  }
}

ACTOR RedCasing : BulletCasing
{
 Scale 0.18
 Seesound "weapons/casing1"
 States
 {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
	CAS0 GHABCDEF 2
	Loop
  Death:
	TNT1 A 0 A_Jump(128,3)
	CAS0 A 100
	CAS0 A 5 A_FadeOut(0.10)
	Goto Death+2
	CAS0 E 100
	CAS0 E 5 A_FadeOut(0.10)
	Goto Death+4
 }
}

// A_FireCustomMissile(4.3,2.6,-1,15,"VulcanPlasmaPuff")