function vectorSpread(%vector, %spread) { %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %mat = matrixCreateFromEuler(%x SPC %y SPC %z); return vectorNormalize(matrixMulVector(%mat, %vector));}function mImage::onFire(%data,%obj,%slot){ %count=mFloor(%data.projectileCount); %spread=%data.projectileSpread; if(!%count) %count=1; %projectile = %data.projectile; %vector = %obj.getMuzzleVector(0); %muzzle = %obj.getMuzzlePoint(0); for(%i=0;%i<%count;%i++) { %proj = new Projectile() { datablock = %projectile; sourceObject = %obj; sourceSlot = %slot; client = %obj.client; initialPosition = %muzzle; initialVelocity = vectorScale(vectorSpread(%vector,%spread),%projectile.muzzleVelocity); }; %proj.setScale("1 1 1"); MissionCleanup.add(%proj); }}