Elin Decompiled Documentation EA 23.229 Stable 1st Anniversary Patch 2
Loading...
Searching...
No Matches
Quest.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using Newtonsoft.Json;
4using UnityEngine;
5
6public class Quest : EClass
7{
8 public enum DifficultyType
9 {
10 Default,
11 Deliver,
12 Supply,
13 Escort,
14 Bulk,
15 Meal,
16 Farm,
17 Music
18 }
19
20 public enum SubReward
21 {
22 plat,
24 money2,
26 }
27
28 public const int PhaseComplete = 999;
29
30 [JsonProperty]
31 public string id;
32
33 [JsonProperty]
34 public int uid;
35
36 [JsonProperty]
37 public int uidClientZone;
38
39 [JsonProperty]
40 public int phase;
41
42 [JsonProperty]
43 public int lv;
44
45 [JsonProperty]
46 public int deadline;
47
48 [JsonProperty]
49 public int difficulty;
50
51 [JsonProperty]
52 public int rewardMoney;
53
54 [JsonProperty]
55 public int bonusMoney;
56
57 [JsonProperty]
58 public int startDate;
59
60 [JsonProperty]
61 public int dangerLv;
62
63 [JsonProperty]
64 public bool isNew;
65
66 [JsonProperty]
67 public bool isComplete;
68
69 [JsonProperty]
70 public bool track;
71
72 [JsonProperty]
73 public Person person;
74
75 [JsonProperty]
77
78 public RefChara refChara = new RefChara();
79
81 {
82 get
83 {
84 Zone zone;
85 if (chara == null || !chara.IsGlobal || chara.currentZone == null)
86 {
88 if (zone == null)
89 {
90 if (source.idZone.IsEmpty())
91 {
92 return EClass.game.StartZone;
93 }
94 return EClass.game.spatials.Find(source.idZone);
95 }
96 }
97 else
98 {
99 zone = chara.currentZone;
100 }
101 return zone;
102 }
103 }
104
106
108
109 public bool Confetti => false;
110
111 public bool IsExpired
112 {
113 get
114 {
115 if (deadline <= 0 || Hours >= 0)
116 {
117 return isComplete;
118 }
119 return true;
120 }
121 }
122
123 public int Hours
124 {
125 get
126 {
127 if (deadline != 0)
128 {
130 }
131 return -1;
132 }
133 }
134
135 public string TextDeadline
136 {
137 get
138 {
139 if (deadline != 0)
140 {
141 return Date.GetText((Hours >= 0) ? Hours : 0);
142 }
143 return "dateDayVoid".lang();
144 }
145 }
146
147 public virtual bool HasDLC => true;
148
149 public virtual string idSource => id;
150
151 public virtual string RewardSuffix => "";
152
153 public virtual bool FameContent => false;
154
155 public virtual string TextExtra => null;
156
157 public virtual string TextExtra2
158 {
159 get
160 {
161 if (!FameContent)
162 {
163 return null;
164 }
165 return "dangerLv".lang(DangerLv.ToString() ?? "");
166 }
167 }
168
169 public virtual int DangerLv => dangerLv;
170
171 public virtual int AffinityGain => 20;
172
173 public virtual int BaseMoney => source.money;
174
175 public virtual int KarmaOnFail => 0;
176
177 public virtual bool CanAbandon => IsRandomQuest;
178
179 public virtual int FameOnComplete => 0;
180
181 public virtual int RangeDeadLine => 0;
182
183 public virtual bool UseInstanceZone => false;
184
185 public virtual bool ForbidTeleport => false;
186
187 public virtual bool TrackOnStart => true;
188
189 public virtual bool RequireClientInSameZone => true;
190
192
193 public virtual Chara DestChara => chara;
194
195 public virtual string RefDrama1
196 {
197 get
198 {
199 if (task == null)
200 {
201 return "";
202 }
203 return task.RefDrama1;
204 }
205 }
206
207 public virtual string RefDrama2
208 {
209 get
210 {
211 if (task == null)
212 {
213 return "";
214 }
215 return task.RefDrama2;
216 }
217 }
218
219 public virtual string RefDrama3
220 {
221 get
222 {
223 if (task == null)
224 {
225 return "";
226 }
227 return task.RefDrama3;
228 }
229 }
230
231 public virtual string RefDrama4 => "";
232
233 public virtual string TitlePrefix => "";
234
235 public virtual bool CanAutoAdvance => true;
236
237 public virtual bool IsRandomQuest => false;
238
239 public virtual string NameDeliver => "";
240
241 public static Quest Create(string _id, string _idPerson = null, Chara c = null)
242 {
243 Quest quest = ClassCache.Create<Quest>(EClass.sources.quests.map[_id].type.IsEmpty("Quest"), "Elin");
244 quest.id = _id;
245 quest.person = new Person(_idPerson);
246 if (quest is QuestDestZone { IsDeliver: not false } questDestZone)
247 {
248 Zone zone = ListDeliver().RandomItem();
249 questDestZone.SetDest(zone, zone.dictCitizen.Keys.RandomItem());
250 }
251 if (c != null)
252 {
253 quest.SetClient(c);
254 }
255 quest.Init();
256 return quest;
257 }
258
259 public static List<Zone> ListDeliver()
260 {
261 List<Zone> list = new List<Zone>();
262 foreach (Zone zone in EClass.game.spatials.Zones)
263 {
264 if (zone != EClass._zone && zone.IsTown && !zone.IsClosed && !zone.IsPCFaction && zone.dictCitizen.Count > 0 && zone.CanBeDeliverDestination)
265 {
266 list.Add(zone);
267 }
268 }
269 return list;
270 }
271
272 public virtual Thing GetDestThing()
273 {
274 return null;
275 }
276
277 public virtual int GetExtraMoney()
278 {
279 return 0;
280 }
281
282 public virtual int GetRewardPlat(int money)
283 {
284 return 1 + EClass.rnd(2) + EClass.rndHalf((int)Mathf.Sqrt(money / 200));
285 }
286
287 public override bool Equals(object obj)
288 {
289 return uid == (obj as Quest)?.uid;
290 }
291
292 public virtual bool IsVisibleOnQuestBoard()
293 {
295 {
296 return false;
297 }
299 {
300 return false;
301 }
302 if ((chara.IsPCFaction || !(this is QuestRandom)) && !EClass._zone.IsPCFaction)
303 {
304 return false;
305 }
306 if (chara != null && chara.trait is TraitLoytel && chara.currentZone != null && !chara.currentZone.IsPCFaction)
307 {
308 return false;
309 }
310 return true;
311 }
312
313 public virtual bool CanStartQuest()
314 {
315 return true;
316 }
317
318 public virtual bool CanUpdateOnTalk(Chara c)
319 {
320 return false;
321 }
322
323 public virtual Zone CreateInstanceZone(Chara c)
324 {
325 return null;
326 }
327
328 public virtual bool UpdateOnTalk()
329 {
330 NextPhase();
331 OnClickQuest();
332 return true;
333 }
334
335 public void Init()
336 {
337 if (RangeDeadLine != 0)
338 {
339 deadline = EClass.world.date.GetRaw() + (36 + EClass.rnd(12)) * 60 + EClass.rnd(RangeDeadLine) * 1440;
340 }
343 isNew = true;
345 switch (difficultyType)
346 {
347 case DifficultyType.Deliver:
348 case DifficultyType.Supply:
349 case DifficultyType.Escort:
350 difficulty = Mathf.Clamp(6 - Hours / 48, 1, 6);
351 break;
352 case DifficultyType.Bulk:
353 difficulty = Mathf.Clamp(EClass.rnd(EClass.rnd(((EClass._zone.branch == null) ? 1 : EClass._zone.branch.lv) + 3)) + 1, 1, 6);
354 break;
355 case DifficultyType.Farm:
356 difficulty = 1 + EClass.rnd(3 + EClass.pc.Evalue(250) / 10);
357 break;
358 case DifficultyType.Music:
359 difficulty = 1 + EClass.rnd(3 + EClass.pc.Evalue(241) / 10);
360 break;
361 default:
362 difficulty = 3 + EClass.rnd(EClass.rnd(4)) - EClass.rnd(4);
363 break;
364 }
365 difficulty = Mathf.Clamp(difficulty, 1, 7);
366 OnInit();
367 if (task != null)
368 {
369 task.OnInit();
370 }
371 int fameLv = EClass.pc.FameLv;
372 dangerLv = Mathf.Max(fameLv + EClass.rnd(fameLv / 10 + 5) - EClass.rnd(fameLv / 10 + 5), 1);
373 rewardMoney = (BaseMoney + EClass.rnd(BaseMoney / 4) + GetExtraMoney()) * (55 + difficulty * 15) / 100;
374 }
375
376 public virtual void OnInit()
377 {
378 }
379
380 public Quest SetClient(Chara c, bool assignQuest = true)
381 {
382 if (c == null)
383 {
384 person = new Person();
385 return this;
386 }
387 if (assignQuest)
388 {
389 c.quest = this;
390 }
391 if (c.currentZone != null)
392 {
394 }
395 person = new Person(c);
396 return this;
397 }
398
399 public void SetTask(QuestTask _task)
400 {
401 task = _task;
402 task.SetOwner(this);
403 }
404
405 public void Start()
406 {
407 OnStart();
408 if (task != null)
409 {
410 task.OnStart();
411 }
412 }
413
414 public virtual void OnStart()
415 {
416 }
417
418 public virtual void OnEnterZone()
419 {
420 }
421
422 public virtual void OnClickQuest()
423 {
424 Chara chara = this.chara;
425 if (chara == null && !source.drama[0].IsEmpty())
426 {
428 }
429 if (!source.drama.IsEmpty())
430 {
431 LayerDrama.currentQuest = this;
432 SoundManager.ForceBGM();
433 chara.ShowDialog(source.drama[0], (source.drama.Length > 1) ? source.drama[1] : ("quest_" + source.id));
434 }
435 else
436 {
437 LayerDrama.currentQuest = this;
438 LayerDrama.forceJump = "_quest";
440 }
441 }
442
443 public void Fail()
444 {
445 EClass.Sound.Play("questFail");
446 if (!(this is QuestTrackCraft))
447 {
448 EClass.player.ModFame(-10 - (int)((float)EClass.player.fame * 0.05f));
450 }
451 EClass.game.quests.Remove(this);
452 if (chara != null && chara.quest != null && chara.quest.uid == uid)
453 {
454 chara.quest = null;
455 }
456 if (ClientZone != null)
457 {
459 }
460 OnFail();
461 }
462
463 public virtual void OnFail()
464 {
465 }
466
467 public virtual void ShowCompleteText()
468 {
469 EClass.Sound.Play("questComplete");
470 Msg.Say("completeQuest", GetTitle());
471 }
472
473 public void Complete()
474 {
476 EClass.game.quests.Remove(this);
478 EClass.game.quests.completedTypes.Add(GetType().ToString());
480 OnDropReward();
481 if (Confetti)
482 {
483 EClass.Sound.Play("confetti");
484 ScreenEffect.Play("Firework");
485 }
486 if (chara != null && chara.quest != null && chara.quest.uid == uid)
487 {
488 chara.quest = null;
489 }
491 {
493 }
494 if (ClientZone != null)
495 {
497 }
498 OnComplete();
500 isComplete = true;
501 }
502
503 public virtual void OnBeforeComplete()
504 {
505 }
506
507 public virtual void OnDropReward()
508 {
509 }
510
511 public Thing DropReward(string id)
512 {
513 return DropReward(ThingGen.Create(id));
514 }
515
517 {
518 return EClass.player.DropReward(t);
519 }
520
521 public virtual void OnComplete()
522 {
523 }
524
525 public void CompleteTask()
526 {
528 task = null;
529 }
530
531 public virtual void OnCompleteTask()
532 {
534 }
535
536 public virtual void OnGiveItem(Chara c, Thing t)
537 {
538 if (task != null)
539 {
540 task.OnGiveItem(c, t);
541 if (task.IsComplete())
542 {
543 CompleteTask();
544 }
545 }
546 }
547
548 public virtual void OnKillChara(Chara c)
549 {
550 if (task != null)
551 {
552 task.OnKillChara(c);
553 if (task.IsComplete())
554 {
555 CompleteTask();
556 }
557 }
558 }
559
560 public virtual void OnModKarma(int a)
561 {
562 if (task != null)
563 {
564 task.OnModKarma(a);
565 if (task.IsComplete())
566 {
567 CompleteTask();
568 }
569 }
570 }
571
572 public void NextPhase()
573 {
574 ChangePhase(phase + 1);
575 }
576
577 public void ChangePhase(int a)
578 {
579 phase = a;
581 OnChangePhase(a);
582 }
583
584 public virtual void OnChangePhase(int a)
585 {
586 }
587
588 public string Parse(string s)
589 {
590 if (s.IsEmpty())
591 {
592 return s;
593 }
594 GameLang.refDrama1 = RefDrama1.TagColor(FontColor.QuestObjective);
595 GameLang.refDrama2 = RefDrama2.TagColor(FontColor.QuestObjective);
596 GameLang.refDrama3 = RefDrama3.TagColor(FontColor.QuestObjective);
597 GameLang.refDrama4 = RefDrama4.TagColor(FontColor.QuestObjective);
598 Rand.UseSeed(uid, delegate
599 {
601 if (chara != null)
602 {
603 s = chara.ApplyTone(s);
604 }
605 else
606 {
608 }
609 });
610 return s;
611 }
612
613 public virtual string GetTitle()
614 {
615 string s = "";
616 Rand.UseSeed(uid, delegate
617 {
618 s = source.GetText().Split(Environment.NewLine.ToCharArray()).RandomItem();
619 });
620 return s;
621 }
622
623 public virtual string GetTrackerText()
624 {
625 string text = GetTextProgress();
626 if (text.IsEmpty() && !IsRandomQuest)
627 {
628 text = GetDetail(onJournal: true);
629 }
630 return text;
631 }
632
633 public virtual string GetDetail(bool onJournal = false)
634 {
635 string detail = Parse(GetDetailText(onJournal));
636 if (onJournal)
637 {
638 string textProgress = GetTextProgress();
639 if (!textProgress.IsEmpty())
640 {
641 detail = detail + "\n\n" + textProgress;
642 }
643 }
644 if (task != null)
645 {
646 task.OnGetDetail(ref detail, onJournal);
647 }
648 return GameLang.Convert(detail);
649 }
650
651 public virtual string GetDetailText(bool onJournal = false)
652 {
653 string s = "";
654 Rand.UseSeed(uid, delegate
655 {
656 s = source.GetText("detail").Split(Environment.NewLine.ToCharArray()).RandomItem();
657 });
658 return s.ToTitleCase();
659 }
660
661 public virtual string GetTextProgress()
662 {
663 if (task != null)
664 {
665 return task.GetTextProgress();
666 }
667 return "";
668 }
669
670 public string GetRewardText()
671 {
672 string result = "-";
673 if (rewardMoney != 0 || this is QuestRandom)
674 {
675 result = ("qReward" + RewardSuffix).lang(rewardMoney.ToString() ?? "");
676 }
677 return result;
678 }
679
680 public virtual string GetTalkProgress()
681 {
682 return Parse(source.GetText("talkProgress", returnNull: true));
683 }
684
685 public virtual string GetTalkComplete()
686 {
687 return Parse(source.GetText("talkComplete", returnNull: true));
688 }
689
690 public void UpdateJournal()
691 {
692 SE.WriteJournal();
693 Msg.Say("journalUpdate2", GetTitle());
694 }
695
696 public virtual bool IsDeliverTarget(Chara c)
697 {
698 return false;
699 }
700
701 public virtual bool CanDeliverToClient(Chara c)
702 {
703 return false;
704 }
705
706 public virtual bool CanDeliverToBox(Thing t)
707 {
708 return false;
709 }
710
711 public virtual bool Deliver(Chara c, Thing t = null)
712 {
713 return false;
714 }
715}
FontColor
Definition: FontColor.cs:2
Chara Find(string id)
Definition: CardManager.cs:20
GlobalCharaList globalCharas
Definition: CardManager.cs:46
Definition: Card.cs:11
int FameLv
Definition: Card.cs:2286
int Evalue(int ele)
Definition: Card.cs:2559
string ApplyTone(string text, bool stripPun=false)
Definition: Card.cs:6736
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:559
new TraitChara trait
Definition: Chara.cs:501
ConSuspend conSuspend
Definition: Chara.cs:104
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:7794
override bool IsGlobal
Definition: Chara.cs:608
void ShowDialog()
Definition: Chara.cs:6920
override bool IsPCFaction
Definition: Chara.cs:669
Zone currentZone
Definition: Chara.cs:253
Quest quest
Definition: Chara.cs:24
Definition: Date.cs:4
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
string GetText(TextFormat format)
Definition: Date.cs:245
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:337
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static int rnd(long a)
Definition: EClass.cs:58
static SourceManager sources
Definition: EClass.cs:42
static int rndHalf(int a)
Definition: EClass.cs:87
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static SoundManager Sound
Definition: EClass.cs:46
static string ConvertDrama(string text, Chara c=null)
Definition: GameLang.cs:14
static string Convert(string text)
Definition: GameLang.cs:124
SpatialManager spatials
Definition: Game.cs:152
CardManager cards
Definition: Game.cs:155
QuestManager quests
Definition: Game.cs:179
Zone StartZone
Definition: Game.cs:274
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Person.cs:6
string tones
Definition: Person.cs:17
int gender
Definition: Person.cs:23
Chara chara
Definition: Person.cs:36
void ModFame(int a)
Definition: Player.cs:2074
void ModKarma(int a)
Definition: Player.cs:2496
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2527
int fame
Definition: Player.cs:878
HashSet< string > completedIDs
Definition: QuestManager.cs:17
void Complete(Quest q)
Definition: QuestManager.cs:98
void Remove(Quest q)
Definition: QuestManager.cs:67
HashSet< string > completedTypes
Definition: QuestManager.cs:20
virtual void OnGetDetail(ref string detail, bool onJournal)
Definition: QuestTask.cs:49
virtual void OnInit()
Definition: QuestTask.cs:24
virtual void OnGiveItem(Chara c, Thing t)
Definition: QuestTask.cs:36
virtual void OnKillChara(Chara c)
Definition: QuestTask.cs:32
virtual string RefDrama2
Definition: QuestTask.cs:10
virtual bool IsComplete()
Definition: QuestTask.cs:19
virtual string RefDrama1
Definition: QuestTask.cs:8
virtual string RefDrama3
Definition: QuestTask.cs:12
void SetOwner(Quest quest)
Definition: QuestTask.cs:14
virtual string GetTextProgress()
Definition: QuestTask.cs:44
virtual void OnModKarma(int a)
Definition: QuestTask.cs:40
virtual void OnStart()
Definition: QuestTask.cs:28
Definition: Quest.cs:7
virtual bool CanUpdateOnTalk(Chara c)
Definition: Quest.cs:318
bool isComplete
Definition: Quest.cs:67
static List< Zone > ListDeliver()
Definition: Quest.cs:259
SubReward
Definition: Quest.cs:21
virtual bool IsRandomQuest
Definition: Quest.cs:237
virtual void OnInit()
Definition: Quest.cs:376
virtual int FameOnComplete
Definition: Quest.cs:179
int startDate
Definition: Quest.cs:58
bool IsExpired
Definition: Quest.cs:112
const int PhaseComplete
Definition: Quest.cs:28
virtual void OnBeforeComplete()
Definition: Quest.cs:503
int uid
Definition: Quest.cs:34
int Hours
Definition: Quest.cs:124
virtual int DangerLv
Definition: Quest.cs:169
virtual string RefDrama2
Definition: Quest.cs:208
virtual int GetRewardPlat(int money)
Definition: Quest.cs:282
virtual string GetTalkComplete()
Definition: Quest.cs:685
virtual bool UpdateOnTalk()
Definition: Quest.cs:328
void SetTask(QuestTask _task)
Definition: Quest.cs:399
virtual bool FameContent
Definition: Quest.cs:153
virtual void OnEnterZone()
Definition: Quest.cs:418
virtual void OnDropReward()
Definition: Quest.cs:507
virtual bool UseInstanceZone
Definition: Quest.cs:183
string TextDeadline
Definition: Quest.cs:136
virtual bool HasDLC
Definition: Quest.cs:147
virtual DifficultyType difficultyType
Definition: Quest.cs:191
Person person
Definition: Quest.cs:73
virtual bool RequireClientInSameZone
Definition: Quest.cs:189
virtual Chara DestChara
Definition: Quest.cs:193
virtual void OnStart()
Definition: Quest.cs:414
virtual bool CanAbandon
Definition: Quest.cs:177
virtual string RefDrama1
Definition: Quest.cs:196
void Fail()
Definition: Quest.cs:443
virtual string GetTrackerText()
Definition: Quest.cs:623
int deadline
Definition: Quest.cs:46
virtual int GetExtraMoney()
Definition: Quest.cs:277
virtual bool CanStartQuest()
Definition: Quest.cs:313
int dangerLv
Definition: Quest.cs:61
virtual int AffinityGain
Definition: Quest.cs:171
virtual int BaseMoney
Definition: Quest.cs:173
virtual string GetDetailText(bool onJournal=false)
Definition: Quest.cs:651
void CompleteTask()
Definition: Quest.cs:525
virtual void OnGiveItem(Chara c, Thing t)
Definition: Quest.cs:536
void Start()
Definition: Quest.cs:405
virtual bool TrackOnStart
Definition: Quest.cs:187
void Init()
Definition: Quest.cs:335
virtual void OnKillChara(Chara c)
Definition: Quest.cs:548
int rewardMoney
Definition: Quest.cs:52
virtual int RangeDeadLine
Definition: Quest.cs:181
virtual void OnFail()
Definition: Quest.cs:463
virtual bool CanDeliverToBox(Thing t)
Definition: Quest.cs:706
virtual string RefDrama3
Definition: Quest.cs:220
Zone ClientZone
Definition: Quest.cs:81
int phase
Definition: Quest.cs:40
int bonusMoney
Definition: Quest.cs:55
Chara chara
Definition: Quest.cs:105
virtual string idSource
Definition: Quest.cs:149
virtual void OnChangePhase(int a)
Definition: Quest.cs:584
Thing DropReward(string id)
Definition: Quest.cs:511
virtual string GetTitle()
Definition: Quest.cs:613
virtual string NameDeliver
Definition: Quest.cs:239
virtual Thing GetDestThing()
Definition: Quest.cs:272
virtual bool CanAutoAdvance
Definition: Quest.cs:235
int uidClientZone
Definition: Quest.cs:37
virtual string RewardSuffix
Definition: Quest.cs:151
int lv
Definition: Quest.cs:43
virtual int KarmaOnFail
Definition: Quest.cs:175
virtual bool CanDeliverToClient(Chara c)
Definition: Quest.cs:701
virtual string RefDrama4
Definition: Quest.cs:231
virtual void OnClickQuest()
Definition: Quest.cs:422
bool isNew
Definition: Quest.cs:64
virtual bool ForbidTeleport
Definition: Quest.cs:185
virtual void OnCompleteTask()
Definition: Quest.cs:531
Thing DropReward(Thing t)
Definition: Quest.cs:516
virtual void ShowCompleteText()
Definition: Quest.cs:467
RefChara refChara
Definition: Quest.cs:78
virtual string TextExtra2
Definition: Quest.cs:158
string GetRewardText()
Definition: Quest.cs:670
virtual string GetTalkProgress()
Definition: Quest.cs:680
override bool Equals(object obj)
Definition: Quest.cs:287
bool Confetti
Definition: Quest.cs:109
string Parse(string s)
Definition: Quest.cs:588
virtual string GetDetail(bool onJournal=false)
Definition: Quest.cs:633
QuestTask task
Definition: Quest.cs:76
void NextPhase()
Definition: Quest.cs:572
virtual bool IsVisibleOnQuestBoard()
Definition: Quest.cs:292
virtual string GetTextProgress()
Definition: Quest.cs:661
virtual bool IsDeliverTarget(Chara c)
Definition: Quest.cs:696
string id
Definition: Quest.cs:31
void ChangePhase(int a)
Definition: Quest.cs:577
Quest SetClient(Chara c, bool assignQuest=true)
Definition: Quest.cs:380
int difficulty
Definition: Quest.cs:49
void UpdateJournal()
Definition: Quest.cs:690
void Complete()
Definition: Quest.cs:473
virtual void OnComplete()
Definition: Quest.cs:521
virtual bool Deliver(Chara c, Thing t=null)
Definition: Quest.cs:711
DifficultyType
Definition: Quest.cs:9
virtual Zone CreateInstanceZone(Chara c)
Definition: Quest.cs:323
virtual string TextExtra
Definition: Quest.cs:155
bool track
Definition: Quest.cs:70
virtual SourceQuest.Row source
Definition: Quest.cs:107
static Quest Create(string _id, string _idPerson=null, Chara c=null)
Definition: Quest.cs:241
virtual string TitlePrefix
Definition: Quest.cs:233
virtual void OnModKarma(int a)
Definition: Quest.cs:560
Definition: Rand.cs:4
static void UseSeed(int seed, Action action)
Definition: Rand.cs:22
static Zone Get(int uid)
Definition: RefZone.cs:3
static void Play(string id)
Definition: ScreenEffect.cs:17
SourceQuest quests
List< Zone > Zones
Zone Find(string id)
int uid
Definition: Spatial.cs:70
bool IsClosed
Definition: Spatial.cs:457
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
GameDate date
Definition: World.cs:6
Definition: Zone.cs:12
Dictionary< int, string > dictCitizen
Definition: Zone.cs:49
HashSet< int > completedQuests
Definition: Zone.cs:37
FactionBranch branch
Definition: Zone.cs:34
virtual bool CanBeDeliverDestination
Definition: Zone.cs:222
virtual bool IsTown
Definition: Zone.cs:220
bool IsPCFaction
Definition: Zone.cs:470