Elin Modding Docs Doc
Loading...
Searching...
No Matches
QuestManager.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using Newtonsoft.Json;
5
6// Token: 0x020000C0 RID: 192
7public class QuestManager : EClass
8{
9 // Token: 0x1700011B RID: 283
10 // (get) Token: 0x06000532 RID: 1330 RVA: 0x00025044 File Offset: 0x00023244
11 public QuestMain Main
12 {
13 get
14 {
15 return this.Get<QuestMain>();
16 }
17 }
18
19 // Token: 0x1700011C RID: 284
20 // (get) Token: 0x06000533 RID: 1331 RVA: 0x0002504C File Offset: 0x0002324C
21 public new QuestHome Home
22 {
23 get
24 {
25 return this.Get<QuestHome>();
26 }
27 }
28
29 // Token: 0x06000534 RID: 1332 RVA: 0x00025054 File Offset: 0x00023254
30 public Quest Add(string id, string idGlobalChara = null)
31 {
32 Quest quest = Quest.Create(id, null, null);
33 if (idGlobalChara.IsEmpty())
34 {
35 idGlobalChara = quest.source.drama[0];
36 }
37 quest.SetClient(EClass.game.cards.globalCharas.Find(idGlobalChara), false);
38 EClass.game.quests.globalList.Add(quest);
39 return quest;
40 }
41
42 // Token: 0x06000535 RID: 1333 RVA: 0x000250B4 File Offset: 0x000232B4
43 public Quest Start(string id, string idGlobalChara)
44 {
45 Quest q = Quest.Create(id, null, null).SetClient(EClass.game.cards.globalCharas.Find(idGlobalChara), false);
46 return this.Start(q);
47 }
48
49 // Token: 0x06000536 RID: 1334 RVA: 0x000250EC File Offset: 0x000232EC
50 public Quest Start(string id, Chara c = null, bool assignQuest = true)
51 {
52 return this.Start(Quest.Create(id, null, null).SetClient(c, assignQuest));
53 }
54
55 // Token: 0x06000537 RID: 1335 RVA: 0x00025103 File Offset: 0x00023303
56 public Quest Start(Quest q)
57 {
58 this.list.Insert(0, q);
59 q.Start();
60 if (EClass.core.IsGameStarted)
61 {
62 q.UpdateJournal();
63 if (EClass.player.questTracker)
64 {
65 WidgetQuestTracker.Show();
66 }
67 }
68 return q;
69 }
70
71 // Token: 0x06000538 RID: 1336 RVA: 0x0002513C File Offset: 0x0002333C
72 public void Remove(Quest q)
73 {
74 this.list.Remove(q);
75 }
76
77 // Token: 0x06000539 RID: 1337 RVA: 0x0002514B File Offset: 0x0002334B
78 public void RemoveGlobal(Quest q)
79 {
80 this.globalList.Remove(q);
81 }
82
83 // Token: 0x0600053A RID: 1338 RVA: 0x0002515C File Offset: 0x0002335C
84 public void RemoveAll(Chara c)
85 {
86 foreach (Quest q in (from a in this.list
87 where a.chara == c
88 select a).ToList<Quest>())
89 {
90 this.Remove(q);
91 }
92 foreach (Quest q2 in (from a in this.globalList
93 where a.chara == c
94 select a).ToList<Quest>())
95 {
96 this.RemoveGlobal(q2);
97 }
98 }
99
100 // Token: 0x0600053B RID: 1339 RVA: 0x0002522C File Offset: 0x0002342C
101 public void Complete(Quest q)
102 {
103 q.Complete();
104 }
105
106 // Token: 0x0600053C RID: 1340 RVA: 0x00025234 File Offset: 0x00023434
107 public bool OnShowDialog(Chara c)
108 {
109 foreach (Quest quest in this.list)
110 {
111 if (quest.person.chara == c && (quest.CanUpdateOnTalk(c) || (quest.CanAutoAdvance && EClass.debug.autoAdvanceQuest)))
112 {
113 return quest.UpdateOnTalk();
114 }
115 }
116 return false;
117 }
118
119 // Token: 0x0600053D RID: 1341 RVA: 0x000252B8 File Offset: 0x000234B8
120 public void OnAdvanceHour()
121 {
122 this.list.ForeachReverse(delegate(Quest q)
123 {
124 if (q.IsExpired)
125 {
126 Msg.Say("questExpired", q.GetTitle(), null, null, null);
127 q.Fail();
128 }
129 });
130 }
131
132 // Token: 0x0600053E RID: 1342 RVA: 0x000252E4 File Offset: 0x000234E4
133 public bool IsStarted<T>() where T : Quest
134 {
135 return this.GetPhase<T>() != -1;
136 }
137
138 // Token: 0x0600053F RID: 1343 RVA: 0x000252F4 File Offset: 0x000234F4
139 public int GetPhase<T>() where T : Quest
140 {
141 if (this.completedTypes.Contains(typeof(T).ToString()))
142 {
143 return 999;
144 }
145 foreach (Quest quest in this.list)
146 {
147 if (quest is T)
148 {
149 return quest.phase;
150 }
151 }
152 return -1;
153 }
154
155 // Token: 0x06000540 RID: 1344 RVA: 0x00025378 File Offset: 0x00023578
156 public T Get<T>() where T : Quest
157 {
158 foreach (Quest quest in this.list)
159 {
160 if (quest is T)
161 {
162 return quest as T;
163 }
164 }
165 return default(T);
166 }
167
168 // Token: 0x06000541 RID: 1345 RVA: 0x000253E8 File Offset: 0x000235E8
169 public Quest Get(string id)
170 {
171 foreach (Quest quest in this.list)
172 {
173 if (quest.GetType().ToString() == id || quest.id == id)
174 {
175 return quest;
176 }
177 }
178 return null;
179 }
180
181 // Token: 0x06000542 RID: 1346 RVA: 0x0002545C File Offset: 0x0002365C
182 public Quest Get(int uid)
183 {
184 foreach (Quest quest in this.list)
185 {
186 if (quest.uid == uid)
187 {
188 return quest;
189 }
190 }
191 return null;
192 }
193
194 // Token: 0x06000543 RID: 1347 RVA: 0x000254B8 File Offset: 0x000236B8
195 public Quest GetGlobal(string id)
196 {
197 foreach (Quest quest in this.globalList)
198 {
199 if (quest.GetType().ToString() == id || quest.id == id)
200 {
201 return quest;
202 }
203 }
204 return null;
205 }
206
207 // Token: 0x06000544 RID: 1348 RVA: 0x0002552C File Offset: 0x0002372C
208 public bool IsCompleted(string id)
209 {
210 return this.completedIDs.Contains(id);
211 }
212
213 // Token: 0x06000545 RID: 1349 RVA: 0x0002553C File Offset: 0x0002373C
214 public int CountNew()
215 {
216 int num = 0;
217 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
218 {
219 while (enumerator.MoveNext())
220 {
221 if (enumerator.Current.isNew)
222 {
223 num++;
224 }
225 }
226 }
227 return num;
228 }
229
230 // Token: 0x06000546 RID: 1350 RVA: 0x00025598 File Offset: 0x00023798
231 public int CountRandomQuest()
232 {
233 int num = 0;
234 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
235 {
236 while (enumerator.MoveNext())
237 {
238 if (enumerator.Current is QuestRandom)
239 {
240 num++;
241 }
242 }
243 }
244 return num;
245 }
246
247 // Token: 0x06000547 RID: 1351 RVA: 0x000255F4 File Offset: 0x000237F4
248 public void UpdateJournal()
249 {
250 SE.WriteJournal();
251 Msg.Say("journalUpdate");
252 }
253
254 // Token: 0x06000548 RID: 1352 RVA: 0x00025608 File Offset: 0x00023808
255 public bool IsDeliverTarget(Chara c)
256 {
257 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
258 {
259 while (enumerator.MoveNext())
260 {
261 if (enumerator.Current.IsDeliverTarget(c))
262 {
263 return true;
264 }
265 }
266 }
267 return false;
268 }
269
270 // Token: 0x06000549 RID: 1353 RVA: 0x00025664 File Offset: 0x00023864
271 public void AddQuestAsh()
272 {
273 Chara c = EClass.game.cards.globalCharas.Find("ashland");
274 QuestCraft questCraft = Quest.Create("ash1", null, null) as QuestCraft;
275 questCraft.SetClient(c, true);
276 questCraft.req1.Add(new QuestCraft.Req("rock", 1));
277 questCraft.req1.Add(new QuestCraft.Req("branch", 1));
278 questCraft.req2.Add(new QuestCraft.Req("axe", 1));
279 }
280
281 // Token: 0x0600054A RID: 1354 RVA: 0x000256E8 File Offset: 0x000238E8
282 public void AddQuestFiama()
283 {
284 Chara c = EClass.game.cards.globalCharas.Find("fiama");
285 QuestCraft questCraft = Quest.Create("fiama1", null, null) as QuestCraft;
286 questCraft.SetClient(c, true);
287 questCraft.req1.Add(new QuestCraft.Req("crim", 3));
288 questCraft.req2.Add(new QuestCraft.Req("hotcrim", 1));
289 }
290
291 // Token: 0x0600054B RID: 1355 RVA: 0x00025754 File Offset: 0x00023954
292 public bool HasFarAwayEscort(bool execute = false)
293 {
294 bool has = false;
295 if (EClass._zone.IsTown || EClass._zone.IsPCFaction || EClass._zone.HasLaw || EClass._zone.IsInstance)
296 {
297 return false;
298 }
299 EClass._map.charas.ForeachReverse(delegate(Chara m)
300 {
301 if (!m.IsEscorted())
302 {
303 return;
304 }
305 if (EClass.pc.Dist(m) < 5)
306 {
307 return;
308 }
309 has = true;
310 if (execute)
311 {
312 m.Destroy();
313 }
314 });
315 if (has & execute)
316 {
317 this.OnEnterZone();
318 }
319 return has;
320 }
321
322 // Token: 0x0600054C RID: 1356 RVA: 0x000257DD File Offset: 0x000239DD
323 public void OnEnterZone()
324 {
325 this.list.ForeachReverse(delegate(Quest q)
326 {
327 q.OnEnterZone();
328 });
329 }
330
331 // Token: 0x040006DB RID: 1755
332 public const int MaxRandomQuest = 5;
333
334 // Token: 0x040006DC RID: 1756
335 [JsonProperty]
336 public List<Quest> list = new List<Quest>();
337
338 // Token: 0x040006DD RID: 1757
339 [JsonProperty]
340 public List<Quest> globalList = new List<Quest>();
341
342 // Token: 0x040006DE RID: 1758
343 [JsonProperty]
344 public HashSet<string> completedIDs = new HashSet<string>();
345
346 // Token: 0x040006DF RID: 1759
347 [JsonProperty]
348 public HashSet<string> completedTypes = new HashSet<string>();
349
350 // Token: 0x040006E0 RID: 1760
351 [JsonProperty]
352 public int uid;
353}
Definition Chara.cs:12
Definition Msg.cs:7
Definition Quest.cs:8