// My methof for main planner // basically followed by what Clark taught in class void SimperForwardPlanner() { plan = new List <HTNTask>(); pickup = false; findPlayer = false; throwFinished = false; HTNTasks = new Stack <HTNTask>(); HTNTasks.Push(beAMonster); while (HTNTasks.Count != 0) { HTNTask hTNTask = HTNTasks.Pop(); if (hTNTask.isCompound) { List <HTNTask> foundTasks = hTNTask.addSubtasks(); if (foundTasks.Count > 0) { for (int i = foundTasks.Count - 1; i >= 0; i--) { HTNTasks.Push(foundTasks[i]); } } else { resotreWorldState(); } } else { if (hTNTask.checkPre(worldState)) { plan.Add(hTNTask); } else { resotreWorldState(); } } } }