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