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