Elin Decompiled Documentation EA 23.102 Nightly
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 if (!source.drama.IsEmpty())
425 {
426 LayerDrama.currentQuest = this;
427 SoundManager.ForceBGM();
428 chara.ShowDialog(source.drama[0], (source.drama.Length > 1) ? source.drama[1] : ("quest_" + source.id));
429 }
430 else
431 {
432 LayerDrama.currentQuest = this;
433 LayerDrama.forceJump = "_quest";
435 }
436 }
437
438 public void Fail()
439 {
440 EClass.Sound.Play("questFail");
441 if (!(this is QuestTrackCraft))
442 {
443 EClass.player.ModFame(-10 - (int)((float)EClass.player.fame * 0.05f));
445 }
446 EClass.game.quests.Remove(this);
447 if (chara != null && chara.quest != null && chara.quest.uid == uid)
448 {
449 chara.quest = null;
450 }
451 if (ClientZone != null)
452 {
454 }
455 OnFail();
456 }
457
458 public virtual void OnFail()
459 {
460 }
461
462 public virtual void ShowCompleteText()
463 {
464 EClass.Sound.Play("questComplete");
465 Msg.Say("completeQuest", GetTitle());
466 }
467
468 public void Complete()
469 {
471 EClass.game.quests.Remove(this);
473 EClass.game.quests.completedTypes.Add(GetType().ToString());
475 OnDropReward();
476 if (Confetti)
477 {
478 EClass.Sound.Play("confetti");
479 ScreenEffect.Play("Firework");
480 }
481 if (chara != null && chara.quest != null && chara.quest.uid == uid)
482 {
483 chara.quest = null;
484 }
486 {
488 }
489 if (ClientZone != null)
490 {
492 }
493 OnComplete();
495 isComplete = true;
496 }
497
498 public virtual void OnBeforeComplete()
499 {
500 }
501
502 public virtual void OnDropReward()
503 {
504 }
505
506 public Thing DropReward(string id)
507 {
508 return DropReward(ThingGen.Create(id));
509 }
510
512 {
513 return EClass.player.DropReward(t);
514 }
515
516 public virtual void OnComplete()
517 {
518 }
519
520 public void CompleteTask()
521 {
523 task = null;
524 }
525
526 public virtual void OnCompleteTask()
527 {
529 }
530
531 public virtual void OnGiveItem(Chara c, Thing t)
532 {
533 if (task != null)
534 {
535 task.OnGiveItem(c, t);
536 if (task.IsComplete())
537 {
538 CompleteTask();
539 }
540 }
541 }
542
543 public virtual void OnKillChara(Chara c)
544 {
545 if (task != null)
546 {
547 task.OnKillChara(c);
548 if (task.IsComplete())
549 {
550 CompleteTask();
551 }
552 }
553 }
554
555 public virtual void OnModKarma(int a)
556 {
557 if (task != null)
558 {
559 task.OnModKarma(a);
560 if (task.IsComplete())
561 {
562 CompleteTask();
563 }
564 }
565 }
566
567 public void NextPhase()
568 {
569 ChangePhase(phase + 1);
570 }
571
572 public void ChangePhase(int a)
573 {
574 phase = a;
576 OnChangePhase(a);
577 }
578
579 public virtual void OnChangePhase(int a)
580 {
581 }
582
583 public string Parse(string s)
584 {
585 if (s.IsEmpty())
586 {
587 return s;
588 }
589 GameLang.refDrama1 = RefDrama1.TagColor(FontColor.QuestObjective);
590 GameLang.refDrama2 = RefDrama2.TagColor(FontColor.QuestObjective);
591 GameLang.refDrama3 = RefDrama3.TagColor(FontColor.QuestObjective);
592 GameLang.refDrama4 = RefDrama4.TagColor(FontColor.QuestObjective);
593 Rand.UseSeed(uid, delegate
594 {
596 if (chara != null)
597 {
598 s = chara.ApplyTone(s);
599 }
600 else
601 {
603 }
604 });
605 return s;
606 }
607
608 public virtual string GetTitle()
609 {
610 string s = "";
611 Rand.UseSeed(uid, delegate
612 {
613 s = source.GetText().Split(Environment.NewLine.ToCharArray()).RandomItem();
614 });
615 return s;
616 }
617
618 public virtual string GetTrackerText()
619 {
620 string text = GetTextProgress();
621 if (text.IsEmpty() && !IsRandomQuest)
622 {
623 text = GetDetail(onJournal: true);
624 }
625 return text;
626 }
627
628 public virtual string GetDetail(bool onJournal = false)
629 {
630 string detail = Parse(GetDetailText(onJournal));
631 if (onJournal)
632 {
633 string textProgress = GetTextProgress();
634 if (!textProgress.IsEmpty())
635 {
636 detail = detail + "\n\n" + textProgress;
637 }
638 }
639 if (task != null)
640 {
641 task.OnGetDetail(ref detail, onJournal);
642 }
643 return GameLang.Convert(detail);
644 }
645
646 public virtual string GetDetailText(bool onJournal = false)
647 {
648 string s = "";
649 Rand.UseSeed(uid, delegate
650 {
651 s = source.GetText("detail").Split(Environment.NewLine.ToCharArray()).RandomItem();
652 });
653 return s.ToTitleCase();
654 }
655
656 public virtual string GetTextProgress()
657 {
658 if (task != null)
659 {
660 return task.GetTextProgress();
661 }
662 return "";
663 }
664
665 public string GetRewardText()
666 {
667 string result = "-";
668 if (rewardMoney != 0 || this is QuestRandom)
669 {
670 result = ("qReward" + RewardSuffix).lang(rewardMoney.ToString() ?? "");
671 }
672 return result;
673 }
674
675 public virtual string GetTalkProgress()
676 {
677 return Parse(source.GetText("talkProgress", returnNull: true));
678 }
679
680 public virtual string GetTalkComplete()
681 {
682 return Parse(source.GetText("talkComplete", returnNull: true));
683 }
684
685 public void UpdateJournal()
686 {
687 SE.WriteJournal();
688 Msg.Say("journalUpdate2", GetTitle());
689 }
690
691 public virtual bool IsDeliverTarget(Chara c)
692 {
693 return false;
694 }
695
696 public virtual bool CanDeliverToClient(Chara c)
697 {
698 return false;
699 }
700
701 public virtual bool CanDeliverToBox(Thing t)
702 {
703 return false;
704 }
705
706 public virtual bool Deliver(Chara c, Thing t = null)
707 {
708 return false;
709 }
710}
FontColor
Definition: FontColor.cs:2
Definition: Card.cs:11
int FameLv
Definition: Card.cs:2158
int Evalue(int ele)
Definition: Card.cs:2431
string ApplyTone(string text, bool stripPun=false)
Definition: Card.cs:6092
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:546
new TraitChara trait
Definition: Chara.cs:488
ConSuspend conSuspend
Definition: Chara.cs:101
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:7166
override bool IsGlobal
Definition: Chara.cs:595
void ShowDialog()
Definition: Chara.cs:6368
override bool IsPCFaction
Definition: Chara.cs:656
Zone currentZone
Definition: Chara.cs:240
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 int rnd(int a)
Definition: EClass.cs:50
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static SourceManager sources
Definition: EClass.cs:42
static int rndHalf(int a)
Definition: EClass.cs:74
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:106
SpatialManager spatials
Definition: Game.cs:152
QuestManager quests
Definition: Game.cs:179
Zone StartZone
Definition: Game.cs:269
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:1879
void ModKarma(int a)
Definition: Player.cs:2289
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2320
int fame
Definition: Player.cs:688
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:498
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:680
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:502
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:438
virtual string GetTrackerText()
Definition: Quest.cs:618
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:646
void CompleteTask()
Definition: Quest.cs:520
virtual void OnGiveItem(Chara c, Thing t)
Definition: Quest.cs:531
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:543
int rewardMoney
Definition: Quest.cs:52
virtual int RangeDeadLine
Definition: Quest.cs:181
virtual void OnFail()
Definition: Quest.cs:458
virtual bool CanDeliverToBox(Thing t)
Definition: Quest.cs:701
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:579
Thing DropReward(string id)
Definition: Quest.cs:506
virtual string GetTitle()
Definition: Quest.cs:608
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:696
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:526
Thing DropReward(Thing t)
Definition: Quest.cs:511
virtual void ShowCompleteText()
Definition: Quest.cs:462
RefChara refChara
Definition: Quest.cs:78
virtual string TextExtra2
Definition: Quest.cs:158
string GetRewardText()
Definition: Quest.cs:665
virtual string GetTalkProgress()
Definition: Quest.cs:675
override bool Equals(object obj)
Definition: Quest.cs:287
bool Confetti
Definition: Quest.cs:109
string Parse(string s)
Definition: Quest.cs:583
virtual string GetDetail(bool onJournal=false)
Definition: Quest.cs:628
QuestTask task
Definition: Quest.cs:76
void NextPhase()
Definition: Quest.cs:567
virtual bool IsVisibleOnQuestBoard()
Definition: Quest.cs:292
virtual string GetTextProgress()
Definition: Quest.cs:656
virtual bool IsDeliverTarget(Chara c)
Definition: Quest.cs:691
string id
Definition: Quest.cs:31
void ChangePhase(int a)
Definition: Quest.cs:572
Quest SetClient(Chara c, bool assignQuest=true)
Definition: Quest.cs:380
int difficulty
Definition: Quest.cs:49
void UpdateJournal()
Definition: Quest.cs:685
void Complete()
Definition: Quest.cs:468
virtual void OnComplete()
Definition: Quest.cs:516
virtual bool Deliver(Chara c, Thing t=null)
Definition: Quest.cs:706
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:555
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:445
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:464