13 return EClass._map.tasks.designations;
18 public override IEnumerable<
AIAct.Status> Run()
22 yield
return base.Do(this.task,
null);
23 yield
return base.Success(
null);
27 yield
return base.Do(
new AI_Clean(),
null);
29 if (
EClass.rnd(3) == 0 &&
EClass._map.props.deconstructing.Count > 0)
35 if (!this.TryAssignDesignations())
37 yield
return AIAct.Status.Running;
38 if (!this.TryAssignAreaTask())
40 yield
return this.Cancel();
45 yield
return base.Do(this.task,
null);
47 while (this.taskList !=
null && (this.TryAssignTask(1) || this.TryAssignTask(3) || this.TryAssignTask(9)));
52 public bool TryAssignAreaTask()
54 foreach (
Area area
in EClass._map.rooms.listArea)
56 if (this.TryAssignAreaTask(area))
59 this.taskList = area.taskList;
67 public bool TryAssignAreaTask(
Area a)
69 this.task = a.taskList.GetTask(this.owner, -1);
70 return this.task !=
null;
74 public bool TryAssignDesignations()
77 return (
EClass.rnd(2) == 0 &&
this.TryAssignTask(designations.moveInstalled)) || (
EClass.rnd(2) == 0 && this.TryAssignTask(designations.cut)) || (
EClass.rnd(2) == 0 && this.TryAssignTask(designations.harvest)) || (
EClass.rnd(2) == 0 && this.TryAssignTask(designations.mine)) || (
EClass.rnd(2) == 0 && this.TryAssignTask(designations.dig)) || (
EClass.rnd(2) == 0 && this.TryAssignTask(designations.build));
81 public bool TryAssignTask(
TaskList list)
83 this.task = list.GetTask(this.owner, -1);
84 if (this.task !=
null)
93 public bool TryAssignTask(
int radius)
95 if (this.area ==
null)
97 this.task = this.taskList.GetTask(this.owner, radius);
98 return this.task !=
null;
100 if (this.area.isDestroyed)
104 this.task = this.taskList.GetTask(this.owner, radius);
105 return this.task !=
null;