function MPS_LaunchSalvo takes unit u, integer Salvo, integer MasterAmmo, integer SlaveAmmo, unit Target, real TargetX, real TargetY returns nothing
//Set up locals
local real x = GetUnitX(u)
local real y = GetUnitY(u)
local real z = GetUnitFlyHeight(u) + udg_MPS_SalvoHeightOffset[Salvo]
local real Facing = GetUnitFacing(u) * bj_DEGTORAD
local real Increment = 0
local real Offsetting = 0
local real Angle
local real Pitch
local integer iLoop = 0
//Make sure there's at least more than one master before dividing
if (udg_MPS_SalvoMasterAmmoAmount[Salvo] > 1) then
set Increment = udg_MPS_SalvoAngles[Salvo] / (udg_MPS_SalvoMasterAmmoAmount[Salvo] - 1)
set Offsetting = (udg_MPS_SalvoAngles[Salvo] / 2)
call BJDebugMsg("SalvoMasterAmmoAmount > 1")
endif
//trigger event
set udg_MPS_ACTIVE_NODE = Salvo
call MPS_FireEvent(udg_MPS_SALVO_FIRED)
//Set up the Angle
set Angle = Facing - Offsetting
//Create Master and Slave Projectiles
loop
set iLoop = iLoop + 1
exitwhen iLoop > udg_MPS_SalvoMasterAmmoAmount[Salvo]
set Pitch = Cos((Facing - Angle))
if (SlaveAmmo > 0) then
call MPS_AddSlaveProjectiles(MPS_CreateProjectile(u, MasterAmmo, udg_MPS_SalvoPower[Salvo], Pitch, Angle, x, y, z, Target, TargetX, TargetY), SlaveAmmo, udg_MPS_SalvoSlaveAmmoAmount[Salvo])
call BJDebugMsg("SlaveAmmo > 0")
else
call MPS_CreateProjectile(u, MasterAmmo, udg_MPS_SalvoPower[Salvo], Pitch, Angle, x, y, z, Target, TargetX, TargetY)
call BJDebugMsg("SlaveAmmo less")
endif
set Angle = Angle + Increment
endloop
endfunction
It seems to be firing the if (SlaveAmmo > 0) then part multiple times. It prints SalvoMasterAmmoAmount > 1 once and SlaveAmmo > 0 5 times.