15 return this.Get<QuestMain>();
25 return this.Get<QuestHome>();
30 public Quest Add(
string id,
string idGlobalChara =
null)
33 if (idGlobalChara.IsEmpty())
35 idGlobalChara = quest.source.drama[0];
37 quest.SetClient(
EClass.game.cards.globalCharas.Find(idGlobalChara),
false);
38 EClass.game.quests.globalList.Add(quest);
43 public Quest Start(
string id,
string idGlobalChara)
45 Quest q =
Quest.Create(
id,
null,
null).SetClient(
EClass.game.cards.globalCharas.Find(idGlobalChara),
false);
50 public Quest Start(
string id,
Chara c =
null,
bool assignQuest =
true)
52 return this.Start(
Quest.Create(
id,
null,
null).SetClient(c, assignQuest));
58 this.list.Insert(0, q);
60 if (
EClass.core.IsGameStarted)
63 if (
EClass.player.questTracker)
72 public void Remove(
Quest q)
78 public void RemoveGlobal(
Quest q)
80 this.globalList.Remove(q);
84 public void RemoveAll(
Chara c)
86 foreach (
Quest q
in (from a
in this.list
88 select a).ToList<
Quest>())
92 foreach (
Quest q2
in (from a
in this.globalList
94 select a).ToList<
Quest>())
96 this.RemoveGlobal(q2);
101 public void Complete(
Quest q)
107 public bool OnShowDialog(
Chara c)
109 foreach (
Quest quest
in this.list)
111 if (quest.person.chara == c && (quest.CanUpdateOnTalk(c) || (quest.CanAutoAdvance &&
EClass.debug.autoAdvanceQuest)))
113 return quest.UpdateOnTalk();
120 public void OnAdvanceHour()
122 this.list.ForeachReverse(delegate(
Quest q)
126 Msg.Say(
"questExpired", q.GetTitle(),
null,
null,
null);
133 public bool IsStarted<T>() where T :
Quest
135 return this.GetPhase<T>() != -1;
139 public int GetPhase<T>() where T :
Quest
141 if (this.completedTypes.Contains(typeof(T).ToString()))
145 foreach (
Quest quest
in this.list)
156 public T Get<T>() where T :
Quest
158 foreach (
Quest quest
in this.list)
169 public Quest Get(
string id)
171 foreach (
Quest quest
in this.list)
173 if (quest.GetType().ToString() ==
id || quest.id ==
id)
182 public Quest Get(
int uid)
184 foreach (
Quest quest
in this.list)
186 if (quest.uid == uid)
195 public Quest GetGlobal(
string id)
197 foreach (
Quest quest
in this.globalList)
199 if (quest.GetType().ToString() ==
id || quest.id ==
id)
208 public bool IsCompleted(
string id)
210 return this.completedIDs.Contains(
id);
214 public int CountNew()
217 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
219 while (enumerator.MoveNext())
221 if (enumerator.Current.isNew)
231 public int CountRandomQuest()
234 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
236 while (enumerator.MoveNext())
248 public void UpdateJournal()
251 Msg.Say(
"journalUpdate");
255 public bool IsDeliverTarget(
Chara c)
257 using (List<Quest>.Enumerator enumerator = this.list.GetEnumerator())
259 while (enumerator.MoveNext())
261 if (enumerator.Current.IsDeliverTarget(c))
271 public void AddQuestAsh()
273 Chara c =
EClass.game.cards.globalCharas.Find(
"ashland");
275 questCraft.SetClient(c,
true);
282 public void AddQuestFiama()
284 Chara c =
EClass.game.cards.globalCharas.Find(
"fiama");
286 questCraft.SetClient(c,
true);
292 public bool HasFarAwayEscort(
bool execute =
false)
299 EClass._map.charas.ForeachReverse(delegate(
Chara m)
305 if (
EClass.pc.Dist(m) < 5)
323 public void OnEnterZone()
325 this.list.ForeachReverse(delegate(
Quest q)
332 public const int MaxRandomQuest = 5;
336 public List<Quest> list =
new List<Quest>();
340 public List<Quest> globalList =
new List<Quest>();
344 public HashSet<string> completedIDs =
new HashSet<string>();
348 public HashSet<string> completedTypes =
new HashSet<string>();