function execBeamFind(%data,%className,%plyr,%scale,%item) {
if($Quantium::DisableAutoFillpad) {
messageClient(%plyr.client,0,'\c2Disabled by server owner.');
return;
}

%forwardvec = realVec(%item.surface,"0 0 1");
%backwardvec = realVec(%item.surface,"0 0 -1");
%targetpos1 = vectoradd(%item.surfacePt,vectorscale(%forwardvec,60));
%targetpos2 = vectoradd(%item.surfacePt,vectorscale(%backwardvec,60));
%pos1 = containerraycast(%item.surfacePt,%targetpos1,$AllObjMask,0);
%pos2 = containerraycast(%item.surfacePt,%targetpos2,$AllObjMask,0);
%pos1 = posFromRaycast(%pos1);
%pos2 = posFromRaycast(%pos2);

%dista = getDistance3D(%pos1,%item.surfacePt);
%distb = getDistance3D(%pos2,%item.surfacePt);

%dista = mCeil(%dista/0.5);
%distb = mCeil(%distb/0.5);
%posa = %item.surfacePt;
if(%dista $= "" || %dista == 0 || %distb $= "" || %distb == 0) {
messageClient(%plyr.client,0,'\c2No sides found!~wfx/misc/misc.error.wav');
return;
}
if(%dista < 0 || %dista > 30 || %distb < 0 || %distb > 30) {
messageClient(%plyr.client,0,'\c2Sides too far or short (Max. 30m)!~wfx/misc/misc.error.wav');
return;
}

for(%i=0;%i<%dista;%i++) {
   %vec = vectorScale(%forwardvec,0.5);
   %item.surfacePt = VectorAdd(%item.surfacePt,%vec);
   makeSingleUp(%data,%className,%plyr,%scale,%item);
}
%item.surfacePt = %posa;
for(%b=0;%b<%distb;%b++) {
   makeSingleUp(%data,%className,%plyr,%scale,%item);
   %vec2 = vectorScale(%backwardvec,0.5);
   %item.surfacePt = VectorAdd(%item.surfacePt,%vec2);
}
}

function makeSingleUp(%data,%className,%plyr,%scale,%item) {
%space = rayDist(%item.surfacePt SPC %item.surfaceNrm,"0.5 8 60",$AllObjMask);
%scale = getWord(%scale,0) SPC getWord(%scale,1) SPC %space;
%scale = vectorMultiply(%scale,1/4 SPC 1/3 SPC 2);
%deplObj = new (%className)() {
dataBlock = %data;
scale = %scale;
};
%deplObj.isNotDoor = true;
%rot = fullRot(%item.surfaceNrm,%item.surfaceNrm2);
%deplObj.setTransform(%item.surfacePt SPC %rot);
addDSurface(%item.surface,%deplObj);
%deplObj.grounded = 0;
%deplObj.needsFit = 1;
%deplObj.team = %plyr.client.team;
%deplObj.setOwner(%plyr);
%deplObj.powerFreq = %plyr.powerFreq;
if (%deplObj.getTarget() != -1)
	setTargetSensorGroup(%deplObj.getTarget(), %plyr.client.team);
 
addToDeployGroup(%deplObj);
AIDeployObject(%plyr.client, %deplObj);
serverPlay3D(%item.deploySound, %deplObj.getTransform());
$TeamDeployedCount[%plyr.team, %item.item]++;
%deplObj.deploy();
checkPowerObject(%deplObj);
}


