function spawnMobs (nam : string, optional quantity : int, optional distance : float)
{
var ent, spawnPortal : CEntity;
var horse : CEntity;
var pos, cameraDir, player, posFin, normal : Vector;
var rot : EulerAngles;
var i, sign : int;
var s,r,x,y : float;
var template, spawnPortalTemplate : CEntityTemplate;
var horseTemplate : CEntityTemplate;
var horseTag : array<name>;
quantity = Max(quantity, 1);
rot = thePlayer.GetWorldRotation();
rot.Yaw += 180;
cameraDir = theCamera.GetCameraDirection();
if( distance == 0 ) distance = 3;
cameraDir.X *= distance;
cameraDir.Y *= distance;
player = thePlayer.GetWorldPosition();
pos = cameraDir + player;
pos.Z = player.Z;
posFin.Z = pos.Z;
s = quantity / 0.2;
r = SqrtF(s/Pi());
template = (CEntityTemplate)LoadResource(nam);
for(i=0; i<quantity; i+=1) {
x = RandF() * r;
y = RandF() * (r - x);
if(RandRange(2))
sign = 1;
else
sign = -1;
posFin.X = pos.X + sign * x;
if(RandRange(2))
sign = 1;
else
sign = -1;
posFin.Y = pos.Y + sign * y;
spawnPortalTemplate = (CEntityTemplate)LoadResource( ' # Portal # ' ); // This Open Portal
spawnPortal = theGame.CreateEntity(spawnPortalTemplate, posFin, rot );
theGame.GetWorld().StaticTrace( posFin + 5, posFin - 5, posFin, normal );
ent = theGame.CreateEntity(template, posFin, rot);
((CActor)ent).ForceVulnerable();
((CNewNPC)ent).SetLevel( RandRange(thePlayer.GetLevel(),thePlayer.GetLevel() + 3) );
}
}