mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-07-13 22:01:04 -04:00
182 lines
5.2 KiB
Java
Executable File
182 lines
5.2 KiB
Java
Executable File
package script.systems.spawning;
|
|
|
|
import script.dictionary;
|
|
import script.library.ai_lib;
|
|
import script.library.create;
|
|
import script.library.utils;
|
|
import script.location;
|
|
import script.obj_id;
|
|
|
|
public class theater_spawnegg extends script.base_script
|
|
{
|
|
public theater_spawnegg()
|
|
{
|
|
}
|
|
public int OnInitialize(obj_id self) throws InterruptedException
|
|
{
|
|
messageTo(self, "beginSpawning", null, 30, false);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
public int OnDestroy(obj_id self) throws InterruptedException
|
|
{
|
|
obj_id[] spawnList = getObjIdArrayObjVar(self, "spawnList");
|
|
if (spawnList == null || spawnList.length == 0)
|
|
{
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
for (obj_id aSpawnList : spawnList) {
|
|
if (isIdValid(aSpawnList)) {
|
|
destroyObject(aSpawnList);
|
|
}
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
public int beginSpawning(obj_id self, dictionary params) throws InterruptedException
|
|
{
|
|
String strNumToSpawn = getStringObjVar(self, "pop");
|
|
int numToSpawn = utils.stringToInt(strNumToSpawn);
|
|
if (numToSpawn < 1)
|
|
{
|
|
setObjVar(self, "pop", 1);
|
|
numToSpawn = 1;
|
|
}
|
|
if (numToSpawn > 5)
|
|
{
|
|
setObjVar(self, "pop", 5);
|
|
numToSpawn = 5;
|
|
}
|
|
String npcType = getStringObjVar(self, "type");
|
|
if (npcType == null)
|
|
{
|
|
npcType = "none";
|
|
}
|
|
if (npcType.equals("none"))
|
|
{
|
|
setObjVar(self, "type", "thug");
|
|
npcType = "thug";
|
|
}
|
|
String name = getStringObjVar(self, "name");
|
|
if (name == null)
|
|
{
|
|
name = "default";
|
|
}
|
|
String behavior = getStringObjVar(self, "behavior");
|
|
if (behavior == null)
|
|
{
|
|
behavior = "default";
|
|
}
|
|
String objVarName = getStringObjVar(self, "objvarname");
|
|
String objVarType = getStringObjVar(self, "objvartype");
|
|
String objVarValue = getStringObjVar(self, "objvarvalue");
|
|
if (objVarName == null)
|
|
{
|
|
objVarName = "none";
|
|
}
|
|
else
|
|
{
|
|
if (objVarValue == null)
|
|
{
|
|
objVarName = "none";
|
|
}
|
|
}
|
|
int x = 0;
|
|
obj_id[] spawnList = new obj_id[numToSpawn];
|
|
while (x < numToSpawn)
|
|
{
|
|
obj_id npc = create.object(npcType, pickLoc(self, x));
|
|
if (!name.equals("default"))
|
|
{
|
|
setName(npc, name);
|
|
}
|
|
String script = getStringObjVar(self, "script");
|
|
if (script == null || script.equals(""))
|
|
{
|
|
script = "none";
|
|
}
|
|
if (!script.equals("none"))
|
|
{
|
|
attachScript(npc, script);
|
|
}
|
|
if (!objVarName.equals("none"))
|
|
{
|
|
if (objVarType.equalsIgnoreCase("int"))
|
|
{
|
|
int intObjVarValue = utils.stringToInt(objVarValue);
|
|
setObjVar(npc, objVarName, intObjVarValue);
|
|
}
|
|
else if (objVarType.equalsIgnoreCase("float"))
|
|
{
|
|
float floatObjVarValue = utils.stringToFloat(objVarValue);
|
|
setObjVar(npc, objVarName, floatObjVarValue);
|
|
}
|
|
else
|
|
{
|
|
setObjVar(npc, objVarName, objVarValue);
|
|
}
|
|
}
|
|
if (behavior.equalsIgnoreCase("sentinel"))
|
|
{
|
|
setObjVar(npc, "SENTINEL", 1);
|
|
ai_lib.setDefaultCalmBehavior(npc, ai_lib.BEHAVIOR_SENTINEL);
|
|
}
|
|
else if (behavior.equalsIgnoreCase("loiter"))
|
|
{
|
|
setObjVar(npc, "LOITER", 1);
|
|
ai_lib.setDefaultCalmBehavior(npc, ai_lib.BEHAVIOR_LOITER);
|
|
}
|
|
else if (behavior.equalsIgnoreCase("wander"))
|
|
{
|
|
setObjVar(npc, "WANDER", 1);
|
|
ai_lib.setDefaultCalmBehavior(npc, ai_lib.BEHAVIOR_WANDER);
|
|
}
|
|
spawnList[x] = npc;
|
|
x = x + 1;
|
|
}
|
|
setObjVar(self, "spawnList", spawnList);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
public location pickLoc(obj_id self, int x) throws InterruptedException
|
|
{
|
|
location here = getLocation(self);
|
|
setObjVar(self, "location", here);
|
|
location zero = here;
|
|
here.x = here.x - 1.5f;
|
|
here.z = here.z - 1.5f;
|
|
location one = here;
|
|
here.z = here.z + 3;
|
|
location two = here;
|
|
here.x = here.x + 3;
|
|
location three = here;
|
|
here.z = here.z - 3;
|
|
location four = here;
|
|
here = getLocation(self);
|
|
here.x = here.x + rand(-3, 3);
|
|
here.z = here.z + rand(-3, 3);
|
|
location other = here;
|
|
if (x == 0)
|
|
{
|
|
return zero;
|
|
}
|
|
else if (x == 1)
|
|
{
|
|
return one;
|
|
}
|
|
else if (x == 2)
|
|
{
|
|
return two;
|
|
}
|
|
else if (x == 3)
|
|
{
|
|
return three;
|
|
}
|
|
else if (x == 4)
|
|
{
|
|
return four;
|
|
}
|
|
else
|
|
{
|
|
return other;
|
|
}
|
|
}
|
|
}
|