protected jbt.execution.core.ExecutionTask.Status internalTick() { Log.debug(this.getClass().getCanonicalName(), "ticked"); GDXPath objective = (GDXPath) getContext().getVariable(AIFieldEnum.OBJECTIVE.name()); NPC self = (NPC) getContext().getVariable(AIFieldEnum.SELF.name()); if (objective != null && !objective.getNodes().isEmpty()) { Vector2 target = objective.getNodes().get(0); getContext().setVariable("CurrentObjectiveTarget", new float[] {target.x, target.y}); if (objective.getNodes().get(0).dst(self.getPosition()) < 1) objective.getNodes().remove(0); if (objective.getNodes().isEmpty()) { switch (objective.getCompletionCriteria()) { case END: getContext().clearVariable(AIFieldEnum.OBJECTIVE.name()); break; case REPEAT: getContext().setVariable(AIFieldEnum.OBJECTIVE.name(), self.getPath().clone()); break; case REVERSE: boolean reversed = getContext().getVariable("PATH_REVERSED") == null || (boolean) getContext().getVariable("PATH_REVERSED"); GDXPath clone = (GDXPath) self.getPath().clone(); if (!reversed) clone.reverse(); getContext().setVariable("PATH_REVERSED", !reversed); getContext().setVariable(AIFieldEnum.OBJECTIVE.name(), clone); break; } } return Status.SUCCESS; } else { getContext().clearVariable("CurrentObjectiveTarget"); self.stopMovement(); return Status.FAILURE; } }
protected jbt.execution.core.ExecutionTask.Status internalTick() { WorldManager world = (WorldManager) getContext().getVariable(AIFieldEnum.WORLD.name()); NPC self = (NPC) getContext().getVariable(AIFieldEnum.SELF.name()); VisibilityReturnStruct struct = world.isVisible(self); getContext().setVariable(NPC.AIFieldEnum.VISIBLE.name(), struct); return Status.SUCCESS; }