Elin Modding Docs Doc
Loading...
Searching...
No Matches
GoalWork.cs
1using System;
2using System.Collections.Generic;
3
4// Token: 0x0200023E RID: 574
5public class GoalWork : Goal
6{
7 // Token: 0x1700041F RID: 1055
8 // (get) Token: 0x06000FFA RID: 4090 RVA: 0x000724A0 File Offset: 0x000706A0
9 public virtual bool IsHobby
10 {
11 get
12 {
13 return false;
14 }
15 }
16
17 // Token: 0x06000FFB RID: 4091 RVA: 0x000724A3 File Offset: 0x000706A3
18 public virtual List<Hobby> GetWorks()
19 {
20 return this.owner.ListWorks(true);
21 }
22
23 // Token: 0x06000FFC RID: 4092 RVA: 0x000724B1 File Offset: 0x000706B1
24 public override IEnumerable<AIAct.Status> Run()
25 {
26 if (this.FindWork(this.owner, true))
27 {
28 yield return base.Success(null);
29 }
30 yield return base.DoIdle(3);
31 yield break;
32 }
33
34 // Token: 0x06000FFD RID: 4093 RVA: 0x000724C4 File Offset: 0x000706C4
35 public void ValidateHobby(Chara c)
36 {
37 this.owner = c;
38 WorkSummary workSummary = this.owner.GetWorkSummary();
39 List<Hobby> list = this.owner.ListHobbies(true);
40 workSummary.hobbies.Clear();
41 Room room = this.owner.FindRoom();
42 int i = 0;
43 while (i < list.Count)
44 {
45 if (room == null)
46 {
47 goto IL_BE;
48 }
49 Lot lot = room.lot;
50 if (!this.TryWork(room, list[i], false))
51 {
52 bool flag = false;
53 foreach (Room room2 in EClass._map.rooms.listRoom)
54 {
55 if (room2.lot == lot && room2 != room && this.TryWork(room2, list[i], false))
56 {
57 flag = true;
58 break;
59 }
60 }
61 if (!flag)
62 {
63 goto IL_BE;
64 }
65 }
66 IL_CE:
67 i++;
68 continue;
69 IL_BE:
70 this.TryWork(null, list[i], false);
71 goto IL_CE;
72 }
73 }
74
75 // Token: 0x06000FFE RID: 4094 RVA: 0x000725C0 File Offset: 0x000707C0
76 public bool FindWork(Chara c, bool setAI = true)
77 {
78 this.owner = c;
79 WorkSummary workSummary = this.owner.GetWorkSummary();
80 if (this.IsHobby)
81 {
82 workSummary.hobbies.Clear();
83 }
84 else
85 {
86 workSummary.work = null;
87 }
88 Room room = this.owner.FindRoom();
89 if (room != null)
90 {
91 if (this.TryWork(room, setAI))
92 {
93 return true;
94 }
95 Lot lot = room.lot;
96 foreach (Room room2 in EClass._map.rooms.listRoom)
97 {
98 if (room2.lot == lot && room2 != room && !room2.IsPrivate && this.TryWork(room2, setAI))
99 {
100 return true;
101 }
102 }
103 }
104 return this.TryWork(null, setAI);
105 }
106
107 // Token: 0x06000FFF RID: 4095 RVA: 0x000726A0 File Offset: 0x000708A0
108 public bool TryWork(BaseArea destArea, bool setAI = true)
109 {
110 List<Hobby> works = this.GetWorks();
111 if (this.IsHobby)
112 {
113 Hobby h = works.RandomItem<Hobby>();
114 return this.TryWork(destArea, h, setAI);
115 }
116 foreach (Hobby h2 in works)
117 {
118 if (this.TryWork(destArea, h2, setAI))
119 {
120 return true;
121 }
122 }
123 return false;
124 }
125
126 // Token: 0x06001000 RID: 4096 RVA: 0x00072720 File Offset: 0x00070920
127 public bool TryWork(BaseArea destArea, Hobby h, bool setAI)
128 {
129 AIWork ai = h.GetAI(this.owner);
130 ai.destArea = destArea;
131 if (ai.SetDestination())
132 {
133 WorkSummary workSummary = this.owner.GetWorkSummary();
134 if (this.IsHobby)
135 {
136 workSummary.hobbies.Add(ai.GetSession());
137 }
138 else
139 {
140 workSummary.work = ai.GetSession();
141 }
142 if (setAI)
143 {
144 this.owner.SetAI(ai);
145 }
146 return true;
147 }
148 return false;
149 }
150
151 // Token: 0x06001001 RID: 4097 RVA: 0x00072790 File Offset: 0x00070990
152 public override void OnSimulatePosition()
153 {
154 Room room = this.owner.FindRoom();
155 if (room != null)
156 {
157 this.owner.MoveImmediate(room.GetRandomFreePos(), true, true);
158 }
159 }
160}
Definition AIAct.cs:7
Definition Chara.cs:12
Definition Goal.cs:5
Definition Hobby.cs:5
Definition Lot.cs:7
Definition Room.cs:6