Elin Decompiled Documentation EA 23.130 Nightly
Loading...
Searching...
No Matches
Player.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Linq;
5using System.Runtime.Serialization;
6using System.Text;
7using Newtonsoft.Json;
8using UnityEngine;
9
10public class Player : EClass
11{
12 public class ReturnInfo
13 {
14 public int turns;
15
16 public int uidDest;
17
18 public bool isEvac;
19
20 public bool askDest;
21 }
22
23 public class Pref
24 {
25 [JsonIgnore]
26 public string lastBuildCategory;
27
28 [JsonIgnore]
29 public string lastBuildRecipe;
30
31 public int lastIdTabAbility;
32
33 public bool layerInventory;
34
35 public bool layerAbility;
36
37 public bool layerCraft;
38
39 public bool sort_ascending;
40
42
44
46
48
50
52
54
56
58 }
59
60 public class Stats
61 {
62 public double timeElapsed;
63
64 public int kumi;
65
66 public int mins;
67
68 public int days;
69
70 public int months;
71
72 public int sieges;
73
74 public int turns;
75
76 public int kills;
77
78 public int taxBills;
79
80 public int taxBillsPaid;
81
82 public int digs;
83
84 public int shipNum;
85
86 public int slept;
87
88 public int death;
89
90 public int allyDeath;
91
92 public int deepest;
93
94 public int gambleChest;
95
96 public int gambleChestOpen;
97
98 public long shipMoney;
99
100 [JsonIgnore]
101 public int lastShippingExp;
102
103 [JsonIgnore]
105
106 public int GetShippingBonus(long _a)
107 {
108 long p = 0L;
109 bool first = true;
110 SetBonus(1000000000, 50000);
111 SetBonus(100000000, 20000);
112 SetBonus(10000000, 10000);
113 SetBonus(500000, 5000);
114 SetBonus(250000, 3000);
115 SetBonus(100000, 2000);
116 SetBonus(20000, 1000);
117 SetBonus(6000, 500);
118 SetBonus(2000, 200);
119 SetBonus(0, 100);
120 return (int)p;
121 void SetBonus(int threshold, int div)
122 {
123 if (_a >= threshold)
124 {
125 p += (_a - threshold) / div;
126 if (first)
127 {
128 lastShippingExp = (int)((_a - threshold) % div);
129 lastShippingExpMax = div;
130 first = false;
131 }
132 _a = threshold;
133 }
134 }
135 }
136 }
137
138 public class Flags : EClass
139 {
140 public const int MonoDeparture = 100;
141
142 [JsonProperty]
143 public int[] ints = new int[50];
144
145 [JsonProperty]
146 public List<int> playedStories = new List<int>();
147
148 [JsonProperty]
149 public List<int> availableStories = new List<int>();
150
151 [JsonProperty]
152 public HashSet<int> pleaseDontTouch = new HashSet<int>();
153
154 [JsonProperty]
155 public List<string> reservedTutorial = new List<string>();
156
158
159 public Dictionary<string, ExcelData> storyExcel = new Dictionary<string, ExcelData>();
160
161 public bool gotClickReward
162 {
163 get
164 {
165 return bits[1];
166 }
167 set
168 {
169 bits[1] = value;
170 }
171 }
172
173 public bool welcome
174 {
175 get
176 {
177 return bits[2];
178 }
179 set
180 {
181 bits[2] = value;
182 }
183 }
184
186 {
187 get
188 {
189 return bits[3];
190 }
191 set
192 {
193 bits[3] = value;
194 }
195 }
196
197 public bool fiamaFirstDream
198 {
199 get
200 {
201 return bits[4];
202 }
203 set
204 {
205 bits[4] = value;
206 }
207 }
208
210 {
211 get
212 {
213 return bits[5];
214 }
215 set
216 {
217 bits[5] = value;
218 }
219 }
220
222 {
223 get
224 {
225 return bits[6];
226 }
227 set
228 {
229 bits[6] = value;
230 }
231 }
232
233 public bool isShoesOff
234 {
235 get
236 {
237 return bits[7];
238 }
239 set
240 {
241 bits[7] = value;
242 }
243 }
244
246 {
247 get
248 {
249 return bits[8];
250 }
251 set
252 {
253 bits[8] = value;
254 }
255 }
256
258 {
259 get
260 {
261 return bits[9];
262 }
263 set
264 {
265 bits[9] = value;
266 }
267 }
268
269 public bool elinGift
270 {
271 get
272 {
273 return bits[10];
274 }
275 set
276 {
277 bits[10] = value;
278 }
279 }
280
282 {
283 get
284 {
285 return bits[11];
286 }
287 set
288 {
289 bits[11] = value;
290 }
291 }
292
294 {
295 get
296 {
297 return bits[12];
298 }
299 set
300 {
301 bits[12] = value;
302 }
303 }
304
306 {
307 get
308 {
309 return bits[13];
310 }
311 set
312 {
313 bits[13] = value;
314 }
315 }
316
317 public bool statueShipped
318 {
319 get
320 {
321 return bits[14];
322 }
323 set
324 {
325 bits[14] = value;
326 }
327 }
328
329 public bool little_saved
330 {
331 get
332 {
333 return bits[15];
334 }
335 set
336 {
337 bits[15] = value;
338 }
339 }
340
341 public bool little_killed
342 {
343 get
344 {
345 return bits[16];
346 }
347 set
348 {
349 bits[16] = value;
350 }
351 }
352
353 public bool gotEtherDisease
354 {
355 get
356 {
357 return bits[17];
358 }
359 set
360 {
361 bits[17] = value;
362 }
363 }
364
365 public bool loytelEscaped
366 {
367 get
368 {
369 return bits[18];
370 }
371 set
372 {
373 bits[18] = value;
374 }
375 }
376
378 {
379 get
380 {
381 return bits[19];
382 }
383 set
384 {
385 bits[19] = value;
386 }
387 }
388
389 public bool debugEnabled
390 {
391 get
392 {
393 return bits[20];
394 }
395 set
396 {
397 bits[20] = value;
398 }
399 }
400
401 public bool magicChestSent
402 {
403 get
404 {
405 return bits[21];
406 }
407 set
408 {
409 bits[21] = value;
410 }
411 }
412
414 {
415 get
416 {
417 return bits[22];
418 }
419 set
420 {
421 bits[22] = value;
422 }
423 }
424
425 public bool gotJurePillow
426 {
427 get
428 {
429 return bits[30];
430 }
431 set
432 {
433 bits[30] = value;
434 }
435 }
436
437 public bool gotLoytelMart
438 {
439 get
440 {
441 return bits[31];
442 }
443 set
444 {
445 bits[31] = value;
446 }
447 }
448
449 public int start
450 {
451 get
452 {
453 return ints[10];
454 }
455 set
456 {
457 ints[10] = value;
458 }
459 }
460
461 public int build
462 {
463 get
464 {
465 return ints[11];
466 }
467 set
468 {
469 ints[11] = value;
470 }
471 }
472
473 public int main
474 {
475 get
476 {
477 return ints[13];
478 }
479 set
480 {
481 ints[13] = value;
482 }
483 }
484
485 public int storyFiama
486 {
487 get
488 {
489 return ints[14];
490 }
491 set
492 {
493 ints[14] = value;
494 }
495 }
496
497 public int lutz
498 {
499 get
500 {
501 return ints[15];
502 }
503 set
504 {
505 ints[15] = value;
506 }
507 }
508
510 {
511 get
512 {
513 return ints[16];
514 }
515 set
516 {
517 ints[16] = value;
518 }
519 }
520
521 public int landDeedBought
522 {
523 get
524 {
525 return ints[17];
526 }
527 set
528 {
529 ints[17] = value;
530 }
531 }
532
533 public int loytelMartLv
534 {
535 get
536 {
537 return ints[18];
538 }
539 set
540 {
541 ints[18] = value;
542 }
543 }
544
545 [OnSerializing]
546 private void _OnSerializing(StreamingContext context)
547 {
548 ints[0] = (int)bits.Bits;
549 }
550
551 [OnDeserialized]
552 private void _OnDeserialized(StreamingContext context)
553 {
554 bits.Bits = (uint)ints[0];
555 }
556
557 public void OnCreateGame()
558 {
559 }
560
561 public void OnEnableDebug()
562 {
563 }
564
565 public void OnBuild(Recipe r)
566 {
567 if (build == 0 && r.id == "workbench")
568 {
569 build = 1;
570 }
571 }
572
573 public bool IsStoryPlayed(int flag)
574 {
575 return playedStories.Contains(flag);
576 }
577
578 public int GetStoryRowID(string idBook, string idStep)
579 {
580 foreach (Dictionary<string, string> item in GetStoryExcelData(idBook).sheets["index"].list)
581 {
582 if (item["step"] == idStep)
583 {
584 return item["id"].ToInt();
585 }
586 }
587 return 0;
588 }
589
590 public Dictionary<string, string> GetStoryRow(string idBook, int id)
591 {
592 foreach (Dictionary<string, string> item in GetStoryExcelData(idBook).sheets["index"].list)
593 {
594 if (item["id"].ToInt() == id)
595 {
596 return item;
597 }
598 }
599 return null;
600 }
601
602 public ExcelData GetStoryExcelData(string idBook)
603 {
604 ExcelData excelData = storyExcel.TryGetValue(idBook);
605 if (excelData == null)
606 {
607 excelData = new ExcelData();
608 excelData.path = CorePath.DramaData + idBook + ".xlsx";
609 excelData.BuildList("index");
610 storyExcel.Add(idBook, excelData);
611 }
612 return excelData;
613 }
614
615 public bool PlayStory(string idBook, int id, bool fromBook = false)
616 {
617 if (!fromBook && playedStories.Contains(id))
618 {
619 return false;
620 }
621 Dictionary<string, string> storyRow = GetStoryRow(idBook, id);
622 SoundManager.ForceBGM();
623 LayerDrama.fromBook = fromBook;
624 LayerDrama.Activate(idBook, storyRow["sheet"], storyRow["step"]);
625 if (!fromBook && !playedStories.Contains(id))
626 {
627 playedStories.Add(id);
628 }
629 return true;
630 }
631
632 public bool PlayStory(int id, bool fromBook = false)
633 {
634 return PlayStory("_main", id, fromBook);
635 }
636
637 public void AddStory(int id)
638 {
639 if (!playedStories.Contains(id) && !availableStories.Contains(id))
640 {
641 availableStories.Add(id);
642 Msg.Say("story_added");
643 SE.WriteJournal();
644 }
645 }
646
647 public void OnEnterZone()
648 {
649 if (EClass._zone.id == "nymelle")
650 {
651 if (EClass._zone.lv == -1)
652 {
653 AddStory(10);
654 }
655 if (EClass._zone.lv == -2)
656 {
657 AddStory(20);
658 }
659 if (EClass._zone.lv == -3)
660 {
661 AddStory(30);
662 }
663 }
664 if (QuestMain.Phase == 700 && EClass._zone.id == "lothria")
665 {
666 PlayStory(50);
667 }
669 {
671 availableStories.RemoveAt(0);
672 }
673 }
674
675 public void OnLeaveZone()
676 {
677 if (QuestMain.Phase == 700)
678 {
679 PlayStory(40);
680 }
681 }
682 }
683
684 [JsonProperty]
686
687 [JsonProperty]
688 public int uidChara;
689
690 [JsonProperty]
691 public int uidSpawnZone;
692
693 [JsonProperty]
694 public int tutorialStep;
695
696 [JsonProperty]
697 public int karma;
698
699 [JsonProperty]
700 public int fame;
701
702 [JsonProperty]
703 public int expKnowledge;
704
705 [JsonProperty]
706 public int expInfluence;
707
708 [JsonProperty]
709 public int dateTravel;
710
711 [JsonProperty]
712 public int distanceTravel;
713
714 [JsonProperty]
716
717 [JsonProperty]
718 public int uidLastZone;
719
720 [JsonProperty]
722
723 [JsonProperty]
724 public int totalFeat;
725
726 [JsonProperty]
727 public int taxBills;
728
729 [JsonProperty]
730 public int unpaidBill;
731
732 [JsonProperty]
733 public int bankMoney;
734
735 [JsonProperty]
736 public int holyWell;
737
738 [JsonProperty]
739 public int safeTravel;
740
741 [JsonProperty]
742 public int hotbarPage;
743
744 [JsonProperty]
745 public int little_dead;
746
747 [JsonProperty]
748 public int little_saved;
749
750 [JsonProperty]
751 public int extraTax;
752
753 [JsonProperty]
755
756 [JsonProperty]
757 public int uidLastTown;
758
759 [JsonProperty]
760 public int seedShrine;
761
762 [JsonProperty]
763 public int seedChest;
764
765 [JsonProperty]
766 public int debt;
767
768 [JsonProperty]
769 public int seedFortune;
770
771 [JsonProperty]
772 public int giftJure;
773
774 [JsonProperty]
775 public int luckycoin;
776
777 [JsonProperty]
778 public int customLightMod = 3;
779
780 [JsonProperty]
781 public int questRerollCost;
782
783 [JsonProperty]
784 public int fished;
785
786 [JsonProperty]
787 public float angle;
788
789 [JsonProperty]
790 public bool hasNewQuest;
791
792 [JsonProperty]
793 public bool dailyGacha;
794
795 [JsonProperty]
796 public bool useSubWidgetTheme;
797
798 [JsonProperty]
799 public bool wellWished;
800
801 [JsonProperty]
802 public bool prayed;
803
804 [JsonProperty]
805 public bool questTracker;
806
807 [JsonProperty]
809
810 [JsonProperty]
811 public bool isEditor;
812
813 [JsonProperty]
815
816 [JsonProperty]
817 public bool showWorkaround;
818
819 [JsonProperty]
820 public string title;
821
822 [JsonProperty]
823 public string memo = "";
824
825 [JsonProperty]
826 public string memo2 = "";
827
828 [JsonProperty]
829 public Pref pref = new Pref();
830
831 [JsonProperty]
832 public Stats stats = new Stats();
833
834 [JsonProperty]
836
837 [JsonProperty]
839
840 [JsonProperty]
842
843 [JsonProperty]
845
846 [JsonProperty]
848
849 [JsonProperty]
851
852 [JsonProperty]
854
855 [JsonProperty]
856 public Dictionary<string, int> dialogFlags = new Dictionary<string, int>();
857
858 [JsonProperty]
859 public Dictionary<string, string> hangIcons = new Dictionary<string, string>();
860
861 [JsonProperty]
862 public Dictionary<string, KnownSong> knownSongs = new Dictionary<string, KnownSong>();
863
864 [JsonProperty]
865 public Dictionary<string, string> lastRecipes = new Dictionary<string, string>();
866
867 [JsonProperty]
868 public Dictionary<string, List<string>> priorityActions = new Dictionary<string, List<string>>();
869
870 [JsonProperty]
871 public HashSet<string> trackedCategories = new HashSet<string>();
872
873 [JsonProperty]
874 public HashSet<string> trackedCards = new HashSet<string>();
875
876 [JsonProperty]
877 public HashSet<int> trackedElements = new HashSet<int>();
878
879 [JsonProperty]
880 public HashSet<int> knownBGMs = new HashSet<int>();
881
882 [JsonProperty]
883 public HashSet<int> favAbility = new HashSet<int>();
884
885 [JsonProperty]
886 public HashSet<int> sketches = new HashSet<int>();
887
888 [JsonProperty]
889 public HashSet<int> doneBackers = new HashSet<int>();
890
891 [JsonProperty]
892 public HashSet<int> knownCraft = new HashSet<int>();
893
894 [JsonProperty]
895 public List<int> domains = new List<int>();
896
897 [JsonProperty]
898 public Zone zone;
899
900 [JsonProperty]
902
903 [JsonProperty]
904 public Chara _agent;
905
906 [JsonProperty]
907 public Hoard hoard = new Hoard();
908
909 [JsonProperty]
910 public Flags flags = new Flags();
911
912 [JsonProperty]
914
915 [JsonProperty]
917
918 [JsonProperty]
920
921 [JsonProperty]
922 public Thing eqBait;
923
924 [JsonProperty]
925 public Dictionary<string, Window.SaveData> dataWindow;
926
927 [JsonProperty]
929
930 [JsonProperty]
932
933 [JsonProperty]
934 public Dictionary<int, int> keyItems = new Dictionary<int, int>();
935
936 [JsonProperty]
937 public List<int> uidPickOnLoad = new List<int>();
938
939 [JsonProperty]
940 public List<ShippingResult> shippingResults = new List<ShippingResult>();
941
942 [JsonProperty]
943 public Dictionary<string, HashSet<string>> noRestocks = new Dictionary<string, HashSet<string>>();
944
945 [JsonProperty]
947
948 [JsonProperty]
949 public List<string> favMoongate = new List<string>();
950
951 public static int seedHallucination;
952
953 public static int realHour;
954
956
957 public string windowDataName;
958
960
961 public List<Cell> lastMarkedHighlights = new List<Cell>();
962
964
966
967 public bool forceTalk;
968
969 public bool altHeldPos;
970
971 public bool instaComplete = true;
972
973 public bool regionMoveWarned;
974
975 public bool waitingInput;
976
977 public bool willEndTurn;
978
979 public bool wasDirtyWeight;
980
981 public bool deathDialog;
982
984
985 public bool deathZoneMove;
986
987 public bool haltMove;
988
989 public bool invlunerable;
990
991 public bool willAutoSave;
992
993 public bool resetPrincipal;
994
995 public bool simulatingZone;
996
997 public bool isAutoFarming;
998
999 public bool enemySpotted;
1000
1001 public string deathMsg;
1002
1003 public int countNewline;
1004
1005 public int lightRadius;
1006
1007 public int lastTurn;
1008
1009 public int lastEmptyAlly;
1010
1011 public int ignoreFallOver;
1012
1013 public float lightPower;
1014
1015 public float baseActTime;
1016
1017 public float pickupDelay = 2f;
1018
1019 public Chara chara;
1020
1022
1024
1026
1027 public Act lastAct;
1028
1029 public Vector2 nextMove;
1030
1031 public Vector3 position;
1032
1033 public Action onStartZone;
1034
1036
1037 public List<Chara> listSummon = new List<Chara>();
1038
1040
1042
1044
1046
1048
1050 {
1051 get
1052 {
1053 if (!useSubWidgetTheme)
1054 {
1055 return mainWidgets;
1056 }
1057 return subWidgets;
1058 }
1059 set
1060 {
1062 {
1063 subWidgets = value;
1064 }
1065 else
1066 {
1067 mainWidgets = value;
1068 }
1069 }
1070 }
1071
1073 {
1074 get
1075 {
1076 return RefZone.Get(uidSpawnZone);
1077 }
1078 set
1079 {
1080 uidSpawnZone = RefZone.Set(value);
1081 }
1082 }
1083
1084 public bool EnableDreamStory => false;
1085
1087
1089
1090 public Chara Agent => _agent;
1091
1093
1094 public int MaxAlly => Mathf.Min(Mathf.Max(EClass.pc.CHA / 10, 1), 5) + EClass.pc.Evalue(1645);
1095
1096 public int MaxExpKnowledge => 1000;
1097
1098 public int MaxExpInfluence => 1000;
1099
1101 {
1102 get
1103 {
1104 Quest quest = EClass.game.quests.Get("guild_mage");
1105 if (quest == null)
1106 {
1107 return false;
1108 }
1109 return quest.phase >= 10;
1110 }
1111 }
1112
1114 {
1115 get
1116 {
1117 Quest quest = EClass.game.quests.Get("guild_fighter");
1118 if (quest == null)
1119 {
1120 return false;
1121 }
1122 return quest.phase >= 10;
1123 }
1124 }
1125
1127 {
1128 get
1129 {
1130 Quest quest = EClass.game.quests.Get("guild_thief");
1131 if (quest == null)
1132 {
1133 return false;
1134 }
1135 return quest.phase >= 10;
1136 }
1137 }
1138
1140 {
1141 get
1142 {
1143 Quest quest = EClass.game.quests.Get("guild_merchant");
1144 if (quest == null)
1145 {
1146 return false;
1147 }
1148 return quest.phase >= 10;
1149 }
1150 }
1151
1152 public bool IsCriminal
1153 {
1154 get
1155 {
1156 if (karma < 0)
1157 {
1159 }
1160 return false;
1161 }
1162 }
1163
1164 public void OnCreateGame()
1165 {
1166 karma = 30;
1167 debt = 20000000;
1168 chara = CharaGen.Create("chara");
1170 chara.things.SetSize(7, 5);
1171 chara.c_idTone = "default";
1172 chara.SetInt(56, 1);
1174 chara.faith = EClass.game.religions.Eyth;
1176 uidChara = chara.uid;
1177 Fav fav = IO.LoadFile<Fav>(CorePath.user + "PCC/fav" + EClass.rnd(3));
1178 chara.pccData = IO.Duplicate(fav.data);
1180 RefreshDomain();
1181 _agent = CharaGen.Create("chara");
1182 _agent.c_altName = "stash".lang();
1183 EClass.player.title = "master".lang();
1188 sketches.Add(115);
1189 pref.sort_ascending_shop = true;
1190 EClass.game.config.preference.autoEat = true;
1191 flags.toggleHotbarHighlightDisabled = true;
1192 layerAbilityConfig.hideDepletedSpell = true;
1193 layerAbilityConfig.bgAlpha = 70;
1194 memo = (memo2 = "memo_blank".lang());
1195 }
1196
1197 public void OnStartNewGame()
1198 {
1199 ModKeyItem("old_charm", 1, msg: false);
1200 ModKeyItem("backpack", 1, msg: false);
1201 EClass.player.knownBGMs.Add(1);
1202 EClass.player.knownBGMs.Add(3);
1203 EClass.player.questTracker = true;
1204 trackedCategories.Add("food");
1205 trackedCategories.Add("drink");
1206 trackedCategories.Add("resource");
1207 EClass.game.quests.Start("main");
1208 chara.hp = chara.MaxHP;
1210 chara.elements.SetBase(135, 1);
1211 chara.elements.SetBase(6003, 1);
1212 chara.elements.SetBase(6012, 1);
1213 chara.elements.SetBase(6015, 1);
1214 chara.elements.SetBase(6050, 1);
1215 List<Element> list = new List<Element>();
1216 foreach (Element value in EClass.pc.elements.dict.Values)
1217 {
1218 list.Add(value);
1219 }
1220 foreach (Element item in list)
1221 {
1222 if (item.Value == 0)
1223 {
1225 }
1226 else if (item.HasTag("primary"))
1227 {
1228 item.vTempPotential = Mathf.Max(30, (item.ValueWithoutLink - 8) * 7);
1229 }
1230 }
1231 foreach (BodySlot slot in chara.body.slots)
1232 {
1233 chara.body.Unequip(slot);
1234 }
1236 CreateEquip();
1241 EClass.pc.hunger.value = 30;
1243 EClass.pc.stamina.Set(EClass.pc.stamina.max / 2);
1244 EClass.pc.Refresh();
1245 isEditor = Application.isEditor;
1246 }
1247
1248 public void OnLoad()
1249 {
1250 nums.OnLoad();
1251 codex.OnLoad();
1252 if (dataWindow != null)
1253 {
1254 Window.dictData = dataWindow;
1255 }
1256 EClass.pc.Refresh();
1257 if (Application.isEditor && EClass.debug.resetPlayerConfig && !isEditor)
1258 {
1259 EClass.game.config = new Game.Config();
1260 if (dataWindow != null)
1261 {
1262 dataWindow.Clear();
1263 }
1264 EClass.pc.things.Foreach(delegate(Thing t)
1265 {
1266 t.c_windowSaveData = null;
1267 }, onlyAccessible: false);
1268 }
1269 isEditor = Application.isEditor;
1270 }
1271
1272 public void OnBeforeSave()
1273 {
1274 foreach (Layer layer in EClass.ui.layerFloat.layers)
1275 {
1276 foreach (Window componentsInDirectChild in layer.GetComponentsInDirectChildren<Window>())
1277 {
1278 componentsInDirectChild.UpdateSaveData();
1279 }
1280 }
1282 }
1283
1284 public void SetPriorityAction(string id, Thing t)
1285 {
1286 if (t == null)
1287 {
1288 return;
1289 }
1290 if (id.IsEmpty())
1291 {
1292 foreach (List<string> p in priorityActions.Values)
1293 {
1294 p.ForeachReverse(delegate(string i)
1295 {
1296 if (i == t.id)
1297 {
1298 p.Remove(i);
1299 }
1300 });
1301 }
1302 return;
1303 }
1304 if (!priorityActions.ContainsKey(id))
1305 {
1306 priorityActions[id] = new List<string>();
1307 }
1308 if (!priorityActions[id].Contains(t.id))
1309 {
1310 priorityActions[id].Add(t.id);
1311 }
1312 }
1313
1314 public bool IsPriorityAction(string id, Thing t)
1315 {
1316 if (!id.IsEmpty() && t != null)
1317 {
1318 List<string> list = priorityActions.TryGetValue(id);
1319 if (list != null && list.Contains(t.id))
1320 {
1321 return true;
1322 }
1323 }
1324 return false;
1325 }
1326
1327 public void OnAdvanceRealHour()
1328 {
1329 realHour++;
1330 Msg.Say("time_warn", realHour.ToString() ?? "");
1331 string text = "time_warn_" + realHour;
1332 if (LangGame.Has(text))
1333 {
1334 Msg.Say(text);
1335 }
1336 }
1337
1338 public void RefreshDomain()
1339 {
1340 domains.Clear();
1341 for (int i = 0; i < EClass.pc.job.domain.Length; i += 2)
1342 {
1343 domains.Add(EClass.pc.job.domain[i]);
1344 }
1345 }
1346
1348 {
1349 ElementContainer elementContainer = new ElementContainer();
1350 foreach (int domain in domains)
1351 {
1352 elementContainer.GetOrCreateElement(domain).vSource = 1;
1353 }
1354 return elementContainer;
1355 }
1356
1357 public Layer SelectDomain(Action onKill = null)
1358 {
1359 List<SourceElement.Row> list2 = new List<SourceElement.Row>();
1360 foreach (SourceElement.Row row2 in EClass.sources.elements.rows)
1361 {
1362 if (row2.categorySub == "eleAttack" && !row2.tag.Contains("hidden") && (!row2.tag.Contains("high") || EClass.pc.job.domain.Contains(row2.id)))
1363 {
1364 list2.Add(row2);
1365 }
1366 }
1367 return EClass.ui.AddLayer<LayerList>().SetListCheck(list2, (SourceElement.Row a) => a.GetName(), delegate(SourceElement.Row s, ItemGeneral b)
1368 {
1369 bool flag4 = false;
1370 foreach (int domain in EClass.player.domains)
1371 {
1372 if (s.id == domain)
1373 {
1374 flag4 = true;
1375 }
1376 }
1377 if (flag4)
1378 {
1379 EClass.player.domains.Remove(s.id);
1380 }
1381 else
1382 {
1383 EClass.player.domains.Add(s.id);
1384 }
1385 }, delegate(List<UIList.ButtonPair> list)
1386 {
1387 bool flag = EClass.player.domains.Count >= 3 + EClass.pc.Evalue(1402);
1388 foreach (UIList.ButtonPair item in list)
1389 {
1390 UIButton button = (item.component as ItemGeneral).button1;
1391 SourceElement.Row row = item.obj as SourceElement.Row;
1392 bool flag2 = false;
1393 bool flag3 = false;
1394 foreach (int domain2 in EClass.player.domains)
1395 {
1396 if (row.id == domain2)
1397 {
1398 flag3 = true;
1399 }
1400 }
1401 button.SetCheck(flag3);
1402 for (int i = 0; i < ((EClass.pc.job.id == "swordsage") ? 5 : 3); i++)
1403 {
1404 if (EClass.pc.job.domain[i * 2] == row.id)
1405 {
1406 flag2 = true;
1407 }
1408 }
1409 button.interactable = !flag2 && (!flag || flag3);
1410 button.GetComponent<CanvasGroup>().enabled = !button.interactable;
1411 }
1412 }).SetOnKill(delegate
1413 {
1414 onKill?.Invoke();
1415 });
1416 }
1417
1418 public void RefreshEmptyAlly()
1419 {
1420 int num = MaxAlly - EClass.pc.party.members.Count + 1;
1421 if (num == lastEmptyAlly)
1422 {
1423 return;
1424 }
1425 lastEmptyAlly = num;
1426 foreach (Chara member in EClass.pc.party.members)
1427 {
1428 member.RefreshSpeed();
1429 }
1430 }
1431
1433 {
1434 string text = IO.LoadText(new DirectoryInfo(CorePath.CorePackage.Background).GetFiles("*.txt").RandomItem().FullName);
1435 IO.SaveText(GameIO.pathCurrentSave + "background.txt", text);
1436 }
1437
1438 public string GetBackgroundText()
1439 {
1440 StringBuilder stringBuilder = new StringBuilder(IO.LoadText(GameIO.pathCurrentSave + "background.txt"));
1441 stringBuilder.Replace("#name", EClass.pc.NameSimple);
1442 stringBuilder.Replace("#aka", EClass.pc.Aka);
1443 stringBuilder.Replace("#father", EClass.pc.bio.nameDad);
1444 stringBuilder.Replace("#mother", EClass.pc.bio.nameMom);
1445 stringBuilder.Replace("#birthloc2", EClass.pc.bio.nameHome);
1446 stringBuilder.Replace("#birthloc", EClass.pc.bio.nameLoc);
1447 stringBuilder.Replace("#job", EClass.pc.job.GetName().AddArticle());
1448 stringBuilder.Replace("#year", EClass.pc.bio.birthYear.ToString() ?? "");
1449 stringBuilder.Replace("#month", EClass.pc.bio.birthMonth.ToString() ?? "");
1450 stringBuilder.Replace("#day", EClass.pc.bio.birthDay.ToString() ?? "");
1451 stringBuilder.Replace("#he", (EClass.pc.IsMale ? "he" : "she").lang());
1452 stringBuilder.Replace("#his", (EClass.pc.IsMale ? "his" : "her").lang());
1453 stringBuilder.Replace("#him", (EClass.pc.IsMale ? "him" : "her").lang());
1454 string text = "_period".lang();
1455 string[] array = stringBuilder.ToString().Split(text);
1456 string text2 = "";
1457 if (array.Length != 0)
1458 {
1459 string[] array2 = array;
1460 foreach (string text3 in array2)
1461 {
1462 text2 += text3.ToTitleCase();
1463 if (text3 != text && text3 != Environment.NewLine && text3.Length > 2 && text3 != array[^1])
1464 {
1465 text2 += text;
1466 }
1467 }
1468 }
1469 return text2.TrimEnd(Environment.NewLine.ToCharArray());
1470 }
1471
1473 {
1474 Util.Run(GameIO.pathCurrentSave + "background.txt");
1475 }
1476
1477 public void CreateEquip()
1478 {
1479 Chara chara = EClass.pc;
1481 if (EClass.debug.enable)
1482 {
1483 EClass.pc.EQ_ID("lantern_old");
1484 }
1486 chara.EQ_ID("toolbelt").c_IDTState = 0;
1487 chara.EQ_ID("shirt").c_IDTState = 0;
1489 switch (EClass.pc.job.id)
1490 {
1491 case "paladin":
1492 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8400), 2));
1493 break;
1494 case "inquisitor":
1495 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8706), 4));
1496 break;
1497 case "witch":
1498 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8790), 4));
1499 break;
1500 case "swordsage":
1501 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50300), 4));
1502 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50301), 4));
1503 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50802), 2));
1504 chara.AddCard(ThingGen.Create("tool_talisman"));
1505 break;
1506 }
1507 switch (EClass.pc.job.id)
1508 {
1509 case "wizard":
1510 case "warmage":
1511 case "priest":
1512 case "witch":
1513 {
1514 int num = 0;
1515 foreach (int domain in EClass.player.domains)
1516 {
1517 Element element = Element.Create(domain);
1518 string text = "";
1519 string[] tag = element.source.tag;
1520 foreach (string text2 in tag)
1521 {
1522 if (text != "")
1523 {
1524 break;
1525 }
1526 switch (text2)
1527 {
1528 case "hand":
1529 case "arrow":
1530 case "bolt":
1531 text = text2 + "_";
1532 break;
1533 }
1534 }
1535 if (text != "")
1536 {
1537 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(text + element.source.alias.Replace("ele", "")), 4));
1538 num++;
1539 if (num >= 2)
1540 {
1541 break;
1542 }
1543 }
1544 }
1545 if (EClass.pc.job.id == "priest")
1546 {
1547 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8400), 2));
1548 }
1549 else
1550 {
1551 chara.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8200), 2));
1552 }
1553 break;
1554 }
1555 default:
1556 chara.AddCard(ThingGen.Create("bandage").SetNum(6 + EClass.rnd(3)));
1557 break;
1558 }
1559 static Thing SetSpellbook(Thing t, int charge)
1560 {
1561 t.AddEditorTag(EditorTag.NoReadFail);
1562 t.c_charges = charge;
1563 t.SetBlessedState(BlessedState.Normal);
1564 return t;
1565 }
1566 }
1567
1568 public void DreamSpell()
1569 {
1570 int num = EClass.pc.Evalue(1653);
1571 if (num == 0 && EClass.pc.Evalue(1402) == 0 && EClass.rnd(4) != 0)
1572 {
1573 return;
1574 }
1575 List<SourceElement.Row> list = new List<SourceElement.Row>();
1576 foreach (int domain in EClass.player.domains)
1577 {
1578 Element element = Element.Create(domain);
1579 string text = "";
1580 string[] tag = element.source.tag;
1581 foreach (string text2 in tag)
1582 {
1583 if (text != "")
1584 {
1585 break;
1586 }
1587 bool flag = false;
1588 switch (text2)
1589 {
1590 case "hand":
1591 case "arrow":
1592 case "bolt":
1593 flag = true;
1594 break;
1595 }
1596 if (num >= 3)
1597 {
1598 switch (text2)
1599 {
1600 case "ball":
1601 case "weapon":
1602 case "funnel":
1603 case "miasma":
1604 case "sword":
1605 flag = true;
1606 break;
1607 }
1608 }
1609 if (flag)
1610 {
1611 list.Add(EClass.sources.elements.alias[text2 + "_" + element.source.alias.Replace("ele", "")]);
1612 }
1613 }
1614 }
1615 if (list.Count != 0)
1616 {
1617 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row a) => a.chance);
1618 Element element2 = EClass.pc.elements.GetElement(row.id);
1619 int mtp = ((num == 0) ? 100 : (75 + num * 25));
1620 if (num > 0 || element2 == null || element2.vPotential == 0)
1621 {
1622 Msg.Say("dream_spell", EClass.sources.elements.alias[row.aliasRef].GetText("altname").Split(',')[0].ToLower());
1623 EClass.pc.GainAbility(row.id, mtp);
1624 }
1625 }
1626 }
1627
1628 public void SimulateFaction()
1629 {
1630 simulatingZone = true;
1631 Zone currentZone = EClass.pc.currentZone;
1632 Point point = EClass.pc.pos.Copy();
1633 foreach (FactionBranch child in EClass.pc.faction.GetChildren())
1634 {
1635 if (child.owner != currentZone)
1636 {
1637 EClass.pc.MoveZone(child.owner);
1638 zone = child.owner;
1639 EClass.scene.Init(Scene.Mode.Zone);
1640 }
1641 }
1642 EClass.pc.MoveZone(currentZone, new ZoneTransition
1643 {
1644 state = ZoneTransition.EnterState.Exact,
1645 x = point.x,
1646 z = point.z
1647 });
1648 zone = currentZone;
1649 EClass.scene.Init(Scene.Mode.Zone);
1650 simulatingZone = false;
1651 }
1652
1653 public void ExitBorder(ActPlan p = null)
1654 {
1655 bool flag = EClass.game.quests.HasFarAwayEscort();
1656 string textDialog = (flag ? "ExitZoneEscort" : "ExitZone").lang(EClass._zone.Name);
1657 bool flag2 = EClass.pc.pos.x == EClass._map.bounds.x || EClass.pc.pos.x == EClass._map.bounds.x + EClass._map.bounds.Width - 1 || EClass.pc.pos.z == EClass._map.bounds.z || EClass.pc.pos.z == EClass._map.bounds.z + EClass._map.bounds.Height - 1;
1659 {
1660 if (p == null)
1661 {
1662 Dialog.YesNo(textDialog, delegate
1663 {
1664 EClass.game.quests.HasFarAwayEscort(execute: true);
1666 }, delegate
1667 {
1668 });
1669 return;
1670 }
1671 p.TrySetAct("actNewZone", delegate
1672 {
1673 Dialog.YesNo(textDialog, delegate
1674 {
1675 EClass.game.quests.HasFarAwayEscort(execute: true);
1677 });
1678 return false;
1679 }, CursorSystem.MoveZone, (!flag2) ? 1 : 999);
1680 }
1681 else if (p == null)
1682 {
1684 }
1685 else
1686 {
1687 p.TrySetAct("actNewZone", delegate
1688 {
1690 return false;
1691 }, CursorSystem.MoveZone, (!flag2) ? 1 : 999);
1692 }
1693 }
1694
1695 public bool CanExitBorder(Point p)
1696 {
1697 if (EClass._zone == EClass.game.StartZone && EClass.pc.homeBranch == null)
1698 {
1699 return false;
1700 }
1702 {
1703 return false;
1704 }
1705 if (EClass.pc.held != null && EClass.pc.held.trait.CanOnlyCarry)
1706 {
1707 return false;
1708 }
1709 return true;
1710 }
1711
1712 public void OnExitBorder(Point p)
1713 {
1715 {
1716 int num = 0;
1717 int num2 = 0;
1718 MapBounds bounds = EClass._map.bounds;
1719 if (p.x < bounds.x)
1720 {
1721 num = -1;
1722 }
1723 else if (p.x <= bounds.maxX)
1724 {
1725 num2 = ((p.z >= bounds.z) ? 1 : (-1));
1726 }
1727 else
1728 {
1729 num = 1;
1730 }
1731 ZoneTransition.EnterState state = num switch
1732 {
1733 -1 => ZoneTransition.EnterState.Right,
1734 1 => ZoneTransition.EnterState.Left,
1735 _ => (num2 == 1) ? ZoneTransition.EnterState.Bottom : ZoneTransition.EnterState.Top,
1736 };
1737 float ratePos = ((num == 1 || num == -1) ? ((float)(p.z - bounds.z) / (float)bounds.Height) : ((float)(p.x - bounds.x) / (float)bounds.Width));
1738 ZoneTransition trans = new ZoneTransition
1739 {
1740 state = state,
1741 ratePos = ratePos
1742 };
1743 Point p2 = new Point(EClass._zone.x + num, EClass._zone.y + num2);
1744 EnterLocalZone(p2, trans);
1745 }
1746 else
1747 {
1749 }
1750 }
1751
1752 public void EnterLocalZone(bool encounter = false, Chara mob = null)
1753 {
1754 EnterLocalZone(EClass.pc.pos.Copy(), null, encounter, mob);
1755 }
1756
1757 public void EnterLocalZone(Point p, ZoneTransition trans = null, bool encounter = false, Chara mob = null)
1758 {
1759 if (EClass._zone.IsRegion)
1760 {
1762 }
1764 int enemies = 1;
1765 int roadDist = EClass.scene.elomap.GetRoadDist(p.x, p.z);
1766 int num = ((EClass.pc.homeBranch != null) ? EClass.pc.pos.Distance(EClass.game.StartZone.mapX, EClass.game.StartZone.mapY) : 0);
1767 if (zone == null)
1768 {
1770 {
1771 Msg.Say("zoneBlocked");
1772 return;
1773 }
1774 int num2 = Mathf.Clamp(roadDist - 4, 0, 200) + Mathf.Clamp(num / 4, 0, 10);
1775 if (roadDist > 20)
1776 {
1777 num2 += roadDist - 20;
1778 }
1779 if (num2 >= 100)
1780 {
1781 num2 = 100;
1782 }
1783 Debug.Log("encounter roadiDist:" + roadDist + " homeDist:" + num + " lv:" + num2);
1785 zone._dangerLv = num2;
1786 enemies = 2 + Mathf.Min(num2 / 10, 4) + EClass.rnd(3 + Mathf.Min(num2 / 10, 4));
1787 if (num < 5)
1788 {
1789 enemies = 2;
1790 }
1791 }
1792 else
1793 {
1794 if (zone is Zone_Void && EClass.player.CountKeyItem("license_void") == 0)
1795 {
1796 Msg.Say("voidClosed");
1797 return;
1798 }
1799 if (zone.IsClosed)
1800 {
1801 Msg.Say("zoneClosed");
1802 return;
1803 }
1804 if (zone is Zone_Casino)
1805 {
1806 Msg.Say("zoneNoEntrance");
1807 return;
1808 }
1809 }
1810 if (trans == null)
1811 {
1812 ZoneTransition.EnterState state = (encounter ? ZoneTransition.EnterState.Encounter : ((zone.RegionEnterState == ZoneTransition.EnterState.Dir) ? ZoneTransition.DirToState(EClass.pc.GetCurrentDir()) : zone.RegionEnterState));
1813 trans = new ZoneTransition
1814 {
1815 state = state
1816 };
1817 }
1818 EClass.pc.MoveZone(zone, trans);
1819 if (encounter)
1820 {
1822 {
1823 enemies = enemies,
1824 roadDist = roadDist,
1825 mob = mob
1826 });
1827 }
1828 }
1829
1830 public void MoveZone(Zone z)
1831 {
1832 CursorSystem.ignoreCount = 15;
1833 EClass.ui.hud.transRight.SetActive(enable: false);
1834 zone = z;
1835 if (zone.IsRegion)
1836 {
1838 }
1839 EClass.scene.Init(Scene.Mode.Zone);
1840 if ((bool)WidgetRoster.Instance)
1841 {
1843 }
1844 if ((bool)UIResourceTrack.Instance)
1845 {
1847 }
1848 if ((bool)WidgetMinimap.Instance)
1849 {
1851 }
1853 {
1854 if (LastTravelZone != null)
1855 {
1856 int elapsedHour = EClass.world.date.GetElapsedHour(dateTravel);
1857 int num = elapsedHour / 24;
1858 if (distanceTravel > 2)
1859 {
1860 elapsedHour %= 24;
1861 Msg.Say("travel", LastTravelZone.Name, Date.GetText(dateTravel, Date.TextFormat.Travel), num.ToString() ?? "", elapsedHour.ToString() ?? "");
1862 Msg.Say("travel2", distanceTravel.ToString() ?? "", ((EClass.pc.party.members.Count == 1) ? "you" : "youAndCompanion").lang());
1863 foreach (Chara member in EClass.pc.party.members)
1864 {
1865 member.AddExp(distanceTravel / 3);
1866 member.elements.ModExp(240, 30 + distanceTravel * 5);
1867 }
1868 }
1869 }
1870 distanceTravel = 0;
1873 }
1874 regionMoveWarned = false;
1875 }
1876
1877 public void AddInventory(Card c)
1878 {
1879 EClass.pc.AddCard(c);
1880 }
1881
1882 public void EndTurn(bool consume = true)
1883 {
1884 if (!EClass.pc.isDead)
1885 {
1886 if (consume)
1887 {
1888 EInput.Consume();
1889 }
1890 EClass.pc.SetAI(new GoalEndTurn());
1891 EClass.player.baseActTime = EClass.setting.defaultActPace;
1892 }
1893 }
1894
1895 public void ModFame(int a)
1896 {
1897 if (a == 0)
1898 {
1899 return;
1900 }
1901 if (a >= 0 && fame + a >= 5000 && EClass.player.CountKeyItem("license_adv") == 0)
1902 {
1903 a = 5000 - fame;
1904 if (a <= 0)
1905 {
1906 a = 0;
1907 Msg.Say("gainFameLimit");
1908 return;
1909 }
1910 }
1911 fame += a;
1912 if (fame < 0)
1913 {
1914 fame = 0;
1915 }
1916 if (a > 0)
1917 {
1918 Msg.Say("gainFame", a.ToString() ?? "");
1919 }
1920 else
1921 {
1922 Msg.Say("looseFame", (-a).ToString() ?? "");
1923 }
1924 if (a > 0)
1925 {
1926 Tutorial.Reserve("fame");
1927 }
1928 }
1929
1930 public void ModKeyItem(string alias, int num = 1, bool msg = true)
1931 {
1932 ModKeyItem(EClass.sources.keyItems.alias[alias].id, num, msg);
1933 }
1934
1935 public void ModKeyItem(int id, int num = 1, bool msg = true)
1936 {
1937 if (!keyItems.ContainsKey(id))
1938 {
1939 keyItems.Add(id, 0);
1940 }
1941 keyItems[id] += num;
1942 if (msg)
1943 {
1944 if (num > 0)
1945 {
1946 SE.Play("keyitem");
1947 Msg.Say("get_keyItem", EClass.sources.keyItems.map[id].GetName());
1948 }
1949 else
1950 {
1951 SE.Play("keyitem_lose");
1952 Msg.Say("lose_keyItem", EClass.sources.keyItems.map[id].GetName());
1953 }
1954 }
1955 }
1956
1957 public bool HasKeyItem(string alias)
1958 {
1959 return CountKeyItem(EClass.sources.keyItems.alias[alias].id) > 0;
1960 }
1961
1962 public int CountKeyItem(string alias)
1963 {
1964 return CountKeyItem(EClass.sources.keyItems.alias[alias].id);
1965 }
1966
1967 public int CountKeyItem(int id)
1968 {
1969 if (!keyItems.ContainsKey(id))
1970 {
1971 return 0;
1972 }
1973 return keyItems[id];
1974 }
1975
1976 public void EquipTool(Thing a, bool setHotItem = true)
1977 {
1978 if (a.GetRootCard() != EClass.pc)
1979 {
1980 if (a.parent is Thing)
1981 {
1982 Msg.Say("movedToEquip", a, a.parent as Thing);
1983 }
1984 a = EClass.pc.AddThing(a);
1985 }
1986 if (setHotItem)
1987 {
1989 SE.SelectHotitem();
1990 }
1991 }
1992
1994 {
1996 if (!instance)
1997 {
1998 return;
1999 }
2000 if (currentHotItem != null)
2001 {
2002 if ((bool)instance)
2003 {
2004 instance.buttonHotItem.Refresh();
2005 }
2007 {
2008 currentHotItem = null;
2009 }
2011 {
2012 currentHotItem = null;
2013 }
2014 }
2015 if (EClass.pc.held != null)
2016 {
2018 }
2019 if (currentHotItem == null)
2020 {
2021 if ((bool)instance && instance.selected != -1 && instance.selectedButton.card != null && instance.selectedButton.card.GetRootCard() == EClass.pc && !instance.selectedButton.card.GetRootCard().isDestroyed)
2022 {
2024 }
2025 else
2026 {
2028 }
2029 }
2031 {
2032 if (lastHotItem != null)
2033 {
2035 }
2038 }
2040 WidgetHotbar.dirtyCurrentItem = false;
2042 EClass.core.actionsNextFrame.Add(delegate
2043 {
2044 EClass.core.actionsNextFrame.Add(delegate
2045 {
2047 {
2048 item.invs[0].RefreshHighlight();
2049 }
2050 });
2051 });
2053 }
2054
2056 {
2057 EClass.pc.PickHeld();
2059 SE.SelectHotitem();
2060 }
2061
2063 {
2064 EClass.pc.PickHeld();
2065 if (currentHotItem != item)
2066 {
2068 if (currentHotItem is HotItemHeld hotItemHeld)
2069 {
2070 EClass.pc.HoldCard(hotItemHeld.Thing);
2071 }
2072 }
2074 }
2075
2076 public void TryEquipBait()
2077 {
2078 if (eqBait != null && eqBait.GetRootCard() != EClass.pc)
2079 {
2080 eqBait = null;
2081 }
2082 if (eqBait == null)
2083 {
2085 }
2086 }
2087
2089 {
2091 {
2092 return false;
2093 }
2094 return true;
2095 }
2096
2097 public bool TargetRanged()
2098 {
2100 int num = 999999999;
2101 Chara chara = null;
2103 List<Chara> list = new List<Chara>();
2104 bool flag = false;
2105 if (EInput.isShiftDown && pos.IsValid && pos.HasChara)
2106 {
2107 foreach (Chara chara2 in EClass._map.charas)
2108 {
2109 if (chara2.isSynced && chara2.IsAliveInCurrentZone && !chara2.IsPC && chara2.pos.Equals(pos) && EClass.pc.CanSeeLos(chara2.pos))
2110 {
2111 list.Add(chara2);
2112 }
2113 }
2114 if (list.Count > 0)
2115 {
2116 chara = list.NextItem(EClass.player.target);
2117 flag = true;
2118 }
2119 list.Clear();
2120 }
2121 if (!flag)
2122 {
2123 foreach (Chara chara3 in EClass._map.charas)
2124 {
2125 int num2 = 0;
2126 if (chara3.isSynced && chara3.IsAliveInCurrentZone && !chara3.IsPC && EClass.pc.CanSeeLos(chara3.pos) && EClass.pc.CanSee(chara3) && !chara3.IsFriendOrAbove())
2127 {
2128 if (chara3.IsNeutralOrAbove())
2129 {
2130 num2 += 10000;
2131 }
2132 num2 += EClass.pc.Dist(chara3);
2133 if (num2 < num)
2134 {
2135 chara = chara3;
2136 num = num2;
2137 }
2138 list.Add(chara3);
2139 }
2140 }
2141 if (EInput.isShiftDown)
2142 {
2143 chara = list.NextItem(EClass.player.target);
2144 }
2145 }
2146 if (chara == null)
2147 {
2148 if (target != null)
2149 {
2150 Msg.Say("noTargetFound");
2151 }
2152 target = null;
2153 return false;
2154 }
2155 if (target != chara)
2156 {
2157 Msg.Say("targetSet", chara);
2158 }
2159 target = chara;
2160 return true;
2161 }
2162
2163 public void OnAdvanceHour()
2164 {
2166 if (EClass.pc.Evalue(289) > 0)
2167 {
2168 foreach (Thing item in EClass.pc.things.List((Thing t) => t.c_IDTState == 5, onlyAccessible: true))
2169 {
2171 }
2172 }
2174 {
2175 return;
2176 }
2177 foreach (Chara member in EClass.pc.party.members)
2178 {
2179 member.AddExp(1);
2180 }
2181 }
2182
2183 public void OnAdvanceDay()
2184 {
2187 if (EClass.pc.Evalue(85) > 0)
2188 {
2189 EClass.pc.ModExp(85, 10);
2190 }
2192 prayed = false;
2193 fished = 0;
2194 if (karma < 0 && EClass.rnd(4) == 0)
2195 {
2196 ModKarma(1);
2197 }
2198 }
2199
2200 public bool TryAbortAutoCombat(bool immediate = true)
2201 {
2202 if (!(EClass.pc.ai is GoalAutoCombat))
2203 {
2204 return false;
2205 }
2206 EClass.pc.ai.Cancel();
2207 if (immediate)
2208 {
2210 }
2211 return true;
2212 }
2213
2215 {
2216 foreach (Cell lastMarkedHighlight in lastMarkedHighlights)
2217 {
2218 lastMarkedHighlight.highlight = 0;
2219 }
2220 lastMarkedHighlights.Clear();
2221 }
2222
2223 public void MarkMapHighlights()
2224 {
2227 }
2228
2229 public bool CanAcceptInput()
2230 {
2231 if (EClass.pc.HasNoGoal)
2232 {
2233 return !EClass.pc.WillConsumeTurn();
2234 }
2235 return false;
2236 }
2237
2238 public bool CanSee(Chara c)
2239 {
2240 if (EClass.pc.hasTelepathy && c.race.visibleWithTelepathy)
2241 {
2242 return true;
2243 }
2244 if (!c.IsPC && (EClass.pc.fov == null || EClass.pc.isBlind))
2245 {
2246 return false;
2247 }
2248 if (c.IsPCParty || c.isDead)
2249 {
2250 return true;
2251 }
2252 if (c.IsMultisize)
2253 {
2254 bool canSee = false;
2255 int dist = EClass.pc.Dist(c);
2256 c.ForeachPoint(delegate(Point p, bool main)
2257 {
2258 if (!canSee && (p.cell.light > 0 || dist < 2) && p.cell.pcSync)
2259 {
2260 canSee = true;
2261 }
2262 });
2263 return canSee;
2264 }
2265 if (c.pos.cell.light > 0 || EClass.pc.Dist(c) < 2)
2266 {
2267 return c.pos.cell.pcSync;
2268 }
2269 return false;
2270 }
2271
2272 public void AddExpKnowledge(int a)
2273 {
2274 expKnowledge += a;
2276 {
2277 for (int i = 0; i < expKnowledge / MaxExpKnowledge; i++)
2278 {
2279 LvUp();
2280 }
2282 }
2283 static void LvUp()
2284 {
2285 Msg.Say("DingKnowledge");
2286 }
2287 }
2288
2289 public void AddExpInfluence(int a)
2290 {
2291 expInfluence += a;
2293 {
2294 for (int i = 0; i < expInfluence / MaxExpInfluence; i++)
2295 {
2296 LvUp();
2297 }
2299 }
2300 static void LvUp()
2301 {
2302 Msg.Say("DingInfluence");
2303 }
2304 }
2305
2306 public void ModKarma(int a)
2307 {
2308 if (a != 0)
2309 {
2310 if (a < 0)
2311 {
2312 Tutorial.Reserve("karma");
2313 }
2314 bool flag = karma < 0;
2315 karma += a;
2316 Msg.Say((a > 0) ? "karmaUp" : "karmaDown", a.ToString() ?? "");
2317 if (karma < 0 && !flag)
2318 {
2319 Msg.Say("becomeCriminal");
2322 Tutorial.Reserve("criminal");
2323 }
2324 if (karma >= 0 && flag)
2325 {
2326 Msg.Say("becomeNonCriminal");
2328 }
2329 EClass.game.quests.list.ForeachReverse(delegate(Quest q)
2330 {
2331 q.OnModKarma(a);
2332 });
2333 karma = Mathf.Clamp(karma, -100, 100);
2334 }
2335 }
2336
2337 public Thing DropReward(Thing t, bool silent = false)
2338 {
2339 t.things.DestroyAll();
2341 if (!silent)
2342 {
2343 Msg.Say("dropReward");
2344 }
2345 return t;
2346 }
2347
2348 public bool TooHeavyToMove()
2349 {
2350 if (!EClass.debug.ignoreWeight && EClass.pc.burden.GetPhase() == 4)
2351 {
2352 Msg.Say("tooHeavyToMove");
2354 EInput.Consume(consumeAxis: true);
2355 return true;
2356 }
2357 return false;
2358 }
2359
2360 public void ToggleFavMoongate(string id)
2361 {
2362 if (favMoongate.Contains(id))
2363 {
2364 favMoongate.Remove(id);
2365 }
2366 else
2367 {
2368 favMoongate.Add(id);
2369 }
2370 }
2371}
BlessedState
Definition: BlessedState.cs:2
EditorTag
Definition: EditorTag.cs:2
virtual Status Cancel()
Definition: AIAct.cs:291
Definition: ACT.cs:62
void SetInt(int id, int value=0)
Definition: BaseCard.cs:39
List< Action > actionsNextFrame
Definition: BaseCore.cs:31
int birthYear
Definition: Biography.cs:89
int birthDay
Definition: Biography.cs:65
string nameDad
Definition: Biography.cs:260
string nameHome
Definition: Biography.cs:256
string nameLoc
Definition: Biography.cs:258
string nameMom
Definition: Biography.cs:262
int birthMonth
Definition: Biography.cs:77
Card card
Definition: ButtonGrid.cs:24
virtual void NextFrame()
Definition: Card.cs:11
bool isDestroyed
Definition: Card.cs:71
ElementContainerCard elements
Definition: Card.cs:37
string id
Definition: Card.cs:31
Fov fov
Definition: Card.cs:53
Card AddCard(Card c)
Definition: Card.cs:2936
bool IsMale
Definition: Card.cs:2284
Biography bio
Definition: Card.cs:40
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:2950
int CHA
Definition: Card.cs:2247
ICardParent parent
Definition: Card.cs:51
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2505
Thing SetNum(int a)
Definition: Card.cs:3286
void ForeachPoint(Action< Point, bool > action)
Definition: Card.cs:7190
int c_IDTState
Definition: Card.cs:1217
int c_daysWithGod
Definition: Card.cs:1421
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3642
void RecalculateFOV()
Definition: Card.cs:5797
Point pos
Definition: Card.cs:55
int uid
Definition: Card.cs:118
Trait trait
Definition: Card.cs:49
ThingContainer things
Definition: Card.cs:34
string NameSimple
Definition: Card.cs:2039
Card GetRootCard()
Definition: Card.cs:3217
int Evalue(int ele)
Definition: Card.cs:2471
int Dist(Card c)
Definition: Card.cs:7025
void ModExp(string alias, int a)
Definition: Card.cs:2548
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:2927
void AddExp(int a)
Definition: Card.cs:2816
CardRenderer renderer
Definition: Card.cs:57
Definition: Cell.cs:7
bool pcSync
Definition: Cell.cs:104
byte light
Definition: Cell.cs:60
void AddBodyPart(int ele, Thing thing=null)
Definition: CharaBody.cs:261
void Unequip(Thing thing, bool refresh=true)
Definition: CharaBody.cs:49
List< BodySlot > slots
Definition: CharaBody.cs:8
static Chara Create(string id, int lv=-1)
Definition: CharaGen.cs:17
Definition: Chara.cs:10
void Refresh(bool calledRecursive=false)
Definition: Chara.cs:1518
override bool IsAliveInCurrentZone
Definition: Chara.cs:551
CharaBody body
Definition: Chara.cs:94
Card held
Definition: Chara.cs:70
AIAct ai
Definition: Chara.cs:192
void SetFaction(Faction f)
Definition: Chara.cs:1232
Faction faction
Definition: Chara.cs:417
override bool IsPC
Definition: Chara.cs:602
SourceJob.Row job
Definition: Chara.cs:456
bool CanSeeLos(Card c, int dist=-1)
Definition: Chara.cs:1064
AIAct SetNoGoal()
Definition: Chara.cs:8138
override bool IsPCParty
Definition: Chara.cs:605
Party party
Definition: Chara.cs:43
void HoldCard(Card t, int num=-1)
Definition: Chara.cs:4104
void PickHeld(bool msg=false)
Definition: Chara.cs:4156
bool HasCondition(string alias)
Definition: Chara.cs:8666
AIAct SetAI(AIAct g)
Definition: Chara.cs:8143
bool IsNeutralOrAbove()
Definition: Chara.cs:5986
int GetCurrentDir()
Definition: Chara.cs:3324
override bool isSynced
Definition: Chara.cs:681
override CardRenderer _CreateRenderer()
Definition: Chara.cs:6051
void CalculateMaxStamina()
Definition: Chara.cs:1750
bool CanSee(Card c)
Definition: Chara.cs:1032
bool IsFriendOrAbove()
Definition: Chara.cs:6030
override int MaxHP
Definition: Chara.cs:698
Zone currentZone
Definition: Chara.cs:245
string Aka
Definition: Chara.cs:206
override bool IsDeadOrSleeping
Definition: Chara.cs:563
Stats stamina
Definition: Chara.cs:960
Stats burden
Definition: Chara.cs:958
void GainAbility(int ele, int mtp=100)
Definition: Chara.cs:9210
void RefreshFaithElement()
Definition: Chara.cs:9320
void RefreshSpeed(Element.BonusInfo info=null)
Definition: Chara.cs:1628
Religion faith
Definition: Chara.cs:429
bool HasNoGoal
Definition: Chara.cs:826
override bool IsMultisize
Definition: Chara.cs:696
bool isBlind
Definition: Chara.cs:128
Thing EQ_ID(string s, int mat=-1, Rarity r=Rarity.Random)
Definition: Chara.cs:4589
FactionBranch homeBranch
Definition: Chara.cs:894
bool isDead
Definition: Chara.cs:379
bool TryIdentify(Thing t, int count=1, bool show=true)
Definition: Chara.cs:7313
void SetFaith(string id)
Definition: Chara.cs:1498
bool hasTelepathy
Definition: Chara.cs:138
bool WillConsumeTurn()
Definition: Chara.cs:3362
void MoveZone(string alias)
Definition: Chara.cs:3029
SourceRace.Row race
Definition: Chara.cs:454
void OnLoad()
Definition: CodexManager.cs:23
new GameConfig game
Definition: CoreConfig.cs:598
bool ignoreWeight
Definition: CoreDebug.cs:186
bool enable
Definition: CoreDebug.cs:285
bool resetPlayerConfig
Definition: CoreDebug.cs:119
static string Background
Definition: CorePath.cs:81
CoreConfig config
Definition: Core.cs:70
static CursorInfo MoveZone
Definition: CursorSystem.cs:86
Definition: Date.cs:4
int GetElapsedHour(int rawDate)
Definition: Date.cs:352
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
string GetText(TextFormat format)
Definition: Date.cs:245
TextFormat
Definition: Date.cs:6
Definition: Dialog.cs:7
static Dialog YesNo(string langDetail, Action actionYes, Action actionNo=null, string langYes="yes", string langNo="no")
Definition: Dialog.cs:244
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Scene scene
Definition: EClass.cs:30
static Faction Home
Definition: EClass.cs:26
static int rnd(int a)
Definition: EClass.cs:58
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static UI ui
Definition: EClass.cs:16
static GameSetting setting
Definition: EClass.cs:34
Definition: EInput.cs:8
static void Consume(int _skipFrame)
Definition: EInput.cs:656
static bool isShiftDown
Definition: EInput.cs:261
Dictionary< int, Element > dict
void ModExp(int ele, int a, bool chain=false)
int GetFeatRef(int ele, int idx=0)
Element SetBase(string alias, int v, int potential=0)
void Remove(int id)
Element GetElement(string alias)
SourceElement.Row source
Definition: ELEMENT.cs:269
int vPotential
Definition: ELEMENT.cs:252
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1094
int minX
Definition: EloMap.cs:112
int minY
Definition: EloMap.cs:114
int GetRoadDist(int gx, int gy)
Definition: EloMap.cs:438
List< Dictionary< string, string > > BuildList(string sheetName="_default")
Definition: ExcelData.cs:92
List< FactionBranch > GetChildren()
Definition: FACTION.cs:200
Definition: GameIO.cs:10
static string pathCurrentSave
Definition: GameIO.cs:33
float defaultActPace
Definition: GameSetting.cs:327
Definition: Game.cs:8
ReligionManager religions
Definition: Game.cs:158
Prologue Prologue
Definition: Game.cs:257
QuestManager quests
Definition: Game.cs:179
Zone StartZone
Definition: Game.cs:269
Definition: Hoard.cs:8
virtual void OnUnsetCurrentItem()
Definition: HotItem.cs:83
virtual void OnMarkMapHighlights()
Definition: HotItem.cs:112
virtual void OnSetCurrentItem()
Definition: HotItem.cs:79
virtual Thing Thing
Definition: HotItem.cs:38
void OnCreateGame()
static bool Has(string id)
Definition: LangGame.cs:46
static LayerDrama Activate(string book, string idSheet, string idStep, Chara target=null, Card ref1=null, string tag="")
Definition: LayerDrama.cs:66
static List< LayerInventory > listInv
Definition: Layer.cs:9
int maxX
Definition: MapBounds.cs:14
int Width
Definition: MapBounds.cs:26
int x
Definition: MapBounds.cs:8
int Height
Definition: MapBounds.cs:28
List< Chara > charas
Definition: Map.cs:81
MapBounds bounds
Definition: Map.cs:52
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
void OnAdvanceDay()
void OnCreateGame()
List< Chara > members
Definition: Party.cs:18
void OnBuild(Recipe r)
Definition: Player.cs:565
bool KilledBossInVoid
Definition: Player.cs:306
bool IsStoryPlayed(int flag)
Definition: Player.cs:573
int lutz
Definition: Player.cs:498
void _OnSerializing(StreamingContext context)
Definition: Player.cs:546
bool gotEtherDisease
Definition: Player.cs:354
bool canComupWithFoodRecipe
Definition: Player.cs:294
bool magicChestSent
Definition: Player.cs:402
bool gotJurePillow
Definition: Player.cs:426
int GetStoryRowID(string idBook, string idStep)
Definition: Player.cs:578
bool toggleHotbarHighlightDisabled
Definition: Player.cs:378
bool loytelEscaped
Definition: Player.cs:366
bool PlayStory(int id, bool fromBook=false)
Definition: Player.cs:632
const int MonoDeparture
Definition: Player.cs:140
BitArray32 bits
Definition: Player.cs:157
int[] ints
Definition: Player.cs:143
void _OnDeserialized(StreamingContext context)
Definition: Player.cs:552
bool gotClickReward
Definition: Player.cs:162
int main
Definition: Player.cs:474
Dictionary< string, string > GetStoryRow(string idBook, int id)
Definition: Player.cs:590
ExcelData GetStoryExcelData(string idBook)
Definition: Player.cs:602
int start
Definition: Player.cs:450
bool abilityHighlightDisabled
Definition: Player.cs:258
bool PlayStory(string idBook, int id, bool fromBook=false)
Definition: Player.cs:615
List< int > availableStories
Definition: Player.cs:149
bool helpHighlightDisabled
Definition: Player.cs:210
int build
Definition: Player.cs:462
int storyFiama
Definition: Player.cs:486
void OnEnableDebug()
Definition: Player.cs:561
bool gotLoytelMart
Definition: Player.cs:438
int landDeedBought
Definition: Player.cs:522
void AddStory(int id)
Definition: Player.cs:637
Dictionary< string, ExcelData > storyExcel
Definition: Player.cs:159
bool toggleHotbarHighlightActivated
Definition: Player.cs:414
void OnCreateGame()
Definition: Player.cs:557
bool gotMelilithCurse
Definition: Player.cs:282
List< string > reservedTutorial
Definition: Player.cs:155
List< int > playedStories
Definition: Player.cs:146
HashSet< int > pleaseDontTouch
Definition: Player.cs:152
bool elinGift
Definition: Player.cs:270
bool statueShipped
Definition: Player.cs:318
bool little_saved
Definition: Player.cs:330
bool debugEnabled
Definition: Player.cs:390
void OnLeaveZone()
Definition: Player.cs:675
bool fiamaStoryBookGiven
Definition: Player.cs:186
bool fiamaFirstDream
Definition: Player.cs:198
int daysAfterQuestExploration
Definition: Player.cs:510
bool backpackHighlightDisabled
Definition: Player.cs:246
bool welcome
Definition: Player.cs:174
int loytelMartLv
Definition: Player.cs:534
bool little_killed
Definition: Player.cs:342
bool pickedMelilithTreasure
Definition: Player.cs:222
void OnEnterZone()
Definition: Player.cs:647
bool isShoesOff
Definition: Player.cs:234
UIList.SortMode sortResearch
Definition: Player.cs:47
bool layerCraft
Definition: Player.cs:37
int lastIdTabAbility
Definition: Player.cs:31
LayerPeople.ShowMode modePoeple
Definition: Player.cs:55
UIList.SortMode sortInvShop
Definition: Player.cs:51
UIList.SortMode sortAbility
Definition: Player.cs:53
string lastBuildRecipe
Definition: Player.cs:29
bool sort_ascending
Definition: Player.cs:39
bool layerAbility
Definition: Player.cs:35
string lastBuildCategory
Definition: Player.cs:26
bool layerInventory
Definition: Player.cs:33
bool sort_ascending_shop
Definition: Player.cs:41
UIList.SortMode sortInv
Definition: Player.cs:49
UIList.SortMode sortResources
Definition: Player.cs:43
UIList.SortMode sortPeople
Definition: Player.cs:45
UIInventory.InteractMode interactMode
Definition: Player.cs:57
int digs
Definition: Player.cs:82
int taxBills
Definition: Player.cs:78
int deepest
Definition: Player.cs:92
int sieges
Definition: Player.cs:72
double timeElapsed
Definition: Player.cs:62
int shipNum
Definition: Player.cs:84
int mins
Definition: Player.cs:66
int kills
Definition: Player.cs:76
int turns
Definition: Player.cs:74
int taxBillsPaid
Definition: Player.cs:80
long shipMoney
Definition: Player.cs:98
int GetShippingBonus(long _a)
Definition: Player.cs:106
int lastShippingExp
Definition: Player.cs:101
int gambleChestOpen
Definition: Player.cs:96
int lastShippingExpMax
Definition: Player.cs:104
int allyDeath
Definition: Player.cs:90
int death
Definition: Player.cs:88
int days
Definition: Player.cs:68
int slept
Definition: Player.cs:86
int months
Definition: Player.cs:70
int kumi
Definition: Player.cs:64
int gambleChest
Definition: Player.cs:94
Definition: Player.cs:11
void SimulateFaction()
Definition: Player.cs:1628
int distanceTravel
Definition: Player.cs:712
int debt
Definition: Player.cs:766
int uidLastTown
Definition: Player.cs:757
void DreamSpell()
Definition: Player.cs:1568
bool IsCriminal
Definition: Player.cs:1153
int CountKeyItem(int id)
Definition: Player.cs:1967
ZoneTransition lastTransition
Definition: Player.cs:959
Flags flags
Definition: Player.cs:910
bool TooHeavyToMove()
Definition: Player.cs:2348
void CreateEquip()
Definition: Player.cs:1477
void OnAdvanceDay()
Definition: Player.cs:2183
Dictionary< string, string > lastRecipes
Definition: Player.cs:865
CodexManager codex
Definition: Player.cs:931
Layer SelectDomain(Action onKill=null)
Definition: Player.cs:1357
int lastFelmeraReward
Definition: Player.cs:754
HotItem lastHotItem
Definition: Player.cs:963
HashSet< int > sketches
Definition: Player.cs:886
Zone LastZone
Definition: Player.cs:1088
Action onStartZone
Definition: Player.cs:1033
List< int > uidPickOnLoad
Definition: Player.cs:937
bool showShippingResult
Definition: Player.cs:808
bool hasNewQuest
Definition: Player.cs:790
bool IsMageGuildMember
Definition: Player.cs:1101
void OnStartNewGame()
Definition: Player.cs:1197
bool IsFighterGuildMember
Definition: Player.cs:1114
bool useSubWidgetTheme
Definition: Player.cs:796
bool IsPriorityAction(string id, Thing t)
Definition: Player.cs:1314
bool CanSee(Chara c)
Definition: Player.cs:2238
Dictionary< string, KnownSong > knownSongs
Definition: Player.cs:862
void SetPriorityAction(string id, Thing t)
Definition: Player.cs:1284
RecipeManager recipes
Definition: Player.cs:913
NoticeManager notices
Definition: Player.cs:1023
bool preventDeathPenalty
Definition: Player.cs:983
float angle
Definition: Player.cs:787
WidgetManager.SaveData widgets
Definition: Player.cs:1050
bool deathZoneMove
Definition: Player.cs:985
Window.SaveData windowAllyInv
Definition: Player.cs:946
int uidSpawnZone
Definition: Player.cs:691
void OnAdvanceRealHour()
Definition: Player.cs:1327
void ModFame(int a)
Definition: Player.cs:1895
void ModKarma(int a)
Definition: Player.cs:2306
CinemaConfig cinemaConfig
Definition: Player.cs:928
void RefreshDomain()
Definition: Player.cs:1338
bool CanExitBorder(Point p)
Definition: Player.cs:1695
Pref pref
Definition: Player.cs:829
int karma
Definition: Player.cs:697
void ResetCurrentHotItem()
Definition: Player.cs:2055
Vector2 nextMove
Definition: Player.cs:1029
bool questTracker
Definition: Player.cs:805
void ToggleFavMoongate(string id)
Definition: Player.cs:2360
float lightPower
Definition: Player.cs:1013
Stats stats
Definition: Player.cs:832
void OnExitBorder(Point p)
Definition: Player.cs:1712
int lightRadius
Definition: Player.cs:1005
bool resetPrincipal
Definition: Player.cs:993
bool isAutoFarming
Definition: Player.cs:997
void EquipTool(Thing a, bool setHotItem=true)
Definition: Player.cs:1976
bool haltMove
Definition: Player.cs:987
List< Cell > lastMarkedHighlights
Definition: Player.cs:961
Chara _agent
Definition: Player.cs:904
bool HasKeyItem(string alias)
Definition: Player.cs:1957
bool EnableDreamStory
Definition: Player.cs:1084
bool HasValidRangedTarget()
Definition: Player.cs:2088
void AddInventory(Card c)
Definition: Player.cs:1877
bool invlunerable
Definition: Player.cs:989
int uidLastTravelZone
Definition: Player.cs:715
Zone zone
Definition: Player.cs:898
Chara focusedchara
Definition: Player.cs:1021
int countNewline
Definition: Player.cs:1003
bool wellWished
Definition: Player.cs:799
int seedChest
Definition: Player.cs:763
bool willAutoSave
Definition: Player.cs:991
Zone spawnZone
Definition: Player.cs:1073
int MaxExpInfluence
Definition: Player.cs:1098
float baseActTime
Definition: Player.cs:1015
HashSet< int > knownBGMs
Definition: Player.cs:880
Dictionary< string, int > dialogFlags
Definition: Player.cs:856
int tutorialStep
Definition: Player.cs:694
int customLightMod
Definition: Player.cs:778
string memo
Definition: Player.cs:823
int extraTax
Definition: Player.cs:751
int fished
Definition: Player.cs:784
void EndTurn(bool consume=true)
Definition: Player.cs:1882
ElementContainer GetDomains()
Definition: Player.cs:1347
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:1752
bool enemySpotted
Definition: Player.cs:999
int autoCombatStartHP
Definition: Player.cs:1039
int little_dead
Definition: Player.cs:745
HashSet< int > doneBackers
Definition: Player.cs:889
float pickupDelay
Definition: Player.cs:1017
int totalFeat
Definition: Player.cs:724
void OnBeforeSave()
Definition: Player.cs:1272
int ContainerSearchDistance
Definition: Player.cs:1092
Zone LastTravelZone
Definition: Player.cs:1086
bool TargetRanged()
Definition: Player.cs:2097
int uidLastZone
Definition: Player.cs:718
bool dailyGacha
Definition: Player.cs:793
int holyWell
Definition: Player.cs:736
void AddExpKnowledge(int a)
Definition: Player.cs:2272
HashSet< string > trackedCategories
Definition: Player.cs:871
static int realHour
Definition: Player.cs:953
int MaxAlly
Definition: Player.cs:1094
int CountKeyItem(string alias)
Definition: Player.cs:1962
void TryEquipBait()
Definition: Player.cs:2076
HashSet< int > knownCraft
Definition: Player.cs:892
WidgetManager.SaveData subWidgets
Definition: Player.cs:847
bool wasDirtyWeight
Definition: Player.cs:979
Dictionary< string, HashSet< string > > noRestocks
Definition: Player.cs:943
Zone nextZone
Definition: Player.cs:1041
Dictionary< string, Window.SaveData > dataWindow
Definition: Player.cs:925
int luckycoin
Definition: Player.cs:775
void OnAdvanceHour()
Definition: Player.cs:2163
List< int > domains
Definition: Player.cs:895
bool forceTalk
Definition: Player.cs:967
Point lastZonePos
Definition: Player.cs:919
bool prayed
Definition: Player.cs:802
HashSet< int > favAbility
Definition: Player.cs:883
Window.SaveData dataPick
Definition: Player.cs:850
int ignoreFallOver
Definition: Player.cs:1011
void GenerateBackgroundText()
Definition: Player.cs:1432
void ModKeyItem(string alias, int num=1, bool msg=true)
Definition: Player.cs:1930
int MaxExpKnowledge
Definition: Player.cs:1096
int expInfluence
Definition: Player.cs:706
int seedShrine
Definition: Player.cs:760
int dateTravel
Definition: Player.cs:709
Chara target
Definition: Player.cs:1047
List< ShippingResult > shippingResults
Definition: Player.cs:940
void ModKeyItem(int id, int num=1, bool msg=true)
Definition: Player.cs:1935
bool instaComplete
Definition: Player.cs:971
bool IsThiefGuildMember
Definition: Player.cs:1127
void ExitBorder(ActPlan p=null)
Definition: Player.cs:1653
HotItem currentHotItem
Definition: Player.cs:916
Dictionary< string, string > hangIcons
Definition: Player.cs:859
string title
Definition: Player.cs:820
List< Chara > listSummon
Definition: Player.cs:1037
int unpaidBill
Definition: Player.cs:730
int safeTravel
Definition: Player.cs:739
PopupManager popups
Definition: Player.cs:841
Chara Agent
Definition: Player.cs:1090
Thing eqBait
Definition: Player.cs:922
bool showWorkaround
Definition: Player.cs:817
bool waitingInput
Definition: Player.cs:975
int uidChara
Definition: Player.cs:688
Dictionary< string, List< string > > priorityActions
Definition: Player.cs:868
KnowledgeManager knowledges
Definition: Player.cs:838
void MoveZone(Zone z)
Definition: Player.cs:1830
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2337
Thing renderThing
Definition: Player.cs:1043
ReturnInfo returnInfo
Definition: Player.cs:685
HashSet< string > trackedCards
Definition: Player.cs:874
bool regionMoveWarned
Definition: Player.cs:973
string memo2
Definition: Player.cs:826
int questRerollCost
Definition: Player.cs:781
int lastTurn
Definition: Player.cs:1007
WidgetManager.SaveData mainWidgets
Definition: Player.cs:844
Window.SaveData windowDataCopy
Definition: Player.cs:955
void OnLoad()
Definition: Player.cs:1248
Chara chara
Definition: Player.cs:1019
HotItem hotItemToRestore
Definition: Player.cs:965
static int seedHallucination
Definition: Player.cs:951
int fame
Definition: Player.cs:700
void EnterLocalZone(Point p, ZoneTransition trans=null, bool encounter=false, Chara mob=null)
Definition: Player.cs:1757
void MarkMapHighlights()
Definition: Player.cs:2223
bool isEditor
Definition: Player.cs:811
PlayingSong playingSong
Definition: Player.cs:1035
bool willEndTurn
Definition: Player.cs:977
int bankMoney
Definition: Player.cs:733
HotItemNoItem hotItemNoItem
Definition: Player.cs:1045
void AddExpInfluence(int a)
Definition: Player.cs:2289
bool TryAbortAutoCombat(bool immediate=true)
Definition: Player.cs:2200
void ClearMapHighlights()
Definition: Player.cs:2214
int uidLastShippedZone
Definition: Player.cs:721
Act lastAct
Definition: Player.cs:1027
bool simulatingZone
Definition: Player.cs:995
LayerAbility.Config layerAbilityConfig
Definition: Player.cs:853
int expKnowledge
Definition: Player.cs:703
List< string > favMoongate
Definition: Player.cs:949
bool deathDialog
Definition: Player.cs:981
int little_saved
Definition: Player.cs:748
int lastEmptyAlly
Definition: Player.cs:1009
void OnCreateGame()
Definition: Player.cs:1164
bool CanAcceptInput()
Definition: Player.cs:2229
HashSet< int > trackedElements
Definition: Player.cs:877
int hotbarPage
Definition: Player.cs:742
void RefreshEmptyAlly()
Definition: Player.cs:1418
NumLogManager nums
Definition: Player.cs:835
string GetBackgroundText()
Definition: Player.cs:1438
void RefreshCurrentHotItem()
Definition: Player.cs:1993
void EditBackgroundText()
Definition: Player.cs:1472
bool altHeldPos
Definition: Player.cs:969
QueueManager queues
Definition: Player.cs:1025
Dictionary< int, int > keyItems
Definition: Player.cs:934
string deathMsg
Definition: Player.cs:1001
bool openContainerCenter
Definition: Player.cs:814
int giftJure
Definition: Player.cs:772
Hoard hoard
Definition: Player.cs:907
bool IsMerchantGuildMember
Definition: Player.cs:1140
string windowDataName
Definition: Player.cs:957
Vector3 position
Definition: Player.cs:1031
HotbarManager hotbars
Definition: Player.cs:901
int seedFortune
Definition: Player.cs:769
void SetCurrentHotItem(HotItem item)
Definition: Player.cs:2062
int taxBills
Definition: Player.cs:727
Definition: Point.cs:9
Point Copy()
Definition: Point.cs:479
Point Set(int _x, int _z)
Definition: Point.cs:491
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool Equals(int _x, int _z)
Definition: Point.cs:936
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:857
bool IsValid
Definition: Point.cs:88
int Distance(Point p)
Definition: Point.cs:965
Cell cell
Definition: Point.cs:51
bool HasChara
Definition: Point.cs:226
string idStartZone
Definition: Prologue.cs:7
static int Phase
Definition: QuestMain.cs:23
List< Quest > list
Definition: QuestManager.cs:11
Quest Start(string id, string idGlobalChara)
Definition: QuestManager.cs:41
bool HasFarAwayEscort(bool execute=false)
Quest Get(string id)
Definition: Quest.cs:7
virtual void OnModKarma(int a)
Definition: Quest.cs:555
Definition: Recipe.cs:7
string id
Definition: Recipe.cs:161
static int Set(Zone zone)
Definition: RefZone.cs:12
static Zone Get(int uid)
Definition: RefZone.cs:3
bool CanCreateZone(Point pos)
Definition: Region.cs:215
Zone CreateZone(Point pos)
Definition: Region.cs:226
ReligionEyth Eyth
List< Religion > list
void OnChangeHour()
Definition: Religion.cs:537
Definition: Scene.cs:8
EloMap elomap
Definition: Scene.cs:145
PointTarget mouseTarget
Definition: Scene.cs:131
void Init(Mode newMode)
Definition: Scene.cs:174
Mode
Definition: Scene.cs:10
SourceKeyItem keyItems
SourceElement elements
int mapX
Definition: Spatial.cs:448
int lv
Definition: Spatial.cs:142
int uid
Definition: Spatial.cs:70
bool IsClosed
Definition: Spatial.cs:445
virtual bool IsRegion
Definition: Spatial.cs:501
virtual string Name
Definition: Spatial.cs:495
string id
Definition: Spatial.cs:13
int y
Definition: Spatial.cs:106
int mapY
Definition: Spatial.cs:460
int x
Definition: Spatial.cs:94
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
void DestroyAll(Func< Thing, bool > funcExclude=null)
Thing Find(int uid)
void SetSize(int w, int h)
void Foreach(Action< Thing > action, bool onlyAccessible=true)
static Thing CreateSpellbook(string alias, int num=1)
Definition: ThingGen.cs:151
static Thing CreateCurrency(int a, string id="money")
Definition: ThingGen.cs:37
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
override bool OnUse(Chara c)
virtual HotItem GetHotItem()
Definition: Trait.cs:952
virtual bool CanOnlyCarry
Definition: Trait.cs:287
static void Reserve(string idStep, Action onBeforePlay=null)
Definition: Tutorial.cs:55
Definition: UIList.cs:9
SortMode
Definition: UIList.cs:27
static UIResourceTrack Instance
static WidgetCurrentTool Instance
static void RefreshCurrentHotItem()
ButtonHotItem buttonHotItem
ButtonGrid selectedButton
static WidgetMinimap Instance
static WidgetRoster Instance
Definition: WidgetRoster.cs:36
void OnMoveZone()
Definition: WidgetRoster.cs:91
Definition: Window.cs:13
static Dictionary< string, SaveData > dictData
Definition: Window.cs:594
void UpdateSaveData()
Definition: Window.cs:1093
GameDate date
Definition: World.cs:6
void AddPreEnter(ZonePreEnterEvent e, bool executeIfActiveZone=true)
virtual bool WarnExit
Definition: ZoneInstance.cs:28
static EnterState DirToState(int dir)
Definition: Zone.cs:12
virtual bool BlockBorderExit
Definition: Zone.cs:166
ZoneEventManager events
Definition: Zone.cs:40
void RefreshCriminal()
Definition: Zone.cs:3288
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:170
Zone ParentZone
Definition: Zone.cs:162
bool IsPCFaction
Definition: Zone.cs:464
ZoneInstance instance
Definition: Zone.cs:52
Region Region
Definition: Zone.cs:160
Zone GetZoneAt(int _x, int _y)
Definition: Zone.cs:3257
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893
uint Bits
Definition: BitArray32.cs:6