Elin Decompiled Documentation EA 23.345.1 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 {
890 {
892 EClass.game.quests.Get<QuestIntoDarkness>().UpdateOnTalk();
893 }
895 {
896 EClass.game.quests.Get<QuestIntoDarkness>().UpdateOnTalk();
897 }
899 {
900 EClass.game.quests.Get<QuestIntoDarkness>().UpdateOnTalk();
901 }
903 {
904 EClass.game.quests.Get<QuestIntoDarkness>().UpdateOnTalk();
905 }
906 }
907 }
908
909 public void OnLeaveZone()
910 {
912 {
913 PlayStory(40);
914 }
915 }
916 }
917
918 public class PartySetup : EClass
919 {
920 [JsonProperty]
921 public List<int> uids = new List<int>();
922
923 [JsonProperty]
924 public int ride;
925
926 [JsonProperty]
927 public int parasite;
928 }
929
930 public const int MaxPartySetup = 5;
931
932 [JsonProperty]
934
935 [JsonProperty]
936 public int uidChara;
937
938 [JsonProperty]
939 public int uidSpawnZone;
940
941 [JsonProperty]
942 public int tutorialStep;
943
944 [JsonProperty]
945 public int karma;
946
947 [JsonProperty]
948 public int fame;
949
950 [JsonProperty]
951 public int expKnowledge;
952
953 [JsonProperty]
954 public int expInfluence;
955
956 [JsonProperty]
957 public int dateTravel;
958
959 [JsonProperty]
960 public int distanceTravel;
961
962 [JsonProperty]
964
965 [JsonProperty]
966 public int uidLastZone;
967
968 [JsonProperty]
970
971 [JsonProperty]
972 public int totalFeat;
973
974 [JsonProperty]
975 public int taxBills;
976
977 [JsonProperty]
978 public int unpaidBill;
979
980 [JsonProperty]
981 public int bankMoney;
982
983 [JsonProperty]
984 public int holyWell;
985
986 [JsonProperty]
987 public int safeTravel;
988
989 [JsonProperty]
990 public int hotbarPage;
991
992 [JsonProperty]
993 public int little_dead;
994
995 [JsonProperty]
996 public int little_saved;
997
998 [JsonProperty]
999 public int extraTax;
1000
1001 [JsonProperty]
1003
1004 [JsonProperty]
1005 public int uidLastTown;
1006
1007 [JsonProperty]
1008 public int seedShrine;
1009
1010 [JsonProperty]
1011 public int seedChest;
1012
1013 [JsonProperty]
1014 public int debt;
1015
1016 [JsonProperty]
1017 public int seedFortune;
1018
1019 [JsonProperty]
1020 public int giftJure;
1021
1022 [JsonProperty]
1023 public int luckycoin;
1024
1025 [JsonProperty]
1026 public int customLightMod = 3;
1027
1028 [JsonProperty]
1030
1031 [JsonProperty]
1032 public int fished;
1033
1034 [JsonProperty]
1035 public int fishArtifact;
1036
1037 [JsonProperty]
1039
1040 [JsonProperty]
1041 public float angle;
1042
1043 [JsonProperty]
1044 public bool hasNewQuest;
1045
1046 [JsonProperty]
1047 public bool dailyGacha;
1048
1049 [JsonProperty]
1051
1052 [JsonProperty]
1053 public bool wellWished;
1054
1055 [JsonProperty]
1056 public bool prayed;
1057
1058 [JsonProperty]
1059 public bool questTracker;
1060
1061 [JsonProperty]
1063
1064 [JsonProperty]
1065 public bool isEditor;
1066
1067 [JsonProperty]
1069
1070 [JsonProperty]
1071 public bool showWorkaround;
1072
1073 [JsonProperty]
1074 public string title;
1075
1076 [JsonProperty]
1077 public string memo = "";
1078
1079 [JsonProperty]
1080 public string memo2 = "";
1081
1082 [JsonProperty]
1083 public Pref pref = new Pref();
1084
1085 [JsonProperty]
1086 public Stats stats = new Stats();
1087
1088 [JsonProperty]
1090
1091 [JsonProperty]
1093
1094 [JsonProperty]
1096
1097 [JsonProperty]
1099
1100 [JsonProperty]
1102
1103 [JsonProperty]
1105
1106 [JsonProperty]
1108
1109 [JsonProperty]
1110 public Dictionary<string, int> dialogFlags = new Dictionary<string, int>();
1111
1112 [JsonProperty]
1113 public Dictionary<string, string> hangIcons = new Dictionary<string, string>();
1114
1115 [JsonProperty]
1116 public Dictionary<string, KnownSong> knownSongs = new Dictionary<string, KnownSong>();
1117
1118 [JsonProperty]
1119 public Dictionary<string, string> lastRecipes = new Dictionary<string, string>();
1120
1121 [JsonProperty]
1122 public Dictionary<string, List<string>> priorityActions = new Dictionary<string, List<string>>();
1123
1124 [JsonProperty]
1125 public HashSet<string> trackedCategories = new HashSet<string>();
1126
1127 [JsonProperty]
1128 public HashSet<string> trackedCards = new HashSet<string>();
1129
1130 [JsonProperty]
1131 public HashSet<int> trackedElements = new HashSet<int>();
1132
1133 [JsonProperty]
1134 public HashSet<int> knownBGMs = new HashSet<int>();
1135
1136 [JsonProperty]
1137 public HashSet<int> favAbility = new HashSet<int>();
1138
1139 [JsonProperty]
1140 public HashSet<int> sketches = new HashSet<int>();
1141
1142 [JsonProperty]
1143 public HashSet<int> doneBackers = new HashSet<int>();
1144
1145 [JsonProperty]
1146 public HashSet<int> knownCraft = new HashSet<int>();
1147
1148 [JsonProperty]
1149 public List<int> domains = new List<int>();
1150
1151 [JsonProperty]
1152 public Zone zone;
1153
1154 [JsonProperty]
1156
1157 [JsonProperty]
1159
1160 [JsonProperty]
1161 public Hoard hoard = new Hoard();
1162
1163 [JsonProperty]
1164 public Flags flags = new Flags();
1165
1166 [JsonProperty]
1168
1169 [JsonProperty]
1171
1172 [JsonProperty]
1174
1175 [JsonProperty]
1177
1178 [JsonProperty]
1179 public Dictionary<string, Window.SaveData> dataWindow;
1180
1181 [JsonProperty]
1183
1184 [JsonProperty]
1186
1187 [JsonProperty]
1188 public Dictionary<int, int> keyItems = new Dictionary<int, int>();
1189
1190 [JsonProperty]
1191 public List<int> uidPickOnLoad = new List<int>();
1192
1193 [JsonProperty]
1194 public List<ShippingResult> shippingResults = new List<ShippingResult>();
1195
1196 [JsonProperty]
1197 public Dictionary<string, HashSet<string>> noRestocks = new Dictionary<string, HashSet<string>>();
1198
1199 [JsonProperty]
1201
1202 [JsonProperty]
1203 public List<string> favMoongate = new List<string>();
1204
1205 [JsonProperty]
1207
1208 public static int seedHallucination;
1209
1210 public static int realHour;
1211
1213
1214 public string windowDataName;
1215
1217
1218 public List<Cell> lastMarkedHighlights = new List<Cell>();
1219
1221
1223
1224 public bool forceTalk;
1225
1226 public bool altHeldPos;
1227
1228 public bool instaComplete = true;
1229
1230 public bool regionMoveWarned;
1231
1232 public bool waitingInput;
1233
1234 public bool willEndTurn;
1235
1236 public bool wasDirtyWeight;
1237
1238 public bool deathDialog;
1239
1241
1242 public bool deathZoneMove;
1243
1244 public bool haltMove;
1245
1246 public bool invlunerable;
1247
1248 public bool willAutoSave;
1249
1250 public bool resetPrincipal;
1251
1252 public bool simulatingZone;
1253
1254 public bool isAutoFarming;
1255
1256 public bool enemySpotted;
1257
1258 public string deathMsg;
1259
1260 public int countNewline;
1261
1262 public int lightRadius;
1263
1264 public int lastTurn;
1265
1266 public int lastEmptyAlly;
1267
1268 public int ignoreFallOver;
1269
1270 public float lightPower;
1271
1272 public float baseActTime;
1273
1274 public float pickupDelay = 2f;
1275
1276 public float renderExtraTime;
1277
1278 public Chara chara;
1279
1281
1283
1285
1286 public Act lastAct;
1287
1288 public Vector2 nextMove;
1289
1290 public Vector3 position;
1291
1292 public Action onStartZone;
1293
1295
1296 public List<Chara> listCarryoverMap = new List<Chara>();
1297
1299
1301
1303
1305
1307
1309 {
1310 get
1311 {
1312 if (!useSubWidgetTheme)
1313 {
1314 return mainWidgets;
1315 }
1316 return subWidgets;
1317 }
1318 set
1319 {
1321 {
1322 subWidgets = value;
1323 }
1324 else
1325 {
1326 mainWidgets = value;
1327 }
1328 }
1329 }
1330
1332 {
1333 get
1334 {
1335 return RefZone.Get(uidSpawnZone);
1336 }
1337 set
1338 {
1339 uidSpawnZone = RefZone.Set(value);
1340 }
1341 }
1342
1343 public bool EnableDreamStory => false;
1344
1346
1348
1349 public Chara Agent => _agent;
1350
1352
1353 public int MaxAlly => Mathf.Min(Mathf.Max(EClass.pc.CHA / 10, 1), 5) + EClass.pc.Evalue(1645);
1354
1355 public int MaxExpKnowledge => 1000;
1356
1357 public int MaxExpInfluence => 1000;
1358
1360 {
1361 get
1362 {
1363 Quest quest = EClass.game.quests.Get("guild_mage");
1364 if (quest == null)
1365 {
1366 return false;
1367 }
1368 return quest.phase >= 10;
1369 }
1370 }
1371
1373 {
1374 get
1375 {
1376 Quest quest = EClass.game.quests.Get("guild_fighter");
1377 if (quest == null)
1378 {
1379 return false;
1380 }
1381 return quest.phase >= 10;
1382 }
1383 }
1384
1386 {
1387 get
1388 {
1389 Quest quest = EClass.game.quests.Get("guild_thief");
1390 if (quest == null)
1391 {
1392 return false;
1393 }
1394 return quest.phase >= 10;
1395 }
1396 }
1397
1399 {
1400 get
1401 {
1402 Quest quest = EClass.game.quests.Get("guild_merchant");
1403 if (quest == null)
1404 {
1405 return false;
1406 }
1407 return quest.phase >= 10;
1408 }
1409 }
1410
1411 public bool IsCriminal
1412 {
1413 get
1414 {
1415 if (karma < 0)
1416 {
1418 }
1419 return false;
1420 }
1421 }
1422
1423 public void OnCreateGame()
1424 {
1425 karma = 30;
1426 debt = 20000000;
1427 chara = CharaGen.Create("chara");
1429 chara.things.SetSize(7, 5);
1430 chara.c_idTone = "default";
1431 chara.SetInt(56, 1);
1433 chara.faith = EClass.game.religions.Eyth;
1435 uidChara = chara.uid;
1436 Fav fav = IO.LoadFile<Fav>(CorePath.user + "PCC/fav" + EClass.rnd(3));
1437 chara.pccData = IO.Duplicate(fav.data);
1439 RefreshDomain();
1440 _agent = CharaGen.Create("chara");
1441 _agent.c_altName = "stash".lang();
1442 EClass.player.title = "master".lang();
1447 sketches.Add(115);
1448 pref.sort_ascending_shop = true;
1449 EClass.game.config.preference.autoEat = true;
1450 flags.toggleHotbarHighlightDisabled = true;
1451 layerAbilityConfig.hideDepletedSpell = true;
1452 layerAbilityConfig.bgAlpha = 70;
1453 memo = (memo2 = "memo_blank".lang());
1454 }
1455
1456 public void OnStartNewGame()
1457 {
1458 ModKeyItem("old_charm", 1, msg: false);
1459 ModKeyItem("backpack", 1, msg: false);
1460 EClass.player.knownBGMs.Add(1);
1461 EClass.player.knownBGMs.Add(3);
1462 EClass.player.questTracker = true;
1463 trackedCategories.Add("food");
1464 trackedCategories.Add("drink");
1465 trackedCategories.Add("resource");
1466 EClass.game.quests.Start("main");
1467 chara.hp = chara.MaxHP;
1469 chara.elements.SetBase(135, 1);
1470 chara.elements.SetBase(6003, 1);
1471 chara.elements.SetBase(6012, 1);
1472 chara.elements.SetBase(6015, 1);
1473 chara.elements.SetBase(6050, 1);
1474 List<Element> list = new List<Element>();
1475 foreach (Element value in EClass.pc.elements.dict.Values)
1476 {
1477 list.Add(value);
1478 }
1479 foreach (Element item in list)
1480 {
1481 if (item.Value == 0)
1482 {
1484 }
1485 else if (item.HasTag("primary"))
1486 {
1487 item.vTempPotential = Mathf.Max(30, (item.ValueWithoutLink - 8) * 7);
1488 }
1489 }
1490 foreach (BodySlot slot in chara.body.slots)
1491 {
1492 chara.body.Unequip(slot);
1493 }
1495 CreateEquip();
1500 EClass.pc.hunger.value = 30;
1502 EClass.pc.stamina.Set(EClass.pc.stamina.max / 2);
1503 EClass.pc.Refresh();
1504 isEditor = Application.isEditor;
1505 }
1506
1507 public void OnLoad()
1508 {
1509 nums.OnLoad();
1510 codex.OnLoad();
1511 if (dataWindow != null)
1512 {
1513 Window.dictData = dataWindow;
1514 }
1515 EClass.pc.Refresh();
1516 if (Application.isEditor && EClass.debug.resetPlayerConfig && !isEditor)
1517 {
1518 EClass.game.config = new Game.Config();
1519 if (dataWindow != null)
1520 {
1521 dataWindow.Clear();
1522 }
1523 EClass.pc.things.Foreach(delegate(Thing t)
1524 {
1525 t.c_windowSaveData = null;
1526 }, onlyAccessible: false);
1527 }
1528 isEditor = Application.isEditor;
1529 }
1530
1531 public void OnBeforeSave()
1532 {
1533 foreach (Layer layer in EClass.ui.layerFloat.layers)
1534 {
1535 foreach (Window componentsInDirectChild in layer.GetComponentsInDirectChildren<Window>())
1536 {
1537 componentsInDirectChild.UpdateSaveData();
1538 }
1539 }
1541 }
1542
1543 public void SetPriorityAction(string id, Thing t)
1544 {
1545 if (t == null)
1546 {
1547 return;
1548 }
1549 if (id.IsEmpty())
1550 {
1551 foreach (List<string> p in priorityActions.Values)
1552 {
1553 p.ForeachReverse(delegate(string i)
1554 {
1555 if (i == t.id)
1556 {
1557 p.Remove(i);
1558 }
1559 });
1560 }
1561 return;
1562 }
1563 if (!priorityActions.ContainsKey(id))
1564 {
1565 priorityActions[id] = new List<string>();
1566 }
1567 if (!priorityActions[id].Contains(t.id))
1568 {
1569 priorityActions[id].Add(t.id);
1570 }
1571 }
1572
1573 public bool IsPriorityAction(string id, Thing t)
1574 {
1575 if (!id.IsEmpty() && t != null)
1576 {
1577 List<string> list = priorityActions.TryGetValue(id);
1578 if (list != null && list.Contains(t.id))
1579 {
1580 return true;
1581 }
1582 }
1583 return false;
1584 }
1585
1586 public void OnAdvanceRealHour()
1587 {
1588 realHour++;
1589 Msg.Say("time_warn", realHour.ToString() ?? "");
1590 string text = "time_warn_" + realHour;
1591 if (LangGame.Has(text))
1592 {
1593 Msg.Say(text);
1594 }
1595 }
1596
1597 public void RecoverStamina(int a)
1598 {
1599 if (a >= staminaRecovery)
1600 {
1601 a = staminaRecovery;
1602 }
1603 if (a != 0)
1604 {
1605 staminaRecovery -= a;
1606 EClass.pc.stamina.Mod(a);
1607 }
1608 }
1609
1610 public void RefreshDomain()
1611 {
1612 domains.Clear();
1613 for (int i = 0; i < EClass.pc.job.domain.Length; i += 2)
1614 {
1615 domains.Add(EClass.pc.job.domain[i]);
1616 }
1617 }
1618
1620 {
1621 ElementContainer elementContainer = new ElementContainer();
1622 foreach (int domain in domains)
1623 {
1624 elementContainer.GetOrCreateElement(domain).vSource = 1;
1625 }
1626 return elementContainer;
1627 }
1628
1629 public Layer SelectDomain(Action onKill = null)
1630 {
1631 List<SourceElement.Row> list = new List<SourceElement.Row>();
1632 foreach (SourceElement.Row row2 in EClass.sources.elements.rows)
1633 {
1634 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)))
1635 {
1636 list.Add(row2);
1637 }
1638 }
1639 return EClass.ui.AddLayer<LayerList>().SetListCheck(list, (SourceElement.Row a) => a.GetName(), delegate(SourceElement.Row s, ItemGeneral b)
1640 {
1641 bool flag = false;
1642 foreach (int domain in EClass.player.domains)
1643 {
1644 if (s.id == domain)
1645 {
1646 flag = true;
1647 }
1648 }
1649 if (flag)
1650 {
1651 EClass.player.domains.Remove(s.id);
1652 }
1653 else
1654 {
1655 EClass.player.domains.Add(s.id);
1656 }
1657 }, delegate(List<UIList.ButtonPair> list2)
1658 {
1659 bool flag = EClass.player.domains.Count >= ((EClass.pc.job.id == "swordsage") ? 5 : 3) + EClass.pc.Evalue(1402) + Guild.Mage.DomainBonus();
1660 foreach (UIList.ButtonPair item in list2)
1661 {
1662 UIButton button = (item.component as ItemGeneral).button1;
1663 SourceElement.Row row = item.obj as SourceElement.Row;
1664 bool flag2 = false;
1665 bool flag3 = false;
1666 foreach (int domain2 in EClass.player.domains)
1667 {
1668 if (row.id == domain2)
1669 {
1670 flag3 = true;
1671 }
1672 }
1673 button.SetCheck(flag3);
1674 for (int i = 0; i < ((EClass.pc.job.id == "swordsage") ? 5 : 3); i++)
1675 {
1676 if (EClass.pc.job.domain[i * 2] == row.id)
1677 {
1678 flag2 = true;
1679 }
1680 }
1681 button.interactable = !flag2 && (!flag || flag3);
1682 button.GetComponent<CanvasGroup>().enabled = !button.interactable;
1683 }
1684 }).SetOnKill(delegate
1685 {
1686 onKill?.Invoke();
1687 });
1688 }
1689
1690 public void RefreshEmptyAlly()
1691 {
1692 int num = MaxAlly - EClass.pc.party.Count() + 1;
1693 if (num == lastEmptyAlly)
1694 {
1695 return;
1696 }
1697 lastEmptyAlly = num;
1698 foreach (Chara member in EClass.pc.party.members)
1699 {
1700 member.RefreshSpeed();
1701 }
1702 }
1703
1705 {
1706 string text = IO.LoadText(new DirectoryInfo(CorePath.CorePackage.Background).GetFiles("*.txt").RandomItem().FullName);
1707 IO.SaveText(GameIO.pathCurrentSave + "background.txt", text);
1708 }
1709
1710 public string GetBackgroundText()
1711 {
1712 StringBuilder stringBuilder = new StringBuilder(IO.LoadText(GameIO.pathCurrentSave + "background.txt"));
1713 stringBuilder.Replace("#name", EClass.pc.NameSimple);
1714 stringBuilder.Replace("#aka", EClass.pc.Aka);
1715 stringBuilder.Replace("#father", EClass.pc.bio.nameDad);
1716 stringBuilder.Replace("#mother", EClass.pc.bio.nameMom);
1717 stringBuilder.Replace("#birthloc2", EClass.pc.bio.nameHome);
1718 stringBuilder.Replace("#birthloc", EClass.pc.bio.nameLoc);
1719 stringBuilder.Replace("#job", EClass.pc.job.GetName().AddArticle());
1720 stringBuilder.Replace("#year", EClass.pc.bio.birthYear.ToString() ?? "");
1721 stringBuilder.Replace("#month", EClass.pc.bio.birthMonth.ToString() ?? "");
1722 stringBuilder.Replace("#day", EClass.pc.bio.birthDay.ToString() ?? "");
1723 stringBuilder.Replace("#he", (EClass.pc.IsMale ? "he" : "she").lang());
1724 stringBuilder.Replace("#his", (EClass.pc.IsMale ? "his" : "her").lang());
1725 stringBuilder.Replace("#him", (EClass.pc.IsMale ? "him" : "her").lang());
1726 string separator = "_period".lang();
1727 stringBuilder.ToString().Split(separator);
1728 return stringBuilder.ToString().TrimEnd(Environment.NewLine.ToCharArray());
1729 }
1730
1732 {
1733 Util.Run(GameIO.pathCurrentSave + "background.txt");
1734 }
1735
1736 public void CreateEquip()
1737 {
1738 Chara c = EClass.pc;
1739 c.body.AddBodyPart(45);
1740 if (EClass.debug.enable)
1741 {
1742 EClass.pc.EQ_ID("lantern_old");
1743 }
1744 c.body.AddBodyPart(44);
1745 c.EQ_ID("toolbelt").c_IDTState = 0;
1746 c.EQ_ID("shirt").c_IDTState = 0;
1748 if (EClass.debug.enable && c.race.id == "succubus")
1749 {
1750 c.AddCard(ThingGen.CreateRedBook("advweek_14"));
1751 }
1752 bool firstSpellbook = true;
1753 switch (c.job.id)
1754 {
1755 case "paladin":
1756 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8400), 2));
1757 break;
1758 case "inquisitor":
1759 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8706), 4));
1760 break;
1761 case "witch":
1762 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8790), 4));
1763 break;
1764 case "swordsage":
1765 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50300), 4));
1766 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50301), 4));
1767 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(50802), 2));
1768 c.AddCard(ThingGen.Create("tool_talisman"));
1769 break;
1770 }
1771 switch (c.job.id)
1772 {
1773 case "wizard":
1774 case "warmage":
1775 case "priest":
1776 case "witch":
1777 {
1778 int num = 0;
1779 foreach (int domain in EClass.player.domains)
1780 {
1781 Element element = Element.Create(domain);
1782 string text = "";
1783 string[] tag = element.source.tag;
1784 foreach (string text2 in tag)
1785 {
1786 if (text != "")
1787 {
1788 break;
1789 }
1790 switch (text2)
1791 {
1792 case "hand":
1793 case "arrow":
1794 case "bolt":
1795 text = text2 + "_";
1796 break;
1797 }
1798 }
1799 if (text != "")
1800 {
1801 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(text + element.source.alias.Replace("ele", "")), 4));
1802 num++;
1803 if (num >= 2)
1804 {
1805 break;
1806 }
1807 }
1808 }
1809 if (EClass.pc.job.id == "priest")
1810 {
1811 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8400), 2));
1812 }
1813 else
1814 {
1815 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8200), 2));
1816 }
1817 break;
1818 }
1819 default:
1820 c.AddCard(ThingGen.Create("bandage").SetNum(6 + EClass.rnd(3)));
1821 break;
1822 }
1823 if (c.race.id == "vampire")
1824 {
1825 c.AddCard(ThingGen.CreateRecipe("bloodpack"));
1826 c.AddCard(SetSpellbook(ThingGen.CreateSpellbook(8800), 4));
1827 if (EClass.debug.enable)
1828 {
1829 c.AddCard(ThingGen.Create("mixer"));
1830 c.AddCard(ThingGen.Create("bloodpack").SetNum(3));
1831 Thing thing = ThingGen.Create("parchment");
1832 thing.SetStr(53, "letter_vampire");
1833 c.AddCard(thing);
1834 }
1835 }
1836 Thing SetSpellbook(Thing t, int charge)
1837 {
1838 if (firstSpellbook)
1839 {
1840 c.AddCard(ThingGen.CreateRedBook("guide_magic"));
1841 firstSpellbook = false;
1842 }
1843 t.AddEditorTag(EditorTag.NoReadFail);
1844 t.c_charges = charge;
1845 t.SetBlessedState(BlessedState.Normal);
1846 return t;
1847 }
1848 }
1849
1850 public void DreamSpell()
1851 {
1852 int num = EClass.pc.Evalue(1653);
1853 if (num == 0 && EClass.pc.Evalue(1402) == 0 && EClass.rnd(4) != 0)
1854 {
1855 return;
1856 }
1857 List<SourceElement.Row> list = new List<SourceElement.Row>();
1858 foreach (int domain in EClass.player.domains)
1859 {
1860 Element element = Element.Create(domain);
1861 string text = "";
1862 string[] tag = element.source.tag;
1863 foreach (string text2 in tag)
1864 {
1865 if (text != "")
1866 {
1867 break;
1868 }
1869 bool flag = false;
1870 switch (text2)
1871 {
1872 case "hand":
1873 case "arrow":
1874 case "bolt":
1875 flag = true;
1876 break;
1877 }
1878 if (num >= 3)
1879 {
1880 switch (text2)
1881 {
1882 case "ball":
1883 case "weapon":
1884 case "funnel":
1885 case "miasma":
1886 case "sword":
1887 flag = true;
1888 break;
1889 }
1890 }
1891 if (flag)
1892 {
1893 list.Add(EClass.sources.elements.alias[text2 + "_" + element.source.alias.Replace("ele", "")]);
1894 }
1895 }
1896 }
1897 if (list.Count != 0)
1898 {
1899 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row a) => a.chance);
1900 Element element2 = EClass.pc.elements.GetElement(row.id);
1901 int mtp = ((num == 0) ? 100 : (75 + num * 25));
1902 if (num > 0 || element2 == null || element2.vPotential == 0)
1903 {
1904 Msg.Say("dream_spell", EClass.sources.elements.alias[row.aliasRef].GetText("altname").Split(',')[0].ToLowerInvariant());
1905 EClass.pc.GainAbility(row.id, mtp);
1906 }
1907 }
1908 }
1909
1910 public void SimulateFaction()
1911 {
1912 simulatingZone = true;
1913 Zone currentZone = EClass.pc.currentZone;
1914 Point point = EClass.pc.pos.Copy();
1915 List<Zone> list = new List<Zone>();
1916 foreach (FactionBranch child in EClass.pc.faction.GetChildren())
1917 {
1918 if (child.owner != null && child.owner != currentZone && Backlog(child.owner) > 1)
1919 {
1920 list.Add(child.owner);
1921 }
1922 }
1923 list.Sort((Zone a, Zone b) => Backlog(b).CompareTo(Backlog(a)));
1924 foreach (Zone item in list.Take(EClass.core.config.test.maxSimBases))
1925 {
1927 zone = item;
1928 EClass.scene.Init(Scene.Mode.Zone);
1929 }
1930 EClass.pc.MoveZone(currentZone, new ZoneTransition
1931 {
1932 state = ZoneTransition.EnterState.Exact,
1933 x = point.x,
1934 z = point.z
1935 });
1936 zone = currentZone;
1937 EClass.scene.Init(Scene.Mode.Zone);
1938 simulatingZone = false;
1939 static int Backlog(Zone z)
1940 {
1941 return z.HourSinceLastActive + z.pendingSimHours;
1942 }
1943 }
1944
1945 public void ExitBorder(ActPlan p = null)
1946 {
1947 bool flag = EClass.game.quests.HasFarAwayEscort();
1948 string textDialog = (flag ? "ExitZoneEscort" : "ExitZone").lang(EClass._zone.Name);
1949 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;
1951 {
1952 if (p == null)
1953 {
1954 Dialog.YesNo(textDialog, delegate
1955 {
1956 EClass.game.quests.HasFarAwayEscort(execute: true);
1958 }, delegate
1959 {
1960 });
1961 return;
1962 }
1963 p.TrySetAct("actNewZone", delegate
1964 {
1965 Dialog.YesNo(textDialog, delegate
1966 {
1967 EClass.game.quests.HasFarAwayEscort(execute: true);
1969 });
1970 return false;
1971 }, CursorSystem.MoveZone, (!flag2) ? 1 : 999);
1972 }
1973 else if (p == null)
1974 {
1976 }
1977 else
1978 {
1979 p.TrySetAct("actNewZone", delegate
1980 {
1982 return false;
1983 }, CursorSystem.MoveZone, (!flag2) ? 1 : 999);
1984 }
1985 }
1986
1987 public bool CanExitBorder(Point p)
1988 {
1989 if (EClass._zone == EClass.game.StartZone && EClass.pc.homeBranch == null)
1990 {
1991 return false;
1992 }
1994 {
1995 return false;
1996 }
1997 if (EClass.pc.held != null && EClass.pc.held.trait.CanOnlyCarry)
1998 {
1999 return false;
2000 }
2001 return true;
2002 }
2003
2004 public void OnExitBorder(Point p)
2005 {
2007 {
2008 int num = 0;
2009 int num2 = 0;
2010 MapBounds bounds = EClass._map.bounds;
2011 if (p.x < bounds.x)
2012 {
2013 num = -1;
2014 }
2015 else if (p.x <= bounds.maxX)
2016 {
2017 num2 = ((p.z >= bounds.z) ? 1 : (-1));
2018 }
2019 else
2020 {
2021 num = 1;
2022 }
2023 ZoneTransition.EnterState state = num switch
2024 {
2025 -1 => ZoneTransition.EnterState.Right,
2026 1 => ZoneTransition.EnterState.Left,
2027 _ => (num2 == 1) ? ZoneTransition.EnterState.Bottom : ZoneTransition.EnterState.Top,
2028 };
2029 float ratePos = ((num == 1 || num == -1) ? ((float)(p.z - bounds.z) / (float)bounds.Height) : ((float)(p.x - bounds.x) / (float)bounds.Width));
2030 ZoneTransition trans = new ZoneTransition
2031 {
2032 state = state,
2033 ratePos = ratePos
2034 };
2035 Point p2 = new Point(EClass._zone.x + num, EClass._zone.y + num2);
2036 EnterLocalZone(p2, trans);
2037 }
2038 else
2039 {
2041 }
2042 }
2043
2044 public void EnterLocalZone(bool encounter = false, Chara mob = null)
2045 {
2046 EnterLocalZone(EClass.pc.pos.Copy(), null, encounter, mob);
2047 }
2048
2049 public void EnterLocalZone(Point p, ZoneTransition trans = null, bool encounter = false, Chara mob = null)
2050 {
2051 if (EClass._zone.IsRegion)
2052 {
2054 }
2056 int enemies = 1;
2057 int roadDist = EClass.scene.elomap.GetRoadDist(p.x, p.z);
2058 int num = ((EClass.pc.homeBranch != null) ? EClass.pc.pos.Distance(EClass.game.StartZone.mapX, EClass.game.StartZone.mapY) : 0);
2059 if (zone == null)
2060 {
2062 {
2063 Msg.Say("zoneBlocked");
2064 return;
2065 }
2066 int num2 = Mathf.Clamp(roadDist - 4, 0, 200) + Mathf.Clamp(num / 4, 0, 10);
2067 if (roadDist > 20)
2068 {
2069 num2 += roadDist - 20;
2070 }
2071 if (num2 >= 100)
2072 {
2073 num2 = 100;
2074 }
2075 Debug.Log("encounter roadiDist:" + roadDist + " homeDist:" + num + " lv:" + num2);
2077 zone._dangerLv = num2;
2078 enemies = 2 + Mathf.Min(num2 / 10, 4) + EClass.rnd(3 + Mathf.Min(num2 / 10, 4));
2079 if (num < 5)
2080 {
2081 enemies = 2;
2082 }
2083 }
2084 else
2085 {
2086 if (zone is Zone_Void && EClass.player.CountKeyItem("license_void") == 0)
2087 {
2088 Msg.Say("voidClosed");
2089 return;
2090 }
2091 if (zone is Zone_Exile && EClass.player.CountKeyItem("key_exile") == 0 && !EClass.debug.enable)
2092 {
2093 Msg.Say("exileClosed");
2094 return;
2095 }
2096 if (zone.IsClosed)
2097 {
2098 Msg.Say("zoneClosed");
2099 return;
2100 }
2101 if (zone is Zone_Casino)
2102 {
2103 Msg.Say("zoneNoEntrance");
2104 return;
2105 }
2106 }
2107 if (trans == null)
2108 {
2109 ZoneTransition.EnterState state = (encounter ? ZoneTransition.EnterState.Encounter : ((zone.RegionEnterState == ZoneTransition.EnterState.Dir) ? ZoneTransition.DirToState(EClass.pc.GetCurrentDir()) : zone.RegionEnterState));
2110 trans = new ZoneTransition
2111 {
2112 state = state
2113 };
2114 }
2115 EClass.pc.MoveZone(zone, trans);
2116 if (encounter)
2117 {
2119 {
2120 enemies = enemies,
2121 roadDist = roadDist,
2122 mob = mob
2123 });
2124 }
2125 }
2126
2127 public void MoveZone(Zone z)
2128 {
2129 CursorSystem.ignoreCount = 15;
2130 EClass.ui.hud.transRight.SetActive(enable: false);
2131 zone = z;
2132 if (zone.IsRegion)
2133 {
2135 }
2136 EClass.scene.Init(Scene.Mode.Zone);
2137 if ((bool)WidgetRoster.Instance)
2138 {
2140 }
2141 if ((bool)UIResourceTrack.Instance)
2142 {
2144 }
2145 if ((bool)WidgetMinimap.Instance)
2146 {
2148 }
2150 {
2151 if (LastTravelZone != null)
2152 {
2153 int elapsedHour = EClass.world.date.GetElapsedHour(dateTravel);
2154 int num = elapsedHour / 24;
2155 if (distanceTravel > 2)
2156 {
2157 elapsedHour %= 24;
2158 Msg.Say("travel", LastTravelZone.Name, Date.GetText(dateTravel, Date.TextFormat.Travel), num.ToString() ?? "", elapsedHour.ToString() ?? "");
2159 Msg.Say("travel2", distanceTravel.ToString() ?? "", ((EClass.pc.party.members.Count == 1) ? "you" : "youAndCompanion").lang());
2160 foreach (Chara member in EClass.pc.party.members)
2161 {
2162 member.AddExp(distanceTravel / 3);
2163 member.elements.ModExp(240, 30 + distanceTravel * 5);
2164 }
2165 }
2166 }
2167 distanceTravel = 0;
2170 }
2171 regionMoveWarned = false;
2172 }
2173
2174 public void AddInventory(Card c)
2175 {
2176 EClass.pc.AddCard(c);
2177 }
2178
2179 public void EndTurn(bool consume = true)
2180 {
2181 if (!EClass.pc.isDead)
2182 {
2183 if (consume)
2184 {
2185 EInput.Consume();
2186 }
2187 EClass.pc.SetAI(new GoalEndTurn());
2188 EClass.player.baseActTime = EClass.setting.defaultActPace;
2189 }
2190 }
2191
2192 public void ModFame(int a)
2193 {
2194 if (a == 0)
2195 {
2196 return;
2197 }
2198 if (a >= 0 && fame + a >= 5000 && EClass.player.CountKeyItem("license_adv") == 0)
2199 {
2200 a = 5000 - fame;
2201 if (a <= 0)
2202 {
2203 a = 0;
2204 Msg.Say("gainFameLimit");
2205 return;
2206 }
2207 }
2208 if (fame > 0 && a > 0 && fame + a < 0)
2209 {
2210 fame = int.MaxValue;
2211 }
2212 else
2213 {
2214 fame += a;
2215 }
2216 if (fame < 0)
2217 {
2218 fame = 0;
2219 }
2220 if (a > 0)
2221 {
2222 Msg.Say("gainFame", a.ToString() ?? "");
2223 }
2224 else
2225 {
2226 Msg.Say("looseFame", (-a).ToString() ?? "");
2227 }
2228 if (a > 0)
2229 {
2230 Tutorial.Reserve("fame");
2231 }
2232 }
2233
2234 public void ModKeyItem(string alias, int num = 1, bool msg = true)
2235 {
2236 ModKeyItem(EClass.sources.keyItems.alias[alias].id, num, msg);
2237 }
2238
2239 public void ModKeyItem(int id, int num = 1, bool msg = true)
2240 {
2241 if (!keyItems.ContainsKey(id))
2242 {
2243 keyItems.Add(id, 0);
2244 }
2245 keyItems[id] += num;
2246 if (msg)
2247 {
2248 if (num > 0)
2249 {
2250 SE.Play("keyitem");
2251 Msg.Say("get_keyItem", EClass.sources.keyItems.map[id].GetName());
2252 }
2253 else
2254 {
2255 SE.Play("keyitem_lose");
2256 Msg.Say("lose_keyItem", EClass.sources.keyItems.map[id].GetName());
2257 }
2258 }
2259 }
2260
2261 public bool HasKeyItem(string alias)
2262 {
2263 return CountKeyItem(EClass.sources.keyItems.alias[alias].id) > 0;
2264 }
2265
2266 public int CountKeyItem(string alias)
2267 {
2268 return CountKeyItem(EClass.sources.keyItems.alias[alias].id);
2269 }
2270
2271 public int CountKeyItem(int id)
2272 {
2273 if (!keyItems.ContainsKey(id))
2274 {
2275 return 0;
2276 }
2277 return keyItems[id];
2278 }
2279
2280 public void EquipTool(Thing a, bool setHotItem = true)
2281 {
2282 if (a.GetRootCard() != EClass.pc)
2283 {
2284 if (a.parent is Thing)
2285 {
2286 Msg.Say("movedToEquip", a, a.parent as Thing);
2287 }
2288 a = EClass.pc.AddThing(a);
2289 }
2290 if (setHotItem)
2291 {
2293 SE.SelectHotitem();
2294 }
2295 }
2296
2298 {
2300 if (!instance)
2301 {
2302 return;
2303 }
2304 if (currentHotItem != null)
2305 {
2306 if ((bool)instance)
2307 {
2308 instance.buttonHotItem.Refresh();
2309 }
2311 {
2312 currentHotItem = null;
2313 }
2315 {
2316 currentHotItem = null;
2317 }
2318 }
2319 if (EClass.pc.held != null)
2320 {
2322 }
2323 if (currentHotItem == null)
2324 {
2325 if ((bool)instance && instance.selected != -1 && instance.selectedButton.card != null && instance.selectedButton.card.GetRootCard() == EClass.pc && !instance.selectedButton.card.GetRootCard().isDestroyed)
2326 {
2328 }
2329 else
2330 {
2332 }
2333 }
2335 {
2336 if (lastHotItem != null)
2337 {
2339 }
2342 }
2344 WidgetHotbar.dirtyCurrentItem = false;
2346 EClass.core.actionsNextFrame.Add(delegate
2347 {
2348 EClass.core.actionsNextFrame.Add(delegate
2349 {
2351 {
2352 item.invs[0].RefreshHighlight();
2353 }
2354 });
2355 });
2357 }
2358
2360 {
2361 EClass.pc.PickHeld();
2363 SE.SelectHotitem();
2364 }
2365
2367 {
2368 EClass.pc.PickHeld();
2369 if (currentHotItem != item)
2370 {
2372 if (currentHotItem is HotItemHeld hotItemHeld)
2373 {
2374 EClass.pc.HoldCard(hotItemHeld.Thing);
2375 }
2376 }
2378 }
2379
2380 public void TryEquipBait()
2381 {
2382 if (eqBait != null && eqBait.GetRootCard() != EClass.pc)
2383 {
2384 eqBait = null;
2385 }
2386 if (eqBait == null)
2387 {
2389 }
2390 }
2391
2393 {
2395 {
2396 return false;
2397 }
2398 return true;
2399 }
2400
2401 public bool TargetRanged()
2402 {
2404 int num = 999999999;
2405 Chara chara = null;
2407 List<Chara> list = new List<Chara>();
2408 bool flag = false;
2409 if (EInput.isShiftDown && pos.IsValid && pos.HasChara)
2410 {
2411 foreach (Chara chara2 in EClass._map.charas)
2412 {
2413 if (chara2.isSynced && chara2.IsAliveInCurrentZone && !chara2.IsPC && chara2.pos.Equals(pos) && EClass.pc.CanSeeLos(chara2.pos))
2414 {
2415 list.Add(chara2);
2416 }
2417 }
2418 if (list.Count > 0)
2419 {
2420 chara = list.NextItem(EClass.player.target);
2421 flag = true;
2422 }
2423 list.Clear();
2424 }
2425 if (!flag)
2426 {
2427 foreach (Chara chara3 in EClass._map.charas)
2428 {
2429 int num2 = 0;
2430 if (chara3.isSynced && chara3.IsAliveInCurrentZone && !chara3.IsPC && EClass.pc.CanSeeLos(chara3.pos) && EClass.pc.CanSee(chara3) && !chara3.IsFriendOrAbove())
2431 {
2432 if (chara3.IsNeutralOrAbove())
2433 {
2434 num2 += 10000;
2435 }
2436 num2 += EClass.pc.Dist(chara3);
2437 if (num2 < num)
2438 {
2439 chara = chara3;
2440 num = num2;
2441 }
2442 list.Add(chara3);
2443 }
2444 }
2445 if (EInput.isShiftDown)
2446 {
2447 chara = list.NextItem(EClass.player.target);
2448 }
2449 }
2450 if (chara == null)
2451 {
2452 if (target != null)
2453 {
2454 Msg.Say("noTargetFound");
2455 }
2456 target = null;
2457 return false;
2458 }
2459 if (target != chara)
2460 {
2461 Msg.Say("targetSet", chara);
2462 }
2463 target = chara;
2464 return true;
2465 }
2466
2467 public void OnAdvanceHour()
2468 {
2470 if (EClass.pc.Evalue(289) > 0)
2471 {
2472 foreach (Thing item in EClass.pc.things.List((Thing t) => t.c_IDTState == 5, onlyAccessible: true))
2473 {
2475 }
2476 }
2478 {
2479 return;
2480 }
2481 foreach (Chara member in EClass.pc.party.members)
2482 {
2483 member.AddExp(1);
2484 }
2485 }
2486
2487 public void OnAdvanceDay()
2488 {
2491 if (EClass.pc.Evalue(85) > 0)
2492 {
2493 EClass.pc.ModExp(85, 10);
2494 }
2496 prayed = false;
2497 fished = 0;
2498 if (karma < 0 && EClass.rnd(4) == 0)
2499 {
2500 ModKarma(1);
2501 }
2502 if (fishArtifact > 0 && EClass.rnd(3) == 0)
2503 {
2504 fishArtifact--;
2505 }
2506 }
2507
2508 public void UpdateNyan()
2509 {
2510 int num = 0;
2511 foreach (Chara chara in EClass._map.charas)
2512 {
2513 AI_Churyu child = chara.ai.GetChild<AI_Churyu>();
2514 if (child != null && child.slave == EClass.pc)
2515 {
2516 num++;
2517 }
2518 }
2519 EClass.player.stats.lastChuryu = num;
2520 if (num >= 20)
2521 {
2523 }
2524 if (num >= 50)
2525 {
2527 }
2528 }
2529
2530 public bool TryAbortAutoCombat(bool immediate = true)
2531 {
2532 if (!(EClass.pc.ai is GoalAutoCombat))
2533 {
2534 return false;
2535 }
2536 EClass.pc.ai.Cancel();
2537 if (immediate)
2538 {
2540 }
2541 return true;
2542 }
2543
2545 {
2546 foreach (Cell lastMarkedHighlight in lastMarkedHighlights)
2547 {
2548 lastMarkedHighlight.highlight = 0;
2549 }
2550 lastMarkedHighlights.Clear();
2551 }
2552
2553 public void MarkMapHighlights()
2554 {
2557 }
2558
2559 public bool CanAcceptInput()
2560 {
2561 if (EClass.pc.HasNoGoal)
2562 {
2563 return !EClass.pc.WillConsumeTurn();
2564 }
2565 return false;
2566 }
2567
2568 public bool CanSee(Chara c)
2569 {
2571 {
2572 return true;
2573 }
2574 if (!c.IsPC && (EClass.pc.fov == null || EClass.pc.isBlind))
2575 {
2576 return false;
2577 }
2578 if (c.IsPCParty || c.isDead)
2579 {
2580 return true;
2581 }
2582 if (c.IsMultisize)
2583 {
2584 bool canSee = false;
2585 int dist = EClass.pc.Dist(c);
2586 c.ForeachPoint(delegate(Point p, bool main)
2587 {
2588 if (!canSee && (p.cell.light > 0 || dist < 2) && p.cell.pcSync)
2589 {
2590 canSee = true;
2591 }
2592 });
2593 return canSee;
2594 }
2595 if (c.pos.cell.light > 0 || EClass.pc.Dist(c) < 2)
2596 {
2597 return c.pos.cell.pcSync;
2598 }
2599 return false;
2600 }
2601
2602 public void AddExpKnowledge(int a)
2603 {
2604 expKnowledge += a;
2606 {
2607 for (int i = 0; i < expKnowledge / MaxExpKnowledge; i++)
2608 {
2609 LvUp();
2610 }
2612 }
2613 static void LvUp()
2614 {
2615 Msg.Say("DingKnowledge");
2616 }
2617 }
2618
2619 public void AddExpInfluence(int a)
2620 {
2621 expInfluence += a;
2623 {
2624 for (int i = 0; i < expInfluence / MaxExpInfluence; i++)
2625 {
2626 LvUp();
2627 }
2629 }
2630 static void LvUp()
2631 {
2632 Msg.Say("DingInfluence");
2633 }
2634 }
2635
2636 public void ModKarma(int a)
2637 {
2638 if (a != 0)
2639 {
2640 if (a < 0)
2641 {
2642 Tutorial.Reserve("karma");
2643 }
2644 bool flag = karma < 0;
2645 karma += a;
2646 Msg.Say((a > 0) ? "karmaUp" : "karmaDown", a.ToString() ?? "");
2647 if (karma < 0 && !flag)
2648 {
2649 Msg.Say("becomeCriminal");
2652 Tutorial.Reserve("criminal");
2654 }
2655 if (karma >= 0 && flag)
2656 {
2657 Msg.Say("becomeNonCriminal");
2659 }
2660 EClass.game.quests.list.ForeachReverse(delegate(Quest q)
2661 {
2662 q.OnModKarma(a);
2663 });
2664 karma = Mathf.Clamp(karma, -100, 100);
2665 }
2666 }
2667
2668 public Thing DropReward(Thing t, bool silent = false)
2669 {
2670 t.things.DestroyAll();
2672 if (!silent)
2673 {
2674 Msg.Say("dropReward");
2675 }
2676 return t;
2677 }
2678
2679 public bool TooHeavyToMove()
2680 {
2681 if (!EClass.debug.ignoreWeight && EClass.pc.burden.GetPhase() == 4 && !EClass.pc.HasElement(493))
2682 {
2683 Msg.Say("tooHeavyToMove");
2685 EInput.Consume(consumeAxis: true);
2686 return true;
2687 }
2688 return false;
2689 }
2690
2691 public void ToggleFavMoongate(string id)
2692 {
2693 if (favMoongate.Contains(id))
2694 {
2695 favMoongate.Remove(id);
2696 }
2697 else
2698 {
2699 favMoongate.Add(id);
2700 }
2701 }
2702}
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:8369
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:6861
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:8204
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:124
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:1804
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
CharaBody body
Definition: Chara.cs:94
Card held
Definition: Chara.cs:70
AIAct ai
Definition: Chara.cs:206
Faction faction
Definition: Chara.cs:431
override bool IsPC
Definition: Chara.cs:630
SourceJob.Row job
Definition: Chara.cs:470
bool CanSeeLos(Card c, int dist=-1)
Definition: Chara.cs:1309
AIAct SetNoGoal()
Definition: Chara.cs:9481
override bool IsPCParty
Definition: Chara.cs:633
Party party
Definition: Chara.cs:43
void HoldCard(Card t, int num=-1)
Definition: Chara.cs:4770
void PickHeld(bool msg=false)
Definition: Chara.cs:4826
bool HasCondition(string alias)
Definition: Chara.cs:10043
AIAct SetAI(AIAct g)
Definition: Chara.cs:9486
Chara SetFaction(Faction f)
Definition: Chara.cs:1490
bool IsNeutralOrAbove()
Definition: Chara.cs:6994
int GetCurrentDir()
Definition: Chara.cs:3890
override bool isSynced
Definition: Chara.cs:709
override CardRenderer _CreateRenderer()
Definition: Chara.cs:7059
void CalculateMaxStamina()
Definition: Chara.cs:2232
bool CanSee(Card c)
Definition: Chara.cs:1277
bool IsFriendOrAbove()
Definition: Chara.cs:7038
override int MaxHP
Definition: Chara.cs:726
Zone currentZone
Definition: Chara.cs:259
string Aka
Definition: Chara.cs:220
override bool IsDeadOrSleeping
Definition: Chara.cs:579
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:10769
Stats stamina
Definition: Chara.cs:1205
Stats burden
Definition: Chara.cs:1203
bool visibleWithTelepathy
Definition: Chara.cs:152
void RefreshFaithElement()
Definition: Chara.cs:10883
void RefreshSpeed(Element.BonusInfo info=null)
Definition: Chara.cs:2078
Religion faith
Definition: Chara.cs:443
bool HasNoGoal
Definition: Chara.cs:1047
override bool IsMultisize
Definition: Chara.cs:724
bool isBlind
Definition: Chara.cs:132
Thing EQ_ID(string s, int mat=-1, Rarity r=Rarity.Random)
Definition: Chara.cs:5418
FactionBranch homeBranch
Definition: Chara.cs:1113
bool isDead
Definition: Chara.cs:393
bool TryIdentify(Thing t, int count=1, bool show=true)
Definition: Chara.cs:8497
void SetFaith(string id)
Definition: Chara.cs:1784
bool hasTelepathy
Definition: Chara.cs:142
bool WillConsumeTurn()
Definition: Chara.cs:3928
void MoveZone(string alias)
Definition: Chara.cs:3577
SourceRace.Row race
Definition: Chara.cs:468
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:372
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:909
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:921
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:1910
int distanceTravel
Definition: Player.cs:960
int debt
Definition: Player.cs:1014
int uidLastTown
Definition: Player.cs:1005
void DreamSpell()
Definition: Player.cs:1850
bool IsCriminal
Definition: Player.cs:1412
int CountKeyItem(int id)
Definition: Player.cs:2271
ZoneTransition lastTransition
Definition: Player.cs:1216
Flags flags
Definition: Player.cs:1164
bool TooHeavyToMove()
Definition: Player.cs:2679
void CreateEquip()
Definition: Player.cs:1736
void OnAdvanceDay()
Definition: Player.cs:2487
Dictionary< string, string > lastRecipes
Definition: Player.cs:1119
CodexManager codex
Definition: Player.cs:1185
Layer SelectDomain(Action onKill=null)
Definition: Player.cs:1629
int lastFelmeraReward
Definition: Player.cs:1002
HotItem lastHotItem
Definition: Player.cs:1220
HashSet< int > sketches
Definition: Player.cs:1140
Zone LastZone
Definition: Player.cs:1347
Action onStartZone
Definition: Player.cs:1292
List< int > uidPickOnLoad
Definition: Player.cs:1191
bool showShippingResult
Definition: Player.cs:1062
bool hasNewQuest
Definition: Player.cs:1044
bool IsMageGuildMember
Definition: Player.cs:1360
void OnStartNewGame()
Definition: Player.cs:1456
int fishArtifact
Definition: Player.cs:1035
bool IsFighterGuildMember
Definition: Player.cs:1373
bool useSubWidgetTheme
Definition: Player.cs:1050
bool IsPriorityAction(string id, Thing t)
Definition: Player.cs:1573
bool CanSee(Chara c)
Definition: Player.cs:2568
Dictionary< string, KnownSong > knownSongs
Definition: Player.cs:1116
void SetPriorityAction(string id, Thing t)
Definition: Player.cs:1543
RecipeManager recipes
Definition: Player.cs:1167
NoticeManager notices
Definition: Player.cs:1282
bool preventDeathPenalty
Definition: Player.cs:1240
float angle
Definition: Player.cs:1041
WidgetManager.SaveData widgets
Definition: Player.cs:1309
bool deathZoneMove
Definition: Player.cs:1242
Window.SaveData windowAllyInv
Definition: Player.cs:1200
int uidSpawnZone
Definition: Player.cs:939
void OnAdvanceRealHour()
Definition: Player.cs:1586
void ModFame(int a)
Definition: Player.cs:2192
void ModKarma(int a)
Definition: Player.cs:2636
CinemaConfig cinemaConfig
Definition: Player.cs:1182
void RefreshDomain()
Definition: Player.cs:1610
bool CanExitBorder(Point p)
Definition: Player.cs:1987
Pref pref
Definition: Player.cs:1083
int karma
Definition: Player.cs:945
void ResetCurrentHotItem()
Definition: Player.cs:2359
Vector2 nextMove
Definition: Player.cs:1288
bool questTracker
Definition: Player.cs:1059
void ToggleFavMoongate(string id)
Definition: Player.cs:2691
float lightPower
Definition: Player.cs:1270
Stats stats
Definition: Player.cs:1086
void OnExitBorder(Point p)
Definition: Player.cs:2004
int lightRadius
Definition: Player.cs:1262
bool resetPrincipal
Definition: Player.cs:1250
float renderExtraTime
Definition: Player.cs:1276
bool isAutoFarming
Definition: Player.cs:1254
void EquipTool(Thing a, bool setHotItem=true)
Definition: Player.cs:2280
int staminaRecovery
Definition: Player.cs:1038
bool haltMove
Definition: Player.cs:1244
List< Cell > lastMarkedHighlights
Definition: Player.cs:1218
Chara _agent
Definition: Player.cs:1158
bool HasKeyItem(string alias)
Definition: Player.cs:2261
bool EnableDreamStory
Definition: Player.cs:1343
bool HasValidRangedTarget()
Definition: Player.cs:2392
void AddInventory(Card c)
Definition: Player.cs:2174
bool invlunerable
Definition: Player.cs:1246
int uidLastTravelZone
Definition: Player.cs:963
Zone zone
Definition: Player.cs:1152
Chara focusedchara
Definition: Player.cs:1280
int countNewline
Definition: Player.cs:1260
bool wellWished
Definition: Player.cs:1053
int seedChest
Definition: Player.cs:1011
bool willAutoSave
Definition: Player.cs:1248
Zone spawnZone
Definition: Player.cs:1332
int MaxExpInfluence
Definition: Player.cs:1357
float baseActTime
Definition: Player.cs:1272
HashSet< int > knownBGMs
Definition: Player.cs:1134
Dictionary< string, int > dialogFlags
Definition: Player.cs:1110
int tutorialStep
Definition: Player.cs:942
int customLightMod
Definition: Player.cs:1026
string memo
Definition: Player.cs:1077
int extraTax
Definition: Player.cs:999
int fished
Definition: Player.cs:1032
void EndTurn(bool consume=true)
Definition: Player.cs:2179
ElementContainer GetDomains()
Definition: Player.cs:1619
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:2044
List< Chara > listCarryoverMap
Definition: Player.cs:1296
bool enemySpotted
Definition: Player.cs:1256
int autoCombatStartHP
Definition: Player.cs:1298
int little_dead
Definition: Player.cs:993
HashSet< int > doneBackers
Definition: Player.cs:1143
float pickupDelay
Definition: Player.cs:1274
PartySetup[] partySetups
Definition: Player.cs:1206
int totalFeat
Definition: Player.cs:972
void OnBeforeSave()
Definition: Player.cs:1531
int ContainerSearchDistance
Definition: Player.cs:1351
Zone LastTravelZone
Definition: Player.cs:1345
bool TargetRanged()
Definition: Player.cs:2401
int uidLastZone
Definition: Player.cs:966
bool dailyGacha
Definition: Player.cs:1047
int holyWell
Definition: Player.cs:984
void AddExpKnowledge(int a)
Definition: Player.cs:2602
HashSet< string > trackedCategories
Definition: Player.cs:1125
static int realHour
Definition: Player.cs:1210
int MaxAlly
Definition: Player.cs:1353
int CountKeyItem(string alias)
Definition: Player.cs:2266
void TryEquipBait()
Definition: Player.cs:2380
HashSet< int > knownCraft
Definition: Player.cs:1146
WidgetManager.SaveData subWidgets
Definition: Player.cs:1101
bool wasDirtyWeight
Definition: Player.cs:1236
Dictionary< string, HashSet< string > > noRestocks
Definition: Player.cs:1197
Zone nextZone
Definition: Player.cs:1300
Dictionary< string, Window.SaveData > dataWindow
Definition: Player.cs:1179
int luckycoin
Definition: Player.cs:1023
void OnAdvanceHour()
Definition: Player.cs:2467
List< int > domains
Definition: Player.cs:1149
bool forceTalk
Definition: Player.cs:1224
Point lastZonePos
Definition: Player.cs:1173
void RecoverStamina(int a)
Definition: Player.cs:1597
bool prayed
Definition: Player.cs:1056
const int MaxPartySetup
Definition: Player.cs:930
HashSet< int > favAbility
Definition: Player.cs:1137
Window.SaveData dataPick
Definition: Player.cs:1104
int ignoreFallOver
Definition: Player.cs:1268
void GenerateBackgroundText()
Definition: Player.cs:1704
void ModKeyItem(string alias, int num=1, bool msg=true)
Definition: Player.cs:2234
int MaxExpKnowledge
Definition: Player.cs:1355
int expInfluence
Definition: Player.cs:954
int seedShrine
Definition: Player.cs:1008
int dateTravel
Definition: Player.cs:957
Chara target
Definition: Player.cs:1306
List< ShippingResult > shippingResults
Definition: Player.cs:1194
void ModKeyItem(int id, int num=1, bool msg=true)
Definition: Player.cs:2239
bool instaComplete
Definition: Player.cs:1228
bool IsThiefGuildMember
Definition: Player.cs:1386
void ExitBorder(ActPlan p=null)
Definition: Player.cs:1945
HotItem currentHotItem
Definition: Player.cs:1170
Dictionary< string, string > hangIcons
Definition: Player.cs:1113
string title
Definition: Player.cs:1074
int unpaidBill
Definition: Player.cs:978
int safeTravel
Definition: Player.cs:987
PopupManager popups
Definition: Player.cs:1095
Chara Agent
Definition: Player.cs:1349
Thing eqBait
Definition: Player.cs:1176
bool showWorkaround
Definition: Player.cs:1071
bool waitingInput
Definition: Player.cs:1232
int uidChara
Definition: Player.cs:936
Dictionary< string, List< string > > priorityActions
Definition: Player.cs:1122
KnowledgeManager knowledges
Definition: Player.cs:1092
void MoveZone(Zone z)
Definition: Player.cs:2127
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2668
Thing renderThing
Definition: Player.cs:1302
ReturnInfo returnInfo
Definition: Player.cs:933
HashSet< string > trackedCards
Definition: Player.cs:1128
bool regionMoveWarned
Definition: Player.cs:1230
string memo2
Definition: Player.cs:1080
int questRerollCost
Definition: Player.cs:1029
int lastTurn
Definition: Player.cs:1264
WidgetManager.SaveData mainWidgets
Definition: Player.cs:1098
Window.SaveData windowDataCopy
Definition: Player.cs:1212
void OnLoad()
Definition: Player.cs:1507
Chara chara
Definition: Player.cs:1278
HotItem hotItemToRestore
Definition: Player.cs:1222
static int seedHallucination
Definition: Player.cs:1208
int fame
Definition: Player.cs:948
void EnterLocalZone(Point p, ZoneTransition trans=null, bool encounter=false, Chara mob=null)
Definition: Player.cs:2049
void MarkMapHighlights()
Definition: Player.cs:2553
bool isEditor
Definition: Player.cs:1065
void UpdateNyan()
Definition: Player.cs:2508
PlayingSong playingSong
Definition: Player.cs:1294
bool willEndTurn
Definition: Player.cs:1234
int bankMoney
Definition: Player.cs:981
HotItemNoItem hotItemNoItem
Definition: Player.cs:1304
void AddExpInfluence(int a)
Definition: Player.cs:2619
bool TryAbortAutoCombat(bool immediate=true)
Definition: Player.cs:2530
void ClearMapHighlights()
Definition: Player.cs:2544
int uidLastShippedZone
Definition: Player.cs:969
Act lastAct
Definition: Player.cs:1286
bool simulatingZone
Definition: Player.cs:1252
LayerAbility.Config layerAbilityConfig
Definition: Player.cs:1107
int expKnowledge
Definition: Player.cs:951
List< string > favMoongate
Definition: Player.cs:1203
bool deathDialog
Definition: Player.cs:1238
int little_saved
Definition: Player.cs:996
int lastEmptyAlly
Definition: Player.cs:1266
void OnCreateGame()
Definition: Player.cs:1423
bool CanAcceptInput()
Definition: Player.cs:2559
HashSet< int > trackedElements
Definition: Player.cs:1131
int hotbarPage
Definition: Player.cs:990
void RefreshEmptyAlly()
Definition: Player.cs:1690
NumLogManager nums
Definition: Player.cs:1089
string GetBackgroundText()
Definition: Player.cs:1710
void RefreshCurrentHotItem()
Definition: Player.cs:2297
void EditBackgroundText()
Definition: Player.cs:1731
bool altHeldPos
Definition: Player.cs:1226
QueueManager queues
Definition: Player.cs:1284
Dictionary< int, int > keyItems
Definition: Player.cs:1188
string deathMsg
Definition: Player.cs:1258
bool openContainerCenter
Definition: Player.cs:1068
int giftJure
Definition: Player.cs:1020
Hoard hoard
Definition: Player.cs:1161
bool IsMerchantGuildMember
Definition: Player.cs:1399
string windowDataName
Definition: Player.cs:1214
Vector3 position
Definition: Player.cs:1290
HotbarManager hotbars
Definition: Player.cs:1155
int seedFortune
Definition: Player.cs:1017
void SetCurrentHotItem(HotItem item)
Definition: Player.cs:2366
int taxBills
Definition: Player.cs:975
Definition: Point.cs:9
Point Copy()
Definition: Point.cs:491
Point Set(int _x, int _z)
Definition: Point.cs:503
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool Equals(int _x, int _z)
Definition: Point.cs:966
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:878
bool IsValid
Definition: Point.cs:88
int Distance(Point p)
Definition: Point.cs:995
Cell cell
Definition: Point.cs:51
bool HasChara
Definition: Point.cs:238
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 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:1159
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:3849
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:3818
Card AddCard(Card t, Point point)
Definition: Zone.cs:2150
uint Bits
Definition: BitArray32.cs:6