actor SniperBarrageWep_NormalBar : NormalBar{args 105, 230}
actor SniperBarrageWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 36
Weapon.SlotNumber 3
Inventory.Pickupmessage "$PU_SNIPERBARRAGE"
Obituary "$OB_SNIPERBARRAGE"
Tag "$TAG_SNIPERBARRAGE"
weapon.ammotype "SniperBarrageAmmo"
inventory.icon "SBRGICON"
States
{
SpawnLoop:
SBRG Z 1
loop
Ready:
SBRG C 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_SNIPERBARRAGE)
SBRG C 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
SBRG C 0
goto DeselectSwap
Select:
SBRG C 0
goto SelectSwap
Fire:
SBRG C 0 A_JumpIfNoAmmo("NoAmmo")
SBRG C 0 A_PlaySoundEx("weapon/coilexplode","Weapon")
SBRG C 0 A_FireCustomMissile("SniperBarrage",0,1,random(-15,15),random(-10,10))
NoSpread:
SBRG DE 2
SBRG E 1 A_Refire
SBRG C 10 
SBRG C 0 A_Refire
Goto Ready+1
NoAmmo:
SBRG C 1 ACS_Execute(979,0)
SBRG C 0 A_Refire
Goto Ready+1
}
}

actor SniperBarrageAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 36
+INVENTORY.IGNORESKILL
}

actor SniperBarrage : BasicProjectile
{
+SEEKERMISSILE
-EXTREMEDEATH
+SCREENSEEKER
PROJECTILE
damagetype "HomingSniper"
Obituary "$OB_SNIPERBARRAGE"
//+HEXENBOUNCE
damage (CallACS("vile_cbm_damage",12))
Radius 8
Height 8
speed 40
scale 2.5
var int user_HomingChance;
States
{
Spawn:
TNT1 A 0
BSNM BC 2 A_SpawnItemEx("HomingSniperSmoke")
Spawn2:
BSNM B 0 A_SpawnItemEx("HomingSniperSmoke")
BSNM B 1 A_SeekerMissile (0, 0, SMF_LOOK, 75+user_HomingChance, 2)
BSNM B 0 A_JumpIf(75+user_HomingChance >= 125, 1)
BSNM B 0 A_SetUserVar("user_HomingChance", user_HomingChance+25)
BSNM B 0 A_JumpIfTargetInLOS("ReDirect", 0, JLOSF_PROJECTILE)
BSNM B 1 A_SeekerMissile (0, 0, SMF_LOOK, 75+user_HomingChance, 2)
BSNM B 0 A_JumpIf(75+user_HomingChance >= 125, 1)
BSNM B 0 A_SetUserVar("user_HomingChance", user_HomingChance+25)
BSNM B 0 A_JumpIfTargetInLOS("ReDirect", 0, JLOSF_PROJECTILE)
BSNM C 0 A_SpawnItemEx("HomingSniperSmoke")
BSNM C 1 A_SeekerMissile (0, 0, SMF_LOOK, 75+user_HomingChance, 2)
BSNM C 0 A_JumpIf(75+user_HomingChance >= 125, 1)
BSNM C 0 A_SetUserVar("user_HomingChance", user_HomingChance+25)
BSNM C 0 A_JumpIfTargetInLOS("ReDirect", 0, JLOSF_PROJECTILE)
BSNM C 1 A_SeekerMissile (0, 0, SMF_LOOK, 75+user_HomingChance, 2)
BSNM C 0 A_JumpIf(75+user_HomingChance >= 125, 1)
BSNM C 0 A_SetUserVar("user_HomingChance", user_HomingChance+25)
BSNM C 0 A_JumpIfTargetInLOS("ReDirectTarget", 0, JLOSF_PROJECTILE)
//loop
ReDirect:
BSNM B 0 A_FaceTracer
BSNM B 0 A_SeekerMissile(1, 360, SMF_PRECISE, 75+user_HomingChance, 2)
BSNM B 0 A_ScaleVelocity(0.01)
BSNM B 0 A_GiveInventory("SniperBarrageChase",1)
BSNM BCBCBC 2 A_Facetracer
BSNM B 0 A_ScaleVelocity(100.0)
Goto Go
ReDirectTarget:
BSNM B 0 A_FaceTracer
BSNM B 0 A_SeekerMissile(1, 360, SMF_PRECISE, 75+user_HomingChance, 2)
BSNM B 0 A_ScaleVelocity(0.01)
BSNM B 0 A_GiveInventory("SniperBarrageChase",1)
BSNM BCBCBC 2 A_Facetracer
BSNM B 0 A_ScaleVelocity(100.0)
Goto GoTarget
Go:
BSNM BC 2 A_SpawnItemEx("HomingSniperSmoke")
loop
GoTarget:
BSNM B 1 A_SpawnItemEx("HomingSniperSmoke")
BSNM B 1 A_SeekerMissile(1, 25, SMF_PRECISE, 75+user_HomingChance, 2)
BSNM C 1 A_SpawnItemEx("HomingSniperSmoke")
BSNM C 1 A_SeekerMissile(1, 25, SMF_PRECISE, 75+user_HomingChance, 2)
loop
Death:
MMFX B 0
MMFX BCDE 2
stop
}
}

actor SniperBarrageChase : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_GiveInventory("HomingSniperFound", 1, AAPTR_TRACER)
        TNT1 A 0 A_JumpIfInventory("MM8BDMPlayer", 1, "Continue", AAPTR_TRACER)
        TNT1 A 0 A_Countdown
        stop
    Continue:
        TNT1 A 0
        stop
    }
}