Elin Decompiled Documentation EA 23.153 Nightly
Loading...
Searching...
No Matches
WindowChara.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
5using UnityEngine;
6using UnityEngine.UI;
7
9{
10 public static WindowChara Instance;
11
12 public Chara chara;
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
75
77
79
80 public UINote note;
81
83
85
87
89
91
93
95
96 public UIText textDV;
97
99
100 public LayoutGroup layoutNeeds;
101
102 public LayoutGroup layoutStatus;
103
104 public GridLayoutGroup gridEquip;
105
107
109
111
113
115
117
119
121
123
125
127
129
131
133
134 public Transform contentList;
135
136 public RectTransform rectEquip;
137
139
141
142 public Image imageView;
143
144 public Sprite mask;
145
146 public Sprite maskResist;
147
149
151
152 public Vector2 equipPos;
153
154 public bool featMode;
155
156 public float barColor1;
157
158 public float barColor2;
159
161
163
164 public void SetChara(Chara c)
165 {
166 Instance = this;
167 chara = c;
168 portrait.interactable = chara.IsPC;
170 if (window.setting.tabs.Count > 6)
171 {
172 window.setting.tabs[6].button.SetActive(chara.IsPC);
173 }
174 if (window.idTab == 6 && !chara.IsPC)
175 {
177 }
178 }
179
180 private void Update()
181 {
182 rectEquip.anchoredPosition = new Vector2(scrollSkill.content.anchoredPosition.x + equipPos.x, equipPos.y);
183 }
184
185 public override void OnSwitchContent(Window window)
186 {
187 if (chara != null)
188 {
190 int idTab = window.idTab;
191 if (idTab == 0)
192 {
193 RefreshInfo();
195 }
196 else
197 {
198 RefreshSkill(idTab);
199 }
200 bool flag = idTab == 3 || idTab == 4;
201 scrollSkill.horizontal = flag;
202 scrollSkill.content.anchoredPosition = new Vector2(0f, 0f);
203 imageView.sprite = (flag ? maskResist : mask);
204 if (flag)
205 {
207 }
208 listEquipment2.transform.parent.SetActive(flag);
209 buttonFeatMode.SetActive(idTab == 2 && chara.IsPC);
210 buttonFeatOption.SetActive(idTab == 2 && chara.IsPC && featMode);
211 }
212 }
213
214 public void SetPortraitBG(int a)
215 {
216 string currentId = chara.GetStr(23) ?? "BG_1";
217 currentId = Portrait.modPortraitBGs.GetNextID(currentId, a);
218 if (currentId == "BG_1")
219 {
220 currentId = null;
221 }
222 chara.SetStr(23, currentId);
224 }
225
226 public void SetPortraitFrame(int a)
227 {
228 string currentId = chara.GetStr(24) ?? "BGF_1";
229 currentId = Portrait.modPortraitBGFs.GetNextID(currentId, a);
230 if (currentId == "BGF_1")
231 {
232 currentId = null;
233 }
234 chara.SetStr(24, currentId);
236 }
237
238 public void ToggleFeatMode()
239 {
242 buttonFeatOption.SetActive(featMode);
244 {
245 EClass.game.config.showAllFeat = a;
247 });
248 }
249
250 public void RefreshFeatMode()
251 {
252 buttonFeatMode.mainText.text = "featMode".lang(EClass.pc.feat.ToString() ?? "");
253 ColorBlock colors = buttonFeatMode.colors;
254 colors.normalColor = colors.normalColor.SetAlpha(featMode ? 1 : 0);
255 buttonFeatMode.colors = colors;
256 }
257
258 public void Refresh()
259 {
261 }
262
263 public void RefreshStatic()
264 {
265 textHealth.text = chara.hp + "/" + chara.MaxHP;
266 textMood.text = chara.mana.value + "/" + chara.mana.max;
268 Sprite @object = Portrait.modPortraitBGs.GetItem(chara.GetStr(23) ?? "BG_1").GetObject();
269 @object.texture.filterMode = FilterMode.Bilinear;
270 portrait.image.sprite = @object;
271 @object = Portrait.modPortraitBGFs.GetItem(chara.GetStr(24) ?? "BGF_1").GetObject();
272 @object.texture.filterMode = FilterMode.Bilinear;
273 portrait.imageFrame.sprite = @object;
276 listAttaribute.callbacks = new UIList.Callback<Element, ButtonElement>
277 {
278 onClick = delegate(Element a, ButtonElement b)
279 {
282 },
283 onInstantiate = delegate(Element a, ButtonElement b)
284 {
285 b.SetElement(a, chara.elements, ButtonElement.Mode.Attribute);
286 }
287 };
288 List<Element> list = chara.elements.ListElements((Element a) => a.HasTag("primary"));
289 list.Sort((Element a, Element b) => a.source.sort - b.source.sort);
290 foreach (Element item in list)
291 {
293 }
295 }
296
297 public void RefreshStatus()
298 {
299 layoutStatus.DestroyChildren();
300 foreach (Stats item in new List<Stats> { chara.hunger, chara.burden, chara.stamina, chara.depression, chara.bladder, chara.hygiene })
301 {
303 }
304 foreach (Condition condition in chara.conditions)
305 {
306 AddStatus(condition);
307 }
308 if (layoutStatus.transform.childCount == 1)
309 {
310 AddStatus(null);
311 }
312 layoutStatus.RebuildLayout();
313 }
314
315 public void AddNeeds(Stats st)
316 {
317 UIItem uIItem = Util.Instantiate(moldNeeds, layoutNeeds);
318 uIItem.text1.SetText(st.source.GetName());
319 if (st.GetText().IsEmpty())
320 {
321 uIItem.text2.SetActive(enable: false);
322 }
323 else
324 {
325 st.SetText(uIItem.text2);
326 }
327 UIBar componentInChildren = uIItem.GetComponentInChildren<UIBar>();
328 componentInChildren.Refresh(st.value, st.max);
329 componentInChildren.image.color = st.GetColor().Multiply(barColor1, barColor2);
330 }
331
332 public void AddStatus(BaseStats st)
333 {
334 string text = st?.GetText() ?? "noItem".lang();
335 if (text.IsEmpty())
336 {
337 return;
338 }
339 UIItem uIItem = Util.Instantiate(moldStats, layoutStatus);
340 if (st == null)
341 {
342 uIItem.text1.SetText(text, FontColor.Passive);
343 uIItem.button1.interactable = false;
344 }
345 else if (text.IsEmpty())
346 {
347 uIItem.text1.SetText(st.source.GetName());
348 }
349 else
350 {
351 st.SetText(uIItem.text1);
352 uIItem.image1.sprite = st.GetSprite();
353 uIItem.image1.SetNativeSize();
354 }
355 if (st != null)
356 {
357 uIItem.button1.SetTooltip(delegate(UITooltip t)
358 {
359 st.WriteNote(t.note);
360 });
361 }
362 }
363
364 public void RefreshProfile()
365 {
367 textName.text = chara.NameSimple;
368 textAlias.text = chara.Aka;
369 textTitle.text = (chara.IsPC ? EClass.player.title : "-");
370 textCurrentZone.text = ((chara.currentZone == null) ? "???" : chara.currentZone.Name);
371 textHomeZone.text = ((chara.homeZone == null) ? "???" : chara.homeZone.Name);
372 textBio.text = chara.job.GetText().ToTitleCase();
373 textBio2.text = bio.TextBio(chara);
374 textBio3.text = bio.TextBio2(chara);
375 textDV.text = "_DV".lang(chara.DV.ToString() ?? "", chara.PV.ToString() ?? "");
376 textStyle.text = "_style".lang(Lang._weight(chara.body.GetWeight(armorOnly: true)) ?? "", chara.elements.GetOrCreateElement(chara.GetArmorSkill()).Name, ("style" + chara.body.GetAttackStyle()).lang());
377 textKarma.text = (chara.IsPC ? (EClass.player.karma.ToString() ?? "") : "???");
378 textSAN.text = chara.SAN.value.ToString() ?? "";
379 textFame.text = (chara.IsPC ? (EClass.player.fame.ToString() ?? "") : "???");
380 textMoney.text = Lang._currency(chara.GetCurrency(), showUnit: true);
381 textDeposit.text = Lang._currency(chara.IsPC ? EClass.game.cards.container_deposit.GetCurrency() : chara.c_allowance, showUnit: true);
382 string text = "deepestLv2".lang((chara.IsPCFaction ? EClass.player.stats.deepest : chara.LV).ToString() ?? "");
383 if (chara.IsPCFaction && EClass.player.CountKeyItem("license_void") > 0)
384 {
385 text = text + " " + "deepestLv3".lang(Mathf.Abs(EClass.game.spatials.Find("void").GetDeepestLv()).ToString() ?? "");
386 }
387 textDeepest.text = text;
388 textAssets.text = (chara.IsPC ? "tGameTime".lang(EClass.player.stats.days.ToFormat(), EClass.player.stats.turns.ToFormat()) : "???");
389 textTerritory.text = (chara.IsPC ? (EClass.pc.faction.CountTerritories().ToString() ?? "") : "???");
395 }
396
397 public void RefreshEquipment(UIList list, bool sort = true)
398 {
399 string text = chara.GetFavWeaponSkill()?.Name ?? Element.Get(100).GetText();
400 text = text + "/" + (chara.GetFavArmorSkill()?.Name ?? Element.Get(120).GetText());
401 textFavArmor.SetText(text);
402 list.Clear();
403 list.callbacks = new UIList.Callback<BodySlot, UIItem>
404 {
405 onClick = delegate
406 {
407 },
408 onInstantiate = delegate(BodySlot a, UIItem b)
409 {
410 if (a.elementId == 0)
411 {
412 b.button1.interactable = false;
413 }
414 else
415 {
416 Thing thing = (Thing)(b.refObj = a.thing);
417 if (thing != null)
418 {
419 b.button1.icon.material = matItem;
420 thing.SetImage(b.button1.icon);
421 }
422 else
423 {
424 b.button1.icon.material = null;
425 b.button1.icon.sprite = SpriteSheet.Get("Media/Graphics/Icon/Element/", "eq_" + a.element.alias);
426 b.button1.icon.color = colorUnequipped;
427 b.button1.icon.SetNativeSize();
428 }
429 b.button1.SetTooltip(delegate(UITooltip tt)
430 {
431 if (a.thing != null)
432 {
433 a.thing.WriteNote(tt.note);
434 }
435 else
436 {
437 tt.note.Clear();
438 tt.note.AddHeader(a.name);
439 tt.note.AddText("noEQ".lang());
440 if (a.elementId == 35)
441 {
443 }
444 }
445 tt.note.Build();
446 });
447 }
448 },
449 onSort = (BodySlot a, UIList.SortMode m) => (a.element.id != 0) ? chara.body.GetSortVal(a) : (-99999)
450 };
451 foreach (BodySlot slot in chara.body.slots)
452 {
453 if (slot.elementId != 44)
454 {
455 list.Add(slot);
456 }
457 }
458 if (list.items.Count < 12)
459 {
460 int num = 12 - list.items.Count;
461 for (int i = 0; i < num; i++)
462 {
463 list.Add(new BodySlot());
464 }
465 }
466 if (list.items.Count > 18)
467 {
468 gridEquip.cellSize = new Vector2(52f, 44f);
469 gridEquip.spacing = new Vector2(-6f, -12f);
470 }
471 if (sort)
472 {
473 list.Sort();
474 }
475 list.Refresh();
476 }
477
478 public void RefreshInfo()
479 {
480 textBirthday.text = bio.TextBirthDate(chara);
481 textMom.text = chara.bio.nameMom.ToTitleCase();
482 textDad.text = chara.bio.nameDad.ToTitleCase();
483 textBirthplace.text = chara.bio.nameBirthplace.ToTitleCase();
484 textLike.text = EClass.sources.cards.map.TryGetValue(bio.idLike, EClass.sources.cards.map["ash"]).GetName();
485 textHobby.text = EClass.sources.elements.map[bio.idHobby].GetText();
486 textFaction.text = ((chara.faction == null) ? "???" : chara.faction.name.ToTitleCase());
487 textFaith.text = chara.faith.Name.ToTitleCase();
488 }
489
490 public void OnClickPortrait()
491 {
492 if (chara.IsPC)
493 {
494 EClass.ui.AddLayer<LayerEditPCC>().Activate(chara, UIPCC.Mode.Body, null, delegate
495 {
497 });
498 }
499 else
500 {
501 SE.Beep();
502 }
503 }
504
505 public void RefreshSkill(int idTab)
506 {
507 contentList.DestroyChildren();
508 note.Clear();
509 note.RebuildLayout();
510 UIList list = default(UIList);
511 if (idTab == 1)
512 {
513 List("skillsGeneral", "general");
514 List("skillsCraft", "craft");
515 List("skillsCombat", "combat");
516 List("skillsWeapon", "weapon");
517 }
518 else if (idTab == 2)
519 {
520 RefreshFeatMode();
521 if (featMode)
522 {
523 List("availableFeats", "general");
524 List("availableFeats_special", "special");
525 List("availableFeats_skill", "skill");
526 List("availableFeats_attribute", "attribute");
527 return;
528 }
529 Header("mutation", null);
530 ListFeat();
531 list.callbacks = new UIList.Callback<Feat, ButtonElement>
532 {
533 onClick = delegate(Feat a, ButtonElement b)
534 {
536 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
537 },
538 onInstantiate = delegate(Feat a, ButtonElement b)
539 {
540 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
541 },
542 onList = delegate
543 {
544 foreach (Element item in chara.elements.ListElements((Element a) => a.source.category == "mutation" && a.Value != 0))
545 {
546 list.Add(item);
547 }
548 }
549 };
550 list.List();
551 if (list.items.Count == 0)
552 {
553 _header.SetActive(enable: false);
554 list.SetActive(enable: false);
555 }
556 Header("etherDisease", null);
557 ListFeat();
558 list.callbacks = new UIList.Callback<Feat, ButtonElement>
559 {
560 onClick = delegate(Feat a, ButtonElement b)
561 {
563 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
564 },
565 onInstantiate = delegate(Feat a, ButtonElement b)
566 {
567 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
568 },
569 onList = delegate
570 {
571 foreach (Element item2 in chara.elements.ListElements((Element a) => a.source.category == "ether" && a.Value != 0))
572 {
573 list.Add(item2);
574 }
575 }
576 };
577 list.List();
578 if (list.items.Count == 0)
579 {
580 _header.SetActive(enable: false);
581 list.SetActive(enable: false);
582 }
583 Header("innateFeats", null);
584 ListFeat();
585 list.callbacks = new UIList.Callback<Feat, ButtonElement>
586 {
587 onClick = delegate(Feat a, ButtonElement b)
588 {
590 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
591 },
592 onInstantiate = delegate(Feat a, ButtonElement b)
593 {
594 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
595 },
596 onList = delegate
597 {
598 foreach (Element item3 in chara.elements.ListElements((Element a) => a.source.category == "feat" && a.HasTag("innate") && a.Value != 0))
599 {
600 list.Add(item3);
601 }
602 }
603 };
604 list.List();
605 Header("feats", null);
606 ListFeat();
607 list.callbacks = new UIList.Callback<Feat, ButtonElement>
608 {
609 onClick = delegate(Feat a, ButtonElement b)
610 {
612 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
613 },
614 onInstantiate = delegate(Feat a, ButtonElement b)
615 {
616 b.SetElement(a, chara.elements, ButtonElement.Mode.Feat);
617 },
618 onList = delegate
619 {
620 foreach (Element item4 in chara.elements.ListElements((Element a) => a.source.category == "feat" && !a.HasTag("innate") && a.Value != 0))
621 {
622 list.Add(item4);
623 }
624 },
625 onSort = (Feat a, UIList.SortMode m) => a.GetSortVal(m)
626 };
627 list.ChangeSort(UIList.SortMode.ByID);
628 list.List();
629 }
630 else if (idTab == 3)
631 {
632 Header("resistance", null);
633 headerEquip.SetText("resistance".lang());
634 ListResist();
635 list.callbacks = new UIList.Callback<Element, ButtonElement>
636 {
637 onInstantiate = delegate(Element a, ButtonElement b)
638 {
639 b.SetGrid(a, chara);
640 },
641 onList = delegate
642 {
643 foreach (SourceElement.Row item5 in EClass.sources.elements.rows.Where((SourceElement.Row a) => a.category == "resist" && ((!a.tag.Contains("hidden") && !a.tag.Contains("high")) || chara.Evalue(a.id) != 0)))
644 {
645 list.Add(chara.elements.GetOrCreateElement(item5.id));
646 }
647 }
648 };
649 list.List();
650 }
651 else if (idTab == 4)
652 {
654 List<Element> eles = chara.elements.ListElements(delegate(Element a)
655 {
656 if (a.source.tag.Contains("godAbility") || a.source.categorySub == "god")
657 {
658 return false;
659 }
660 if (a.IsFlag)
661 {
662 if (a.Value == 0)
663 {
664 return false;
665 }
666 }
667 else
668 {
669 if (a.vSource != 0)
670 {
671 if (a.source.IsWeaponEnc)
672 {
673 return true;
674 }
675 int id = a.id;
676 if ((uint)(id - 55) <= 2u || id == 68 || id == 93)
677 {
678 return true;
679 }
680 }
681 if ((a.owner == chara.elements && a.vLink == 0 && !a.IsFactionElement(chara)) || a.source.category == "resist")
682 {
683 return false;
684 }
685 }
686 return true;
687 });
688 eles.Sort((Element a, Element b) => a.SortVal(charaSheet: true) - b.SortVal(charaSheet: true));
689 string[] skillCats = new string[7] { "general", "labor", "mind", "stealth", "combat", "craft", "weapon" };
690 Header("enchant", null);
691 headerEquip.SetText("enchant".lang());
692 ListResist();
693 list.callbacks = new UIList.Callback<Element, ButtonElement>
694 {
695 onInstantiate = delegate(Element a, ButtonElement b)
696 {
697 b.SetGrid(a, chara);
698 },
699 onList = delegate
700 {
701 foreach (Element item6 in eles)
702 {
703 if (!skillCats.Contains(item6.source.categorySub))
704 {
705 list.Add(item6);
706 }
707 }
708 }
709 };
710 list.List();
711 Header("skill", null);
712 ListResist();
713 list.callbacks = new UIList.Callback<Element, ButtonElement>
714 {
715 onInstantiate = delegate(Element a, ButtonElement b)
716 {
717 b.SetGrid(a, chara);
718 },
719 onList = delegate
720 {
721 foreach (Element item7 in eles)
722 {
723 if (skillCats.Contains(item7.source.categorySub))
724 {
725 list.Add(item7);
726 }
727 }
728 }
729 };
730 list.List();
731 }
732 else if (idTab == 5)
733 {
734 Header("note", null);
735 note.transform.SetAsLastSibling();
736 RefreshNote(chara, note);
737 }
738 void Header(string lang, string lang2)
739 {
740 _header = Util.Instantiate(moldHeader, contentList);
741 _header.SetText(lang);
742 if (lang2 != null)
743 {
744 Util.Instantiate(moldHeader2, contentList).SetText(lang2);
745 }
746 }
747 void List(string lang, string idSubCat)
748 {
749 List<string> cats = new List<string>();
750 cats.Add(idSubCat);
751 if (idSubCat == "general")
752 {
753 cats.Add("labor");
754 cats.Add("mind");
755 cats.Add("stealth");
756 }
757 Header(lang, null);
758 ListSkill();
759 list.callbacks = new UIList.Callback<Element, ButtonElement>
760 {
761 onClick = delegate(Element a, ButtonElement b)
762 {
764 b.SetElement(a, chara.elements);
765 },
766 onInstantiate = delegate(Element a, ButtonElement b)
767 {
768 b.SetElement(a, chara.elements);
769 },
770 onList = delegate
771 {
772 foreach (Element item8 in chara.elements.ListElements((Element a) => (a.Value != 0 || a.ValueWithoutLink != 0 || a.vSource > 0) && a.source.category == "skill" && cats.Contains(a.source.categorySub)))
773 {
774 list.Add(item8);
775 }
776 },
777 onSort = (Element c, UIList.SortMode m) => EClass.sources.elements.alias[c.source.aliasParent].id * -10000 - c.id
778 };
779 list.List(UIList.SortMode.ByElementParent);
780 }
781 void List(string lang, string idSubCat)
782 {
783 Header(lang, "cost");
784 ListFeatPurchase();
785 UIList _list = list;
786 _list.callbacks = new UIList.Callback<Element, ButtonElement>
787 {
788 onClick = delegate(Element a, ButtonElement b)
789 {
791 {
792 SE.BeepSmall();
793 }
794 else if (EClass.pc.feat < a.CostLearn)
795 {
796 SE.BeepSmall();
797 Msg.Say("notEnoughFeatPoint");
798 }
799 else
800 {
801 Dialog.YesNo("dialogBuyFeat".lang(a.CostLearn.ToString() ?? "", a.FullName), delegate
802 {
803 EClass.pc.feat -= a.CostLearn;
804 EClass.pc.SetFeat(a.id, a.Value, msg: true);
805 RefreshSkill(idTab);
806 RefreshFeatMode();
807 RefreshStatic();
808 this.RebuildLayout(recursive: true);
809 });
810 }
811 },
812 onInstantiate = delegate(Element a, ButtonElement b)
813 {
814 b.SetElement(a, chara.elements, ButtonElement.Mode.FeatPurchase);
815 },
816 onList = delegate
817 {
818 foreach (Element item9 in chara.ListAvailabeFeats(pet: false, EClass.game.config.showAllFeat))
819 {
820 if (item9.source.categorySub == idSubCat)
821 {
822 _list.Add(item9);
823 }
824 }
825 }
826 };
827 _list.List();
828 }
829 void ListFeat()
830 {
831 list = Util.Instantiate(moldListFeat, contentList);
832 }
833 void ListFeatPurchase()
834 {
835 list = Util.Instantiate(moldListFeatPurchase, contentList);
836 }
837 void ListResist()
838 {
839 list = Util.Instantiate(moldListResist, contentList);
840 }
841 void ListSkill()
842 {
843 list = Util.Instantiate(moldListSkill, contentList);
844 }
845 }
846
847 private void OnApplicationFocus(bool focus)
848 {
849 if (focus && window.idTab == 5)
850 {
851 RefreshNote(chara, note);
852 }
853 }
854
855 public static void RefreshNote(Chara chara, UINote n, bool shortMode = false)
856 {
857 n.Clear();
858 Biography biography = chara.bio;
859 if (shortMode)
860 {
861 n.AddText(biography.TextBio(chara) + " " + biography.TextBio2(chara));
862 n.Space();
863 }
864 else
865 {
866 UIItem uIItem = n.AddItem("ItemBackground");
867 if (chara.IsPC)
868 {
870 uIItem.button1.SetOnClick(delegate
871 {
873 });
874 }
875 else
876 {
877 uIItem.text1.SetText("???");
878 uIItem.button1.SetActive(enable: false);
879 }
880 n.Space(16);
881 n.AddTopic("TopicDomain", "profile".lang(), biography.TextBio(chara) + " " + biography.TextBio2(chara));
882 }
883 string text = "";
884 ElementContainer elementContainer = (chara.IsPC ? EClass.player.GetDomains() : new ElementContainer().ImportElementMap(chara.job.domain));
885 foreach (Element value in elementContainer.dict.Values)
886 {
887 text = text + ((value == elementContainer.dict.Values.First()) ? "" : ", ") + value.Name;
888 }
889 n.AddTopic("TopicDomain", "domain".lang(), text).button1.SetActive(enable: false);
890 string text2 = chara.GetFavCat().GetName();
891 string @ref = chara.GetFavFood().GetName();
892 Add("favgift".lang(text2.ToLower().ToTitleCase(), @ref));
893 Add(chara.GetTextHobby());
894 Add(chara.GetTextWork());
895 if (chara.IsPC)
896 {
897 n.AddTopic("TopicDomain", "totalFeat".lang(), EClass.player.totalFeat.ToString() ?? "");
898 }
899 text = chara.GetFavWeaponSkill()?.Name ?? Element.Get(100).GetText();
900 text = text + " / " + ("style" + chara.GetFavAttackStyle()).lang();
901 n.AddTopic("TopicDomain", "attackStyle".lang(), text);
902 n.AddTopic("TopicDomain", "armorStyle".lang(), chara.GetFavArmorSkill()?.Name ?? Element.Get(120).GetText());
903 if (chara.IsPC && EClass.pc.c_daysWithGod > 0)
904 {
905 AddText("info_daysWithGod".lang(EClass.pc.c_daysWithGod.ToString() ?? "", EClass.pc.faith.Name));
906 }
907 if (chara.ride != null)
908 {
909 AddText("info_ride".lang(chara.ride.NameBraced));
910 }
911 if (chara.parasite != null)
912 {
913 AddText("info_parasite".lang(chara.parasite.NameBraced));
914 }
916 {
917 AddText("info_criminal".lang());
918 }
919 if (!chara.IsPC)
920 {
921 int num = chara.GetAffinityExpBonus() - 100;
922 if (num != 0)
923 {
924 AddText("affinity_exp_bonus".lang(chara.affinity.Name, ((num > 0) ? "+" : "") + num));
925 }
926 if (chara.c_daysWithPC > 0)
927 {
928 num = chara.GetDaysTogetherBonus() - 100;
929 AddText("info_daysWithPC".lang(chara.c_daysWithPC.ToString() ?? "") + Environment.NewLine + "daystogether_bonus".lang(((num > 0) ? "+" : "") + num));
930 }
931 }
933 {
934 n.AddText("LV:" + chara.LV + " exp:" + chara.exp + " next:" + chara.ExpToNext);
935 n.AddText("Luck:" + chara.Evalue(78));
936 }
937 n.Build();
938 void Add(string s)
939 {
940 string[] array = s.Split(':');
941 n.AddTopic("TopicDomain", array[0], (array.Length >= 2) ? array[1].TrimStart(' ') : "").button1.SetActive(enable: false);
942 }
943 void AddText(string s)
944 {
945 n.AddText(" ・ " + s);
946 }
947 }
948}
FontColor
Definition: FontColor.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
list. Add(item3)
string Name
Definition: Affinity.cs:34
void SetStr(int id, string value=null)
Definition: BaseCard.cs:63
string GetStr(int id, string defaultStr=null)
Definition: BaseCard.cs:54
virtual Sprite GetSprite()
Definition: BaseStats.cs:57
virtual void SetText(UIText t, SkinColorProfile cols=null)
Definition: BaseStats.cs:62
virtual void WriteNote(UINote n, Action< UINote > onWriteNote=null)
Definition: BaseStats.cs:93
SourceStat.Row source
Definition: BaseStats.cs:15
virtual string GetText()
Definition: BaseStats.cs:42
string TextBio(Chara c)
Definition: Biography.cs:484
string nameBirthplace
Definition: Biography.cs:264
string nameDad
Definition: Biography.cs:260
string TextBirthDate(Chara c, bool _age=false)
Definition: Biography.cs:499
string TextBio2(Chara c)
Definition: Biography.cs:489
string nameMom
Definition: Biography.cs:262
string idLike
Definition: Biography.cs:17
int idHobby
Definition: Biography.cs:173
string name
Definition: BodySlot.cs:14
int elementId
Definition: BodySlot.cs:6
Thing thing
Definition: BodySlot.cs:8
SourceElement.Row element
Definition: BodySlot.cs:16
void SetElement(Element _e, ElementContainer _owner, Mode _mode=Mode.Skill)
void SetGrid(Element e, Chara c)
Thing container_deposit
Definition: CardManager.cs:58
ElementContainerCard elements
Definition: Card.cs:37
int ExpToNext
Definition: Card.cs:1944
int GetAffinityExpBonus()
Definition: Card.cs:2895
Biography bio
Definition: Card.cs:40
int GetCurrency(string id="money")
Definition: Card.cs:3820
int c_daysWithGod
Definition: Card.cs:1433
int c_allowance
Definition: Card.cs:1289
int exp
Definition: Card.cs:382
int feat
Definition: Card.cs:358
int c_daysWithPC
Definition: Card.cs:1445
string NameSimple
Definition: Card.cs:2075
int GetDaysTogetherBonus()
Definition: Card.cs:2900
int Evalue(int ele)
Definition: Card.cs:2507
void SetImage(Image image, int dir, int idSkin=0)
Definition: Card.cs:5727
int LV
Definition: Card.cs:370
List< BodySlot > slots
Definition: CharaBody.cs:8
AttackStyle GetAttackStyle()
Definition: CharaBody.cs:433
int GetSortVal(BodySlot slot)
Definition: CharaBody.cs:476
int GetWeight(bool armorOnly=false)
Definition: CharaBody.cs:390
Definition: Chara.cs:10
SourceCategory.Row GetFavCat()
Definition: Chara.cs:7469
Stats depression
Definition: Chara.cs:1000
CharaBody body
Definition: Chara.cs:94
Faction faction
Definition: Chara.cs:423
override bool IsPC
Definition: Chara.cs:608
override int GetArmorSkill()
Definition: Chara.cs:7290
SourceJob.Row job
Definition: Chara.cs:462
List< Condition > conditions
Definition: Chara.cs:207
Stats hunger
Definition: Chara.cs:994
override bool IsPCFaction
Definition: Chara.cs:667
string NameBraced
Definition: Chara.cs:510
override int DV
Definition: Chara.cs:725
List< Element > ListAvailabeFeats(bool pet=false, bool showAll=false)
Definition: Chara.cs:9099
override int MaxHP
Definition: Chara.cs:704
Zone currentZone
Definition: Chara.cs:251
string Aka
Definition: Chara.cs:212
Stats bladder
Definition: Chara.cs:1002
Stats SAN
Definition: Chara.cs:1010
Stats mana
Definition: Chara.cs:1006
override int PV
Definition: Chara.cs:754
Stats stamina
Definition: Chara.cs:998
Stats burden
Definition: Chara.cs:996
SourceThing.Row GetFavFood()
Definition: Chara.cs:7449
Chara parasite
Definition: Chara.cs:30
Chara ride
Definition: Chara.cs:27
Zone homeZone
Definition: Chara.cs:263
Affinity affinity
Definition: Chara.cs:310
Religion faith
Definition: Chara.cs:435
Element GetFavWeaponSkill()
Definition: Chara.cs:4378
Element GetFavArmorSkill()
Definition: Chara.cs:4383
string GetTextWork(bool simple=false)
Definition: Chara.cs:8379
string GetTextHobby(bool simple=false)
Definition: Chara.cs:8369
AttackStyle GetFavAttackStyle()
Definition: Chara.cs:4358
bool showExtra
Definition: CoreDebug.cs:167
bool enable
Definition: CoreDebug.cs:285
Definition: Dialog.cs:7
static Dialog YesNo(string langDetail, Action actionYes, Action actionNo=null, string langYes="yes", string langNo="no")
Definition: Dialog.cs:244
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static UI ui
Definition: EClass.cs:16
List< Element > ListElements(Func< Element, bool > shoudList=null, Comparison< Element > comparison=null)
void ImportElementMap(Dictionary< int, int > map)
Element GetOrCreateElement(Element ele)
bool IsFactionElement(Chara c)
Definition: ELEMENT.cs:491
int ValueWithoutLink
Definition: ELEMENT.cs:292
int id
Definition: ELEMENT.cs:248
SourceElement.Row source
Definition: ELEMENT.cs:271
virtual bool IsPurchaseFeatReqMet(ElementContainer owner, int lv=-1)
Definition: ELEMENT.cs:1088
static SourceElement.Row Get(int id)
Definition: ELEMENT.cs:399
ElementContainer owner
Definition: ELEMENT.cs:264
bool HasTag(string tag)
Definition: ELEMENT.cs:471
virtual string FullName
Definition: ELEMENT.cs:304
int GetSortVal(UIList.SortMode m)
Definition: ELEMENT.cs:1002
int Value
Definition: ELEMENT.cs:290
virtual string Name
Definition: ELEMENT.cs:302
int vLink
Definition: ELEMENT.cs:258
int vSource
Definition: ELEMENT.cs:260
virtual int CostLearn
Definition: ELEMENT.cs:312
bool IsFlag
Definition: ELEMENT.cs:300
int SortVal(bool charaSheet=false)
Definition: ELEMENT.cs:460
string name
Definition: FACTION.cs:135
int CountTerritories()
Definition: FACTION.cs:229
Definition: FEAT.cs:255
bool showAllFeat
Definition: Game.cs:57
SpatialManager spatials
Definition: Game.cs:152
CardManager cards
Definition: Game.cs:155
Config config
Definition: Game.cs:215
Definition: Lang.cs:6
static string _weight(int a, int b, bool showUnit=true, int unitSize=0)
Definition: Lang.cs:172
static string _currency(object a, string IDCurrency)
Definition: Lang.cs:162
string GetNextID(string currentId, int a, bool ignoreCategory=true)
Definition: ModItemList.cs:35
ModItem< T > GetItem(string id, bool returnNull=false)
Definition: ModItemList.cs:61
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
int deepest
Definition: Player.cs:92
int turns
Definition: Player.cs:74
int days
Definition: Player.cs:68
bool IsCriminal
Definition: Player.cs:1153
int karma
Definition: Player.cs:697
Stats stats
Definition: Player.cs:832
ElementContainer GetDomains()
Definition: Player.cs:1347
int totalFeat
Definition: Player.cs:724
int CountKeyItem(string alias)
Definition: Player.cs:1967
int fame
Definition: Player.cs:700
string GetBackgroundText()
Definition: Player.cs:1438
void EditBackgroundText()
Definition: Player.cs:1472
static ModItemList< Sprite > modPortraitBGFs
Definition: Portrait.cs:8
static ModItemList< Sprite > modPortraitBGs
Definition: Portrait.cs:10
void SetChara(Chara c, PCCData pccData=null)
Definition: Portrait.cs:138
string Name
Definition: Religion.cs:30
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceCard cards
SourceElement elements
Zone Find(string id)
virtual string Name
Definition: Spatial.cs:495
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
Definition: Stats.cs:5
override string GetText()
Definition: Stats.cs:94
override Color GetColor(Gradient g)
Definition: Stats.cs:104
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
Definition: Thing.cs:8
override void WriteNote(UINote n, Action< UINote > onWriteNote=null, IInspect.NoteMode mode=IInspect.NoteMode.Default, Recipe recipe=null)
Definition: Thing.cs:841
static void AddAttackEvaluation(UINote n, Chara chara, Thing current=null)
Definition: Thing.cs:1390
Definition: UIBar.cs:5
void Refresh(float current, float max)
Definition: UIBar.cs:12
Image icon
Definition: UIButton.cs:110
void SetTooltip(Action< UITooltip > onShowTooltip=null, bool enable=true)
Definition: UIButton.cs:361
void SetToggle(bool isOn, Action< bool > onToggle=null)
Definition: UIButton.cs:341
void SetText(string s)
Definition: UIHeader.cs:24
Definition: UIItem.cs:5
UIButton button1
Definition: UIItem.cs:18
Image image1
Definition: UIItem.cs:14
UIText text2
Definition: UIItem.cs:8
UIText text1
Definition: UIItem.cs:6
object refObj
Definition: UIItem.cs:30
Definition: UIList.cs:9
List< object > items
Definition: UIList.cs:241
override void Clear()
Definition: UIList.cs:349
UIList parent
Definition: UIList.cs:261
SortMode
Definition: UIList.cs:27
override void Add(object item)
Definition: UIList.cs:302
virtual void Refresh(bool highlightLast=false)
Definition: UIList.cs:424
void ChangeSort(SortMode m)
Definition: UIList.cs:705
override void List()
Definition: UIList.cs:717
Definition: UINote.cs:6
void Clear()
Definition: UINote.cs:35
UIItem AddItem(string id)
Definition: UINote.cs:139
UIItem AddHeader(string text, Sprite sprite=null)
Definition: UINote.cs:79
UIItem AddTopic(string id, string text, string value=null)
Definition: UINote.cs:144
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
void Space(int sizeY=0, int sizeX=1)
Definition: UINote.cs:62
void Build()
Definition: UINote.cs:49
Definition: UIText.cs:6
void SetText(string s)
Definition: UIText.cs:159
UINote note
Definition: UITooltip.cs:21
Definition: Util.cs:10
static Transform Instantiate(string path, Component parent=null)
Definition: Util.cs:67
static void Toggle(Element e)
Sprite maskResist
Definition: WindowChara.cs:146
void OnApplicationFocus(bool focus)
Definition: WindowChara.cs:847
LayoutGroup layoutStatus
Definition: WindowChara.cs:102
UIText textFaith
Definition: WindowChara.cs:36
void RefreshProfile()
Definition: WindowChara.cs:364
void SetChara(Chara c)
Definition: WindowChara.cs:164
GridLayoutGroup gridEquip
Definition: WindowChara.cs:104
Biography bio
Definition: WindowChara.cs:162
void AddStatus(BaseStats st)
Definition: WindowChara.cs:332
Chara chara
Definition: WindowChara.cs:12
ButtonElement buttonVigor
Definition: WindowChara.cs:112
UIText textStability
Definition: WindowChara.cs:84
UIList moldListFeatPurchase
Definition: WindowChara.cs:132
ButtonElement buttonMana
Definition: WindowChara.cs:108
void SetPortraitBG(int a)
Definition: WindowChara.cs:214
Sprite mask
Definition: WindowChara.cs:144
UIText textTerritory
Definition: WindowChara.cs:60
UIText textHealth
Definition: WindowChara.cs:18
UIText textLike
Definition: WindowChara.cs:46
UIItem moldStats
Definition: WindowChara.cs:116
UIButton buttonFeatOption
Definition: WindowChara.cs:140
ButtonElement buttonLife
Definition: WindowChara.cs:110
void RefreshStatus()
Definition: WindowChara.cs:297
UIList listEquipment2
Definition: WindowChara.cs:78
void ToggleFeatMode()
Definition: WindowChara.cs:238
UIText textName
Definition: WindowChara.cs:20
RectTransform rectEquip
Definition: WindowChara.cs:136
UIText textDad
Definition: WindowChara.cs:42
Image imageView
Definition: WindowChara.cs:142
UIText textTitle
Definition: WindowChara.cs:24
UIText textSAN
Definition: WindowChara.cs:52
UIList listEquipment
Definition: WindowChara.cs:76
override void OnSwitchContent(Window window)
Definition: WindowChara.cs:185
UIText textStyle
Definition: WindowChara.cs:98
static void RefreshNote(Chara chara, UINote n, bool shortMode=false)
Definition: WindowChara.cs:855
void OnClickPortrait()
Definition: WindowChara.cs:490
UIText textBio2
Definition: WindowChara.cs:28
UIText textAlias
Definition: WindowChara.cs:22
UIText textHobby
Definition: WindowChara.cs:48
UIItem moldNeeds
Definition: WindowChara.cs:118
UIText textKarma
Definition: WindowChara.cs:50
UIText textDV
Definition: WindowChara.cs:96
UIText textBirthday
Definition: WindowChara.cs:32
UIText textFaction
Definition: WindowChara.cs:34
float barColor1
Definition: WindowChara.cs:156
UIText textDeepest
Definition: WindowChara.cs:68
void Update()
Definition: WindowChara.cs:180
LayoutGroup layoutNeeds
Definition: WindowChara.cs:100
Vector2 equipPos
Definition: WindowChara.cs:152
UIText textMoney
Definition: WindowChara.cs:56
UIText textAssets
Definition: WindowChara.cs:64
UIText textFame
Definition: WindowChara.cs:54
UIList listAttaribute
Definition: WindowChara.cs:74
UIHeader moldHeader
Definition: WindowChara.cs:120
UIText textFavArmor
Definition: WindowChara.cs:94
UIList moldListResist
Definition: WindowChara.cs:128
void SetPortraitFrame(int a)
Definition: WindowChara.cs:226
void RefreshStatic()
Definition: WindowChara.cs:263
UIText textDeposit
Definition: WindowChara.cs:66
void AddNeeds(Stats st)
Definition: WindowChara.cs:315
Transform contentList
Definition: WindowChara.cs:134
UIText textDominance
Definition: WindowChara.cs:90
UIScrollView scrollSkill
Definition: WindowChara.cs:106
UIHeader _header
Definition: WindowChara.cs:160
Color colorUnequipped
Definition: WindowChara.cs:150
UIText textTax
Definition: WindowChara.cs:58
UIHeader moldHeader2
Definition: WindowChara.cs:122
void RefreshEquipment(UIList list, bool sort=true)
Definition: WindowChara.cs:397
Portrait portrait
Definition: WindowChara.cs:14
UIText textHomeZone
Definition: WindowChara.cs:72
UIText textBirthplace
Definition: WindowChara.cs:44
static WindowChara Instance
Definition: WindowChara.cs:10
PUIExampleRPGStats graph
Definition: WindowChara.cs:82
UIList moldListFeat
Definition: WindowChara.cs:130
UIHeader headerEquip
Definition: WindowChara.cs:124
float barColor2
Definition: WindowChara.cs:158
ButtonElement buttonSpeed
Definition: WindowChara.cs:114
UIText textBio3
Definition: WindowChara.cs:30
UIText textBio
Definition: WindowChara.cs:26
UIText textExtroversion
Definition: WindowChara.cs:92
UIText textCurrentZone
Definition: WindowChara.cs:70
UIText textHome
Definition: WindowChara.cs:38
UIText textIncome
Definition: WindowChara.cs:62
void RefreshSkill(int idTab)
Definition: WindowChara.cs:505
void RefreshFeatMode()
Definition: WindowChara.cs:250
UIText textLaw
Definition: WindowChara.cs:86
UIText textAffection
Definition: WindowChara.cs:88
void RefreshInfo()
Definition: WindowChara.cs:478
UIText textMood
Definition: WindowChara.cs:16
UINote note
Definition: WindowChara.cs:80
UIList moldListSkill
Definition: WindowChara.cs:126
Material matItem
Definition: WindowChara.cs:148
UIText textMom
Definition: WindowChara.cs:40
void Refresh()
Definition: WindowChara.cs:258
UIButton buttonFeatMode
Definition: WindowChara.cs:138
List< Tab > tabs
Definition: Window.cs:81
Definition: Window.cs:13
void SwitchContent(UIContent content)
Definition: Window.cs:1198
void SetCaption(string text)
Definition: Window.cs:1289
Setting setting
Definition: Window.cs:606
int idTab
Definition: Window.cs:694
int GetDeepestLv()
Definition: Zone.cs:2919