Files
dsrc/sku.0/sys.server/compiled/game/script/systems/spawning/theater_spawnegg.java
T
2018-03-26 01:21:00 +01:00

182 lines
5.4 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;
}
}
}