diff --git a/sku.0/sys.server/compiled/game/script/city/base/base_wander.java b/sku.0/sys.server/compiled/game/script/city/base/base_wander.java new file mode 100755 index 000000000..e45e3b5b5 --- /dev/null +++ b/sku.0/sys.server/compiled/game/script/city/base/base_wander.java @@ -0,0 +1,109 @@ +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; + } +}