Files
dsrc/sku.0/sys.server/compiled/game/script/city/base/base_wander.java
T
2016-04-01 21:30:29 +01:00

110 lines
2.8 KiB
Java
Executable File

package script.city.base;
import script.dictionary;
import script.library.ai_lib;
import script.location;
import script.obj_id;
public class base_wander extends script.base_script
{
public base_wander()
{
}
public String[] patrolPoints =
{
"city1",
"city2",
"city3",
"city4",
"city5",
"city6"
};
public int OnAttach(obj_id self) throws InterruptedException
{
ai_lib.setDefaultCalmBehavior(self, ai_lib.BEHAVIOR_SENTINEL);
messageTo(self, "pathRandom", null, 1, false);
return SCRIPT_CONTINUE;
}
public int OnInitialize(obj_id self) throws InterruptedException
{
messageTo(self, "pathRandom", null, 1, false);
return SCRIPT_CONTINUE;
}
public int pathRandom(obj_id self, dictionary params) throws InterruptedException
{
ai_lib.setPatrolRandomNamedPath(self, patrolPoints);
return SCRIPT_CONTINUE;
}
public int OnLoiterMoving(obj_id self) throws InterruptedException
{
stop(self);
messageTo(self, "pathRandom", null, 2, false);
return SCRIPT_OVERRIDE;
}
public int OnMovePathComplete(obj_id self) throws InterruptedException
{
messageTo(self, "pathRandom", null, rand(30, 60), false);
return SCRIPT_CONTINUE;
}
public int OnMovePathNotFound(obj_id self) throws InterruptedException
{
if (hasObjVar(self, "checkingFeet"))
{
if (getIntObjVar(self, "checkingFeet") > 10)
{
return SCRIPT_CONTINUE;
}
}
messageTo(self, "pathRandom", null, rand(30, 60), false);
checkForFeetGluedToFloor(self);
return SCRIPT_CONTINUE;
}
public void checkForFeetGluedToFloor(obj_id self) throws InterruptedException
{
if (!hasObjVar(self, "checkingFeet"))
{
setObjVar(self, "checkingFeet", 1);
setObjVar(self, "mightBeStuck", getLocation(self));
messageTo(self, "amIStuck", null, 180, false);
}
else
{
int checked = getIntObjVar(self, "checkingFeet") + 1;
setObjVar(self, "checkingFeet", checked);
if (checked > 10)
{
return;
}
setObjVar(self, "mightBeStuck", getLocation(self));
messageTo(self, "amIStuck", null, 180, false);
}
}
public int amIStuck(obj_id self, dictionary params) throws InterruptedException
{
location now = getLocation(self);
if (now == null || now.equals(getLocationObjVar(self, "mightBeStuck")))
{
messageTo(self, "killIt", null, 3, false);
}
else
{
messageTo(self, "cleanUpChecks", null, 10, false);
}
return SCRIPT_CONTINUE;
}
public int killIt(obj_id self, dictionary params) throws InterruptedException
{
destroyObject(self);
return SCRIPT_CONTINUE;
}
public int cleanUpChecks(obj_id self, dictionary params) throws InterruptedException
{
int checks = getIntObjVar(self, "checkingFeet");
if (checks > 0)
{
setObjVar(self, "checkingFeet", --checks);
}
return SCRIPT_CONTINUE;
}
}