Elin Decompiled Documentation EA 23.345.1 Nightly
Loading...
Searching...
No Matches
ELEMENT.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4using UnityEngine.UI;
5
6public class ELEMENT
7{
8 public const int comfort = 750;
9
10 public const int rare = 751;
11
12 public const int cute = 752;
13
14 public const int antidote = 753;
15
16 public const int blood = 755;
17
18 public const int hotspring = 756;
19
20 public const int purity = 759;
21
22 public const int stimulant = 760;
23
24 public const int recharge = 761;
25
26 public const int roasted = 762;
27
28 public const int air = 763;
29
30 public const int difficulty = 765;
31
32 public const int forbidden = 766;
33
34 public const int nerve = 754;
35
36 public const int effectRange = 770;
37
38 public const int _void = 0;
39
40 public const int socket = 5;
41
42 public const int lv = 1;
43
44 public const int quality = 2;
45
46 public const int d = 3;
47
48 public const int nutrition = 10;
49
50 public const int weight = 11;
51
52 public const int size = 12;
53
54 public const int hardness = 13;
55
56 public const int growth = 14;
57
58 public const int water = 15;
59
60 public const int decay = 17;
61
62 public const int taste = 18;
63
64 public const int heat = 16;
65
66 public const int fire = 21;
67
68 public const int cut = 22;
69
70 public const int old_detox = 23;
71
72 public const int old_heal = 24;
73
74 public const int old_antidote = 25;
75
76 public const int cure = 26;
77
78 public const int race = 29;
79
80 public const int piety = 85;
81
82 public const int poison = 20;
83
84 public static readonly int[] IDS = new int[38]
85 {
86 750, 751, 752, 753, 755, 756, 759, 760, 761, 762,
87 763, 765, 766, 754, 770, 0, 5, 1, 2, 3,
88 10, 11, 12, 13, 14, 15, 17, 18, 16, 21,
89 22, 23, 24, 25, 26, 29, 85, 20
90 };
91}
92public class Element : EClass
93{
94 public class BonusInfo
95 {
96 public Element ele;
97
98 public UINote n;
99
100 public Chara c;
101
102 public bool first = true;
103
104 public long total;
105
106 public void CheckFirst()
107 {
108 if (first)
109 {
110 first = false;
111 n.Space(8);
112 }
113 }
114
115 public void AddText(string text, FontColor col = FontColor.Warning)
116 {
117 CheckFirst();
118 n.AddText("_bullet".lang() + text, col);
119 }
120
121 public void AddText(long v, string text, string textBad = null)
122 {
123 if (v != 0L)
124 {
125 string text2 = text;
126 if (!textBad.IsEmpty() && v < 0)
127 {
128 text2 = textBad;
129 }
130 CheckFirst();
131 total += v;
132 n.AddText("_bullet".lang() + text2 + " " + ((v > 0) ? "+" : "") + v, (v > 0) ? FontColor.Good : FontColor.Bad);
133 }
134 }
135
136 public void AddFix(int v, string text)
137 {
138 if (v != 0)
139 {
140 CheckFirst();
141 n.AddText("_bullet".lang() + text + " " + ((v > 0) ? "+" : "") + v + "%", (v > 0) ? FontColor.Good : FontColor.Bad);
142 }
143 }
144
145 public void WriteNote()
146 {
147 int id = ele.id;
148 int num = 0;
149 foreach (BodySlot slot in c.body.slots)
150 {
151 if (slot.elementId != 44 && slot.thing != null && ((id != 67 && id != 66) || slot.elementId != 35))
152 {
153 Element orCreateElement = slot.thing.elements.GetOrCreateElement(id);
154 if (orCreateElement != null && !orCreateElement.IsGlobalElement)
155 {
156 num += orCreateElement.Value;
157 }
158 }
159 }
160 AddText(num, "equipment".lang());
161 if (c.IsPCFaction)
162 {
164 if (element != null)
165 {
166 AddText(element.Value, "sub_faction".lang());
167 }
168 }
169 foreach (Condition condition in c.conditions)
170 {
171 if (condition.GetElementContainer() != null)
172 {
173 AddText(condition.GetElementContainer().Value(id), condition.Name);
174 }
175 }
176 if (c.tempElements != null)
177 {
178 AddText(c.tempElements.Value(id), "tempStrengthen".lang(), "tempWeaken".lang());
179 }
180 try
181 {
182 if (c.faithElements != null)
183 {
184 int num2 = c.faithElements.Value(id);
185 Element element2 = c.elements.GetElement("featGod_" + c.faith.id + "1");
186 if (element2 != null)
187 {
188 AddText(num2, element2.Name);
189 }
190 else if (num2 != 0)
191 {
192 AddText(num2, EClass.sources.elements.map[1228].GetName());
193 }
194 }
195 }
196 catch
197 {
198 }
199 _ = ele.Value;
200 _ = ele.ValueWithoutLink + total;
201 foreach (Element value in c.elements.dict.Values)
202 {
203 if (value.HasTag("multiplier") && value.source.aliasRef == ele.source.alias)
204 {
205 AddFix(value.Value, value.Name);
206 }
207 }
208 if (id == 79)
209 {
210 c.RefreshSpeed(this);
211 }
212 if (id == 78 && c.IsPCFactionOrMinion)
213 {
214 int num3 = EClass.player.CountKeyItem("lucky_coin");
215 if (num3 > 0)
216 {
217 AddText(EClass.sources.keyItems.alias["lucky_coin"].GetName() + " (+" + num3 * 2 + ")", FontColor.Great);
218 }
220 {
221 AddFix(100, EClass.sources.elements.map[663].GetName());
222 }
223 }
224 if (!c.IsMachine && !(c.id == "android"))
225 {
226 return;
227 }
228 int num4 = c.Evalue(664);
229 if (num4 > 0)
230 {
231 switch (id)
232 {
233 case 64:
234 case 65:
235 AddFix(num4 / 2, EClass.sources.elements.map[664].GetName());
236 break;
237 case 79:
238 AddFix(num4, EClass.sources.elements.map[664].GetName());
239 break;
240 }
241 }
242 }
243 }
244
245 public const int Div = 5;
246
247 public static Element Void = new Element();
248
249 public static int[] List_MainAttributes = new int[9] { 70, 72, 71, 77, 74, 75, 76, 73, 79 };
250
251 public static int[] List_MainAttributesMajor = new int[8] { 70, 72, 71, 77, 74, 75, 76, 73 };
252
253 public static int[] List_Body = new int[4] { 70, 72, 71, 77 };
254
255 public static int[] List_Mind = new int[4] { 74, 75, 76, 73 };
256
258
259 public int id;
260
261 public int vBase;
262
263 public int vExp;
264
265 public int vPotential;
266
267 public int vTempPotential;
268
269 public int vLink;
270
271 public int vSource;
272
274
276
277 public static List<SourceElement.Row> ListElements = new List<SourceElement.Row>();
278
279 public static List<SourceElement.Row> ListAttackElements = new List<SourceElement.Row>();
280
282 {
283 get
284 {
286 if (row == null)
287 {
288 SourceElement.Row obj = ((id == 0) ? GetSource() : Get(id)) ?? EClass.sources.elements.rows[0];
289 SourceElement.Row row2 = obj;
290 _source = obj;
291 row = row2;
292 }
293 return row;
294 }
295 }
296
297 public virtual int DisplayValue => Value;
298
299 public virtual int MinValue => -100;
300
301 public int Value => ValueWithoutLink + vLink + ((owner != null) ? owner.ValueBonus(this) : 0);
302
304
305 public virtual int MinPotential => 100;
306
308
309 public virtual bool CanGainExp => ValueWithoutLink > 0;
310
311 public bool IsFlag => source.tag.Contains("flag");
312
313 public virtual string Name => source.GetName();
314
315 public virtual string FullName => Name;
316
317 public virtual int ExpToNext => 1000;
318
319 public virtual bool UseExpMod => true;
320
321 public virtual int CostTrain => Mathf.Max((ValueWithoutLink / 10 + 5) * (100 + vTempPotential) / 500, 1);
322
323 public virtual int CostLearn => 5;
324
325 public virtual bool ShowXP
326 {
327 get
328 {
330 {
331 return source.category != "attribute";
332 }
333 return true;
334 }
335 }
336
337 public virtual bool ShowMsgOnValueChanged => true;
338
339 public virtual bool ShowValue => true;
340
341 public virtual bool ShowPotential => true;
342
343 public virtual bool UsePotential => true;
344
345 public virtual bool PotentialAsStock => false;
346
347 public virtual bool ShowRelativeAttribute => false;
348
349 public virtual bool ShowBonuses => true;
350
351 public virtual string ShortName => Name;
352
353 public bool IsGlobalElement
354 {
355 get
356 {
357 if (vExp != -1)
358 {
359 return vExp == -2;
360 }
361 return true;
362 }
363 }
364
365 public bool IsFactionWideElement => vExp == -1;
366
367 public bool IsPartyWideElement => vExp == -2;
368
369 public virtual bool ShowEncNumber => true;
370
371 public bool IsTrait => source.tag.Contains("trait");
372
373 public bool IsFoodTrait => !source.foodEffect.IsEmpty();
374
375 public bool IsFoodTraitMain
376 {
377 get
378 {
379 if (IsFoodTrait)
380 {
381 if (!source.tag.Contains("primary"))
382 {
383 return source.tag.Contains("foodpot");
384 }
385 return true;
386 }
387 return false;
388 }
389 }
390
391 public bool IsMainAttribute
392 {
393 get
394 {
395 if (source.category == "attribute")
396 {
397 return source.tag.Contains("primary");
398 }
399 return false;
400 }
401 }
402
403 public Act act => (this as Act) ?? ACT.Create(id);
404
405 public static string GetName(string alias)
406 {
407 return EClass.sources.elements.alias[alias].GetName();
408 }
409
410 public static SourceElement.Row Get(int id)
411 {
412 return EClass.sources.elements.map[id];
413 }
414
416 {
417 return EClass.sources.elements.alias.TryGetValue(GetType().ToString());
418 }
419
420 public virtual int GetSourcePotential(int v)
421 {
422 return 0;
423 }
424
425 public virtual Sprite GetSprite()
426 {
427 return null;
428 }
429
430 public int GetMaterialSourceValue(Thing t, int v)
431 {
432 if (id == 2 || v < 0)
433 {
434 return v;
435 }
436 if (IsTrait)
437 {
438 if (t.IsFurniture)
439 {
440 return v;
441 }
442 return Mathf.Min(v + t.encLV * 10, 60);
443 }
444 return v * (100 + t.encLV * 10) / 100;
445 }
446
447 public virtual long GetSourceValue(long v, int lv, SourceValueType type)
448 {
449 return type switch
450 {
451 SourceValueType.Chara => v * (100 + (lv - 1 + EClass.rnd(lv / 2 + 1)) * source.lvFactor / 10) / 100 + (long)EClass.rnd(lv / 3) * (long)source.lvFactor / 100,
452 SourceValueType.Fixed => v,
453 _ => v * ((source.encFactor == 0) ? 100 : (50 + EClass.rnd(100) + (long)EClass.rnd((int)Mathf.Sqrt(lv * 100)) * (long)source.encFactor / 100)) / 100,
454 };
455 }
456
457 public virtual Sprite GetIcon(string suffix = "")
458 {
459 return SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "ele_" + source.alias + suffix) ?? SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "ele_" + source.aliasParent + suffix) ?? SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "cat_" + source.category);
460 }
461
462 public bool IsActive(Card c)
463 {
464 if (IsGlobalElement && c != null && !c.c_idDeity.IsEmpty() && c.c_idDeity != EClass.pc.idFaith)
465 {
466 return false;
467 }
468 return Value != 0;
469 }
470
471 public int SortVal(bool charaSheet = false)
472 {
473 int num = ((source.sort != 0) ? source.sort : id);
474 return (IsFlag ? 100000 : 0) + ((!charaSheet && IsGlobalElement) ? (-1000000) : 0) + (((IsFoodTrait || IsTrait) && owner != null && owner.Card != null && owner.Card.ShowFoodEnc) ? 10000 : 0) + num;
475 }
476
477 public virtual bool CanLink(ElementContainer owner)
478 {
479 return false;
480 }
481
482 public bool HasTag(string tag)
483 {
484 return source.tag.Contains(tag);
485 }
486
487 public void SetImage(Image i)
488 {
489 Sprite icon = GetIcon();
490 if ((bool)icon)
491 {
492 i.sprite = icon;
493 i.SetNativeSize();
494 }
495 }
496
497 public virtual string GetDetail()
498 {
499 return source.GetDetail();
500 }
501
502 public bool IsFactionElement(Chara c)
503 {
504 if (c == null)
505 {
506 return false;
507 }
508 if (c.IsPCFaction)
509 {
510 foreach (Element value in EClass.pc.faction.charaElements.dict.Values)
511 {
512 if (value.id == id && value.Value > 0)
513 {
514 return true;
515 }
516 }
517 }
518 if (c.faithElements != null)
519 {
520 foreach (Element value2 in c.faithElements.dict.Values)
521 {
522 if (value2.id == id && value2.Value > 0)
523 {
524 return true;
525 }
526 }
527 }
528 return false;
529 }
530
531 public int GetDNABonus(Chara c)
532 {
533 int num = 0;
534 foreach (BodySlot slot in c.body.slots)
535 {
536 if (slot.thing != null && slot.thing.c_DNA != null)
537 {
538 Element element = slot.thing.c_DNA.GetElement(id);
539 if (element != null)
540 {
541 num += element.Value;
542 }
543 }
544 }
545 if (c.c_genes != null)
546 {
547 foreach (DNA item in c.c_genes.items)
548 {
549 Element element2 = item.GetElement(id);
550 if (element2 != null)
551 {
552 num += element2.Value;
553 }
554 }
555 }
556 return num;
557 }
558
560 {
561 if (!source.aliasParent.IsEmpty())
562 {
563 return c.elements.GetOrCreateElement(source.aliasParent);
564 }
565 return null;
566 }
567
568 public static Dictionary<int, int> GetElementMap(int[] list)
569 {
570 Dictionary<int, int> dictionary = new Dictionary<int, int>();
571 if (list != null)
572 {
573 for (int i = 0; i < list.Length / 2; i++)
574 {
575 dictionary[list[i * 2]] = list[i * 2 + 1];
576 }
577 }
578 return dictionary;
579 }
580
581 public static Dictionary<int, int> GetElementMap(int[] list, Dictionary<int, int> map)
582 {
583 if (list != null)
584 {
585 for (int i = 0; i < list.Length / 2; i++)
586 {
587 map[list[i * 2]] = list[i * 2 + 1];
588 }
589 }
590 return map;
591 }
592
593 public static SourceElement.Row GetRandomElement(int lv = 1, bool useWeight = true)
594 {
595 if (lv > 100)
596 {
597 lv = 100;
598 }
599 if (ListElements.Count == 0)
600 {
601 foreach (SourceElement.Row row in EClass.sources.elements.rows)
602 {
603 if (row.categorySub == "eleAttack" && row.chance > 0)
604 {
605 ListElements.Add(row);
606 }
607 }
608 }
609 List<Tuple<SourceElement.Row, int>> list = new List<Tuple<SourceElement.Row, int>>();
610 foreach (SourceElement.Row listElement in ListElements)
611 {
612 int num = 40 * (listElement.eleP - 100) / 100;
613 if (list.Count == 0 || num < lv)
614 {
615 list.Add(new Tuple<SourceElement.Row, int>(listElement, num));
616 }
617 }
618 return (useWeight ? list.RandomItemWeighted((Tuple<SourceElement.Row, int> a) => 10000 / (100 + (lv - a.Item2) * 25)) : list.RandomItem()).Item1;
619 }
620
621 public void WriteNote(UINote n, ElementContainer owner = null, Action<UINote> onWriteNote = null)
622 {
623 n.Clear();
624 _WriteNote(n, owner, onWriteNote, isRef: false);
625 n.Build();
626 }
627
628 public void WriteNoteWithRef(UINote n, ElementContainer owner, Action<UINote> onWriteNote, Element refEle)
629 {
630 n.Clear();
631 _WriteNote(n, owner, onWriteNote, isRef: false);
632 if (refEle.Value > 0)
633 {
634 refEle._WriteNote(n, owner, onWriteNote, isRef: true);
635 }
637 {
639 }
640 n.Build();
641 }
642
643 public void _WriteNote(UINote n, Chara c, Act act)
644 {
646 Act.Cost cost = e.GetCost(c);
647 int p = e.GetPower(c);
648 n.Space(6);
649 string text = source.GetText("textExtra");
650 if (!text.IsEmpty())
651 {
652 string[] array = text.Split(',');
653 foreach (string text2 in array)
654 {
655 if (text2.StartsWith("@"))
656 {
657 Condition condition = Condition.Create(text2.Replace("@", ""), p);
658 condition.owner = c;
659 if (condition is ConWeapon conWeapon)
660 {
661 conWeapon.cha = c.CHA;
662 }
663 if (!source.aliasRef.IsEmpty())
664 {
665 condition.SetElement(EClass.sources.elements.alias[source.aliasRef].id);
666 }
667 switch (act.id)
668 {
669 case 6902:
670 condition.SetRefVal(79, 268);
671 break;
672 case 8510:
673 case 8710:
674 condition.SetRefVal(79, (act.id == 8710) ? 222 : 221);
675 break;
676 }
677 n.AddText("_bullet".lang() + (condition.HasDuration ? "hintCon" : "hintCon2").lang(condition.Name, condition.EvaluateTurn(p).ToString() ?? "") + ((condition.HasDuration && condition.MaxDuration != 0 && condition.MaxDuration < 999) ? "hintCon3".lang(condition.MaxDuration.ToString() ?? "") : ""));
678 condition._WriteNote(n, asChild: true);
679 }
680 else
681 {
682 string text3 = text2.Replace("#calc", Calc()).Replace(";", ",");
683 if (!source.aliasRef.IsEmpty())
684 {
685 text3 = text3.Replace("#ele", EClass.sources.elements.alias[source.aliasRef].GetName().ToLower());
686 }
687 n.AddText("_bullet".lang() + text3);
688 }
689 }
690 }
691 if (source.tag.Contains("syncRide"))
692 {
693 n.AddText("_bullet".lang() + "hintSyncRide".lang());
694 }
695 if (source.tag.Contains("recovery"))
696 {
697 n.AddText("_bullet".lang() + "hintStaminaRecovery".lang());
698 }
699 if (source.tag.Contains("dontForget"))
700 {
701 n.AddText("_bullet".lang() + "hintDontForget".lang());
702 }
704 {
705 int i = id;
706 if (i != 8230 && i != 8232)
707 {
708 n.AddText("_bullet".lang() + "hintPartyAbility".lang());
709 }
710 }
711 if (!act.LocalAct)
712 {
713 n.Space();
714 n.AddText("isGlobalAct".lang());
715 }
716 if (cost.type == Act.CostType.None || cost.cost == 0 || act.owner is ElementContainerField)
717 {
718 return;
719 }
720 n.Space(4);
721 UIItem uIItem = n.AddExtra<UIItem>("costPrice");
722 int num = cost.cost;
723 if (cost.type == Act.CostType.MP)
724 {
725 if (c.Evalue(483) > 0)
726 {
727 num = cost.cost * 100 / (100 + (int)Mathf.Sqrt(c.Evalue(483) * 10) * 3);
728 }
729 if (c.IsPC && c.HasCondition<StanceManaCost>())
730 {
731 int num2 = c.Evalue(1657);
732 if (num2 > 0 && (vPotential >= 2 || c.ability.Has(act.id)))
733 {
734 num = num * (100 - num2 * 20) / 100;
735 }
736 }
737 }
738 string text4 = cost.cost.ToString() ?? "";
739 if (num != cost.cost)
740 {
741 text4 = num + " (" + text4 + ")";
742 }
743 uIItem.text1.SetText(text4, (((cost.type == Act.CostType.MP) ? c.mana.value : c.stamina.value) >= num) ? FontColor.Good : FontColor.Bad);
744 uIItem.image1.sprite = ((cost.type == Act.CostType.MP) ? EClass.core.refs.icons.mana : EClass.core.refs.icons.stamina);
745 uIItem.image1.SetNativeSize();
746 string Calc()
747 {
748 Dice dice = Dice.Create(e, c);
749 if (dice == null)
750 {
751 return p.ToString() ?? "";
752 }
753 return dice.ToString();
754 }
755 }
756
758 {
759 UIItem uIItem = n.AddHeader("HeaderAbility", FullName.ToTitleCase(wholeText: true), GetSprite());
760 uIItem.text2.text = ((this is Spell) ? (vPotential.ToString() ?? "") : "-");
761 (this as Act)?.SetImage(uIItem.image1);
762 }
763
764 public void _WriteNote(UINote n, ElementContainer owner, Action<UINote> onWriteNote, bool isRef, bool addHeader = true)
765 {
766 bool flag = this is FieldEffect && owner.Chara == null;
767 if (addHeader)
768 {
769 if (isRef)
770 {
771 UIText.globalSizeMod = -2;
772 n.AddHeader("prevElement".lang(FullName));
773 }
774 else if (this is Act && !flag)
775 {
777 n.Space(8);
778 }
779 else
780 {
781 n.AddHeader(FullName.ToTitleCase(wholeText: true));
782 }
783 }
784 string detail = GetDetail();
785 if (!detail.IsEmpty())
786 {
787 n.AddText("NoteText_flavor_element", detail);
788 n.Space(6);
789 }
790 int num = vLink;
791 if (owner.Chara != null && owner.Chara.IsPCFaction)
792 {
794 }
795 bool flag2 = ShowValue;
796 bool flag3 = ShowRelativeAttribute && !flag;
797 if (source.category == "landfeat")
798 {
799 flag2 = false;
800 flag3 = false;
801 }
802 if (!flag)
803 {
804 if (this is Act)
805 {
806 Act act = ACT.Create(source.id);
807 UIItem uIItem = n.AddItem("ItemAbility");
808 uIItem.text1.text = "vValue".lang(DisplayValue.ToString() ?? "", ValueWithoutLink + ((num == 0) ? "" : ((num > 0) ? (" + " + num) : (" - " + -num))));
809 uIItem.text2.text = act.TargetType.ToString().lang();
810 uIItem.text3.text = ((this is Spell && owner.Chara != null) ? (owner.Chara.CalcCastingChance(owner.GetOrCreateElement(act.source.id)) + "%") : "-") ?? "";
811 }
812 else if (flag2)
813 {
814 n.AddTopic("TopicLeft", "vCurrent".lang(), "vValue".lang(DisplayValue.ToString() ?? "", ValueWithoutLink + ((num == 0) ? "" : ((num > 0) ? (" + " + num) : (" - " + -num)))));
815 if (ShowPotential)
816 {
817 num = vTempPotential;
818 n.AddTopic("TopicLeft", "vPotential".lang(), "vValue".lang(Potential.ToString() ?? "", vPotential + vSourcePotential + MinPotential + ((num == 0) ? "" : ((num > 0) ? (" + " + num) : (" - " + -num)))));
819 }
821 }
822 }
823 if (flag3 && !source.aliasParent.IsEmpty())
824 {
825 Element element = Create(source.aliasParent);
826 UIItem uIItem2 = n.AddItem("ItemRelativeAttribute");
827 uIItem2.text1.SetText(element.Name);
828 element.SetImage(uIItem2.image1);
829 bool flag4 = source.lvFactor > 0 && this is Act;
830 uIItem2.text2.SetActive(flag4);
831 uIItem2.text3.SetActive(flag4);
832 if (flag4)
833 {
834 uIItem2.text2.SetText(GetPower(EClass.pc).ToString() ?? "");
835 }
836 bool flag5 = source.eleP != 50 && this is Act;
837 uIItem2.text4.SetActive(flag5);
838 uIItem2.Find("text5")?.SetActive(flag5);
839 if (flag5)
840 {
841 uIItem2.text4.SetText(source.eleP.ToString() ?? "");
842 }
843 }
844 OnWriteNote(n, owner);
846 {
847 n.AddTopic("TopicLeft", "Class:", GetType()?.ToString() ?? "");
848 n.AddTopic("TopicLeft", "vExp".lang(), vExp.ToString() ?? "");
849 n.AddTopic("TopicLeft", "vSource", vSource.ToString() ?? "");
850 n.AddTopic("TopicLeft", "vSourcePotential", vSourcePotential.ToString() ?? "");
851 n.AddTopic("TopicLeft", "vPotential", vPotential.ToString() ?? "");
852 n.AddTopic("TopicLeft", "Potential", Potential.ToString() ?? "");
853 }
855 onWriteNote?.Invoke(n);
856 if (ShowBonuses && owner.Chara != null)
857 {
858 BonusInfo bonusInfo = new BonusInfo();
859 bonusInfo.ele = this;
860 bonusInfo.n = n;
861 bonusInfo.c = owner.Chara;
862 bonusInfo.WriteNote();
863 }
864 UIText.globalSizeMod = 0;
865 }
866
867 public void AddEncNote(UINote n, Card Card, ElementContainer.NoteMode mode = ElementContainer.NoteMode.Default, Func<Element, string, string> funcText = null, Action<UINote, Element> onAddNote = null)
868 {
869 string text = "";
870 switch (mode)
871 {
872 case ElementContainer.NoteMode.Domain:
873 n.AddText(Name, FontColor.Default);
874 return;
875 case ElementContainer.NoteMode.Default:
876 case ElementContainer.NoteMode.BonusTrait:
877 {
878 bool flag = source.tag.Contains("common");
879 string categorySub = source.categorySub;
880 bool flag2 = false;
881 bool flag3 = (source.tag.Contains("neg") ? (Value > 0) : (Value < 0));
882 int num = Mathf.Abs(Value);
883 bool flag4 = Card?.ShowFoodEnc ?? false;
884 bool flag5 = Card != null && this is Ability && (Card.IsWeapon || Card.IsThrownWeapon || Card.IsAmmo || Card.category.slot == 35);
885 if (IsTrait || (flag4 && IsFoodTrait))
886 {
887 string[] textArray = source.GetTextArray("textAlt");
888 int num2 = Mathf.Clamp(Value / 10 + 1, (Value < 0 || textArray.Length <= 2) ? 1 : 2, textArray.Length - 1);
889 text = "altEnc".lang(textArray[0].IsEmpty(Name), textArray[num2], EClass.debug.showExtra ? (Value + " " + Name) : "");
890 flag3 = num2 <= 1 || textArray.Length <= 2;
891 flag2 = true;
892 }
893 else if (flag5)
894 {
895 text = "isProc".lang(Name);
896 flag3 = false;
897 }
898 else if (categorySub == "resist" || this is Feat)
899 {
900 text = ("isResist" + (flag3 ? "Neg" : "")).lang(Name);
901 }
902 else if (categorySub == "eleAttack")
903 {
904 text = "isEleAttack".lang(Name);
905 }
906 else if (!source.textPhase.IsEmpty() && Value > 0)
907 {
908 text = source.GetText("textPhase");
909 }
910 else
911 {
912 string name = Name;
913 bool flag6 = source.category == "skill" || (source.category == "attribute" && !source.textPhase.IsEmpty());
914 bool flag7 = source.category == "enchant";
915 if (source.tag.Contains("multiplier"))
916 {
917 flag6 = (flag7 = false);
918 name = EClass.sources.elements.alias[source.aliasRef].GetName();
919 }
920 flag2 = !(flag6 || flag7);
921 text = (flag6 ? "textEncSkill" : (flag7 ? "textEncEnc" : "textEnc")).lang(name, num + (source.tag.Contains("ratio") ? "%" : ""), ((Value > 0) ? "encIncrease" : "encDecrease").lang());
922 }
923 int num3 = ((!(this is Resistance)) ? 1 : 0);
924 int num4 = 5;
925 if (id == 484)
926 {
927 num3 = 0;
928 num4 = 1;
929 }
930 if (!flag && !flag2 && !source.tag.Contains("flag"))
931 {
932 text = text + " [" + "*".Repeat(Mathf.Clamp(num * source.mtp / num4 + num3, 1, 5)) + ((num * source.mtp / num4 + num3 > 5) ? "+" : "") + "]";
933 }
934 if (HasTag("hidden") && mode != ElementContainer.NoteMode.BonusTrait)
935 {
936 text = "(debug)" + text;
937 }
938 FontColor color = (flag ? FontColor.Default : (flag3 ? FontColor.Bad : FontColor.Good));
939 if (IsGlobalElement)
940 {
941 text = text + " " + (IsFactionWideElement ? "_factionWide" : "_partyWide").lang();
942 if (!IsActive(Card))
943 {
944 return;
945 }
946 color = FontColor.Myth;
947 }
948 if (flag4 && IsFoodTrait && !IsFoodTraitMain)
949 {
950 color = FontColor.FoodMisc;
951 }
952 if (id == 2 && Value >= 0)
953 {
954 color = FontColor.FoodQuality;
955 }
956 if (id == 484 && owner != null && owner.Card != null && owner.Card.CountRune(countFree: false) >= owner.Card.MaxRune())
957 {
958 color = FontColor.Gray;
959 }
960 if (funcText != null)
961 {
962 text = funcText(this, text);
963 }
964 UIItem uIItem = n.AddText("NoteText_enc", text, color);
965 Sprite sprite = EClass.core.refs.icons.enc.enc;
966 Thing thing = Card?.Thing;
967 if (thing != null)
968 {
969 if (thing.material.HasEnc(id))
970 {
971 sprite = EClass.core.refs.icons.enc.mat;
972 }
973 foreach (int key in thing.source.elementMap.Keys)
974 {
975 if (key == id)
976 {
977 sprite = EClass.core.refs.icons.enc.card;
978 }
979 }
980 if (thing.ShowFoodEnc && IsFoodTrait)
981 {
983 }
984 if (id == thing.GetInt(107))
985 {
986 sprite = EClass.core.refs.icons.enc.cat;
987 }
988 if (thing.GetRuneEnc(id) != null)
989 {
990 sprite = EClass.core.refs.icons.enc.rune;
991 }
992 }
993 if ((bool)sprite)
994 {
995 uIItem.image1.SetActive(enable: true);
996 uIItem.image1.sprite = sprite;
997 }
998 uIItem.image2.SetActive(source.IsWeaponEnc || source.IsShieldEnc);
999 uIItem.image2.sprite = (source.IsWeaponEnc ? EClass.core.refs.icons.enc.weaponEnc : EClass.core.refs.icons.enc.shieldEnc);
1000 onAddNote?.Invoke(n, this);
1001 return;
1002 }
1003 }
1004 UIItem uIItem2 = n.AddTopic("TopicAttribute", Name, "".TagColor((ValueWithoutLink > 0) ? SkinManager.CurrentColors.textGood : SkinManager.CurrentColors.textBad, ValueWithoutLink.ToString() ?? ""));
1005 if ((bool)uIItem2.button1)
1006 {
1007 uIItem2.button1.tooltip.onShowTooltip = delegate(UITooltip t)
1008 {
1010 };
1011 }
1012 SetImage(uIItem2.image1);
1013 Image image = uIItem2.image2;
1014 int value = (Potential - 80) / 20;
1015 image.enabled = Potential != 80;
1016 image.sprite = EClass.core.refs.spritesPotential[Mathf.Clamp(Mathf.Abs(value), 0, EClass.core.refs.spritesPotential.Count - 1)];
1017 image.color = ((Potential - 80 >= 0) ? Color.white : new Color(1f, 0.7f, 0.7f));
1018 }
1019
1021 {
1022 }
1023
1024 public virtual void OnChangeValue()
1025 {
1026 }
1027
1029 {
1030 if (owner == null || source.levelBonus.IsEmpty())
1031 {
1032 return;
1033 }
1034 bool flag = n == null;
1035 string[] array = (source.GetText("levelBonus", returnNull: true) ?? source.levelBonus).Split(Environment.NewLine.ToCharArray());
1036 if (!flag)
1037 {
1038 n.Space(10);
1039 }
1040 string[] array2 = array;
1041 foreach (string obj in array2)
1042 {
1043 string[] array3 = obj.Split(',');
1044 int lv = array3[0].ToInt();
1045 SourceElement.Row row = (EClass.sources.elements.alias.ContainsKey(array3[1]) ? EClass.sources.elements.alias[array3[1]] : null);
1046 if (flag)
1047 {
1048 if (lv > ValueWithoutLink)
1049 {
1050 break;
1051 }
1052 if (row != null && !owner.Has(row.id) && owner is ElementContainerZone)
1053 {
1054 owner.Learn(row.id);
1055 }
1056 }
1057 else
1058 {
1059 string s = ((row != null) ? row.GetName() : array3[1]);
1060 n.AddText((" Lv " + lv).TagColor(FontColor.Topic) + " " + s.TagColorGoodBad(() => (row != null) ? owner.Has(row.id) : (lv <= ValueWithoutLink), () => false));
1061 }
1062 }
1063 if (!flag)
1064 {
1065 n.Space(4);
1066 }
1067 }
1068
1070 {
1071 switch (m)
1072 {
1073 case UIList.SortMode.ByCategory:
1074 return source.id + ((!source.aliasParent.IsEmpty()) ? (EClass.sources.elements.alias[source.aliasParent].id * 10000) : 0);
1075 case UIList.SortMode.ByNumber:
1076 return -vPotential * 10000 + source.id;
1077 case UIList.SortMode.ByElementParent:
1078 if (!source.aliasParent.IsEmpty())
1079 {
1080 return EClass.sources.elements.alias[source.aliasParent].sort;
1081 }
1082 return id;
1083 default:
1084 if (source.sort == 0)
1085 {
1086 return source.id;
1087 }
1088 return source.sort;
1089 }
1090 }
1091
1092 public virtual Act.Cost GetCost(Chara c)
1093 {
1094 if (source.cost[0] == 0)
1095 {
1096 return new Act.Cost
1097 {
1098 type = Act.CostType.None
1099 };
1100 }
1101 Act.Cost result = default(Act.Cost);
1102 if (this is Spell)
1103 {
1104 result.type = Act.CostType.MP;
1105 int num = EClass.curve(Value, 50, 10);
1106 result.cost = source.cost[0] * (100 + ((!source.tag.Contains("noCostInc")) ? (num * 3) : 0)) / 100;
1107 }
1108 else
1109 {
1110 result.type = Act.CostType.SP;
1111 result.cost = source.cost[0];
1112 switch (source.id)
1113 {
1114 case 6020:
1115 result.cost = Mathf.Min(c.stamina.max / 3 + 10, 30);
1116 break;
1117 case 6663:
1118 case 6664:
1119 case 6665:
1120 {
1121 int num2 = -2 + c.body.CountWeapons();
1122 result.cost += num2 * 2;
1123 break;
1124 }
1125 }
1126 }
1127 if (!c.IsPC && result.cost > 2)
1128 {
1129 result.cost /= 2;
1130 }
1131 return result;
1132 }
1133
1134 public virtual int GetPower(Card c)
1135 {
1136 return 100;
1137 }
1138
1139 public virtual void SetTextValue(UIText text, bool shorten = false)
1140 {
1141 string text2 = DisplayValue.ToString() ?? "";
1142 if (ShowXP)
1143 {
1144 text2 += ".".TagSize((vExp / 10).ToString("D2") ?? "", 11);
1145 }
1146 if (vLink != 0)
1147 {
1148 string text3 = ((vLink > 0) ? "+" : "") + (shorten ? vLink.ToShortNumber() : ((object)vLink));
1149 text2 = "<color=" + ((DisplayValue > ValueWithoutLink) ? SkinManager.CurrentColors.textGood : SkinManager.CurrentColors.textBad).ToHex() + ">" + text2 + (" (" + text3 + ")").TagSize(13) + "</color>";
1150 }
1151 text.text = text2;
1152 }
1153
1154 public virtual bool IsPurchaseFeatReqMet(ElementContainer owner, int lv = -1)
1155 {
1156 return false;
1157 }
1158
1159 public virtual void WritePurchaseReq(UINote n, int lv = 1)
1160 {
1161 }
1162
1163 public static Element Create(int id, int v = 0)
1164 {
1165 SourceElement.Row row = EClass.sources.elements.map.TryGetValue(id);
1166 if (row == null)
1167 {
1168 return null;
1169 }
1170 Element obj = ClassCache.Create<Element>(row.type.IsEmpty("Element"), "Elin") ?? new Element();
1171 obj.id = id;
1172 obj.vBase = v;
1173 obj._source = row;
1174 return obj;
1175 }
1176
1177 public static Element Create(string id, int v = 1)
1178 {
1179 return Create(EClass.sources.elements.alias[id].id, v);
1180 }
1181
1182 public static int GetId(string alias)
1183 {
1184 return EClass.sources.elements.alias[alias].id;
1185 }
1186
1187 public static int GetResistLv(int v)
1188 {
1189 int num = v / 5;
1190 if (num < -2)
1191 {
1192 num = -2;
1193 }
1194 if (num > 4)
1195 {
1196 num = 4;
1197 }
1198 return num;
1199 }
1200
1201 public static long GetResistDamage(long dmg, int v, int power = 0)
1202 {
1203 int num = GetResistLv(v);
1204 if (power > 0 && num > 0)
1205 {
1206 num = Mathf.Max(num - power, 0);
1207 }
1208 if (num >= 4)
1209 {
1210 return 0L;
1211 }
1212 return num switch
1213 {
1214 3 => dmg / 4,
1215 2 => dmg / 3,
1216 1 => dmg / 2,
1217 0 => dmg,
1218 -1 => dmg * 3 / 2,
1219 -2 => dmg * 2,
1220 _ => dmg * 2,
1221 };
1222 }
1223}
float Calc(float lhs)
FontColor
Definition: FontColor.cs:2
SourceValueType
Definition: ACT.cs:6
static Act Create(int id)
Definition: ACT.cs:36
Definition: ACT.cs:62
CostType
Definition: ACT.cs:64
virtual bool LocalAct
Definition: ACT.cs:173
virtual TargetType TargetType
Definition: ACT.cs:144
virtual bool HaveLongPressAction
Definition: ACT.cs:135
virtual ElementContainer GetElementContainer()
void SetElement(int id)
virtual bool HasDuration
virtual int MaxDuration
virtual string Name
override void _WriteNote(UINote n, bool asChild=false)
virtual int EvaluateTurn(int p)
void SetRefVal(int a, int b)
int elementId
Definition: BodySlot.cs:6
Thing thing
Definition: BodySlot.cs:8
Definition: Card.cs:11
int CountRune(bool countFree=true)
Definition: Card.cs:3821
bool IsPCFactionOrMinion
Definition: Card.cs:2342
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
SourceMaterial.Row material
Definition: Card.cs:2103
string c_idDeity
Definition: Card.cs:1621
int CHA
Definition: Card.cs:2417
bool IsFurniture
Definition: Card.cs:2305
int MaxRune()
Definition: Card.cs:3837
int encLV
Definition: Card.cs:329
SocketData GetRuneEnc(int idEle)
Definition: Card.cs:3806
virtual Thing Thing
Definition: Card.cs:2110
int Evalue(int ele)
Definition: Card.cs:2704
DNA c_DNA
Definition: Card.cs:1933
int GetInt(string id, int? defaultInt=null)
Definition: Card.cs:2567
bool ShowFoodEnc
Definition: Card.cs:2244
bool Has(int id)
List< BodySlot > slots
Definition: CharaBody.cs:8
int CountWeapons()
Definition: CharaBody.cs:589
Definition: Chara.cs:10
CharaBody body
Definition: Chara.cs:94
string idFaith
Definition: Chara.cs:235
Faction faction
Definition: Chara.cs:431
override bool IsPC
Definition: Chara.cs:630
ElementContainer tempElements
Definition: Chara.cs:36
List< Condition > conditions
Definition: Chara.cs:215
bool HasCondition(string alias)
Definition: Chara.cs:10043
int CalcCastingChance(Element e, int num=1)
Definition: Chara.cs:6537
override bool IsPCFaction
Definition: Chara.cs:689
Stats stamina
Definition: Chara.cs:1205
ElementContainer faithElements
Definition: Chara.cs:38
void RefreshSpeed(Element.BonusInfo info=null)
Definition: Chara.cs:2078
Religion faith
Definition: Chara.cs:443
CharaAbility ability
Definition: Chara.cs:428
bool IsMachine
Definition: Chara.cs:950
static Condition Create(string alias, int power=100, Action< Condition > onCreate=null)
Definition: Condition.cs:47
bool showExtra
Definition: CoreDebug.cs:184
Sprite traitFood
Definition: CoreRef.cs:72
Sprite shieldEnc
Definition: CoreRef.cs:78
Sprite mana
Definition: CoreRef.cs:127
Sprite stamina
Definition: CoreRef.cs:129
List< Sprite > spritesPotential
Definition: CoreRef.cs:378
Icons icons
Definition: CoreRef.cs:358
CoreRef refs
Definition: Core.cs:51
Definition: DNA.cs:9
Element GetElement(int id)
Definition: DNA.cs:806
Definition: Dice.cs:5
override string ToString()
Definition: Dice.cs:126
static Dice Create(Element ele, Card c)
Definition: Dice.cs:131
Definition: EClass.cs:6
static int curve(long _a, int start, int step, int rate=75)
Definition: EClass.cs:69
static Core core
Definition: EClass.cs:7
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
const int air
Definition: ELEMENT.cs:28
const int stimulant
Definition: ELEMENT.cs:22
const int effectRange
Definition: ELEMENT.cs:36
const int antidote
Definition: ELEMENT.cs:14
const int weight
Definition: ELEMENT.cs:50
const int growth
Definition: ELEMENT.cs:56
const int forbidden
Definition: ELEMENT.cs:32
const int old_heal
Definition: ELEMENT.cs:72
const int race
Definition: ELEMENT.cs:78
const int comfort
Definition: ELEMENT.cs:8
const int cute
Definition: ELEMENT.cs:12
const int decay
Definition: ELEMENT.cs:60
const int purity
Definition: ELEMENT.cs:20
const int nutrition
Definition: ELEMENT.cs:48
const int difficulty
Definition: ELEMENT.cs:30
const int _void
Definition: ELEMENT.cs:38
const int heat
Definition: ELEMENT.cs:64
const int rare
Definition: ELEMENT.cs:10
const int taste
Definition: ELEMENT.cs:62
const int size
Definition: ELEMENT.cs:52
const int quality
Definition: ELEMENT.cs:44
const int piety
Definition: ELEMENT.cs:80
const int nerve
Definition: ELEMENT.cs:34
const int poison
Definition: ELEMENT.cs:82
static readonly int[] IDS
Definition: ELEMENT.cs:84
const int hotspring
Definition: ELEMENT.cs:18
const int cure
Definition: ELEMENT.cs:76
const int roasted
Definition: ELEMENT.cs:26
const int water
Definition: ELEMENT.cs:58
const int fire
Definition: ELEMENT.cs:66
const int recharge
Definition: ELEMENT.cs:24
const int lv
Definition: ELEMENT.cs:42
const int old_detox
Definition: ELEMENT.cs:70
const int socket
Definition: ELEMENT.cs:40
const int old_antidote
Definition: ELEMENT.cs:74
const int blood
Definition: ELEMENT.cs:16
const int d
Definition: ELEMENT.cs:46
const int hardness
Definition: ELEMENT.cs:54
const int cut
Definition: ELEMENT.cs:68
Dictionary< int, Element > dict
void Learn(int ele, int v=1)
bool Has(int ele)
virtual Card Card
int Value(int ele)
virtual int ValueBonus(Element e)
Element GetOrCreateElement(Element ele)
virtual Chara Chara
Element GetElement(string alias)
void AddText(string text, FontColor col=FontColor.Warning)
Definition: ELEMENT.cs:115
void WriteNote()
Definition: ELEMENT.cs:145
void AddFix(int v, string text)
Definition: ELEMENT.cs:136
void AddText(long v, string text, string textBad=null)
Definition: ELEMENT.cs:121
Element ele
Definition: ELEMENT.cs:96
void CheckFirst()
Definition: ELEMENT.cs:106
bool IsFactionElement(Chara c)
Definition: ELEMENT.cs:502
int GetDNABonus(Chara c)
Definition: ELEMENT.cs:531
virtual bool ShowPotential
Definition: ELEMENT.cs:341
virtual bool ShowMsgOnValueChanged
Definition: ELEMENT.cs:337
virtual bool CanGainExp
Definition: ELEMENT.cs:309
virtual Sprite GetSprite()
Definition: ELEMENT.cs:425
virtual int DisplayValue
Definition: ELEMENT.cs:297
virtual void OnChangeValue()
Definition: ELEMENT.cs:1024
virtual long GetSourceValue(long v, int lv, SourceValueType type)
Definition: ELEMENT.cs:447
static Element Create(string id, int v=1)
Definition: ELEMENT.cs:1177
int ValueWithoutLink
Definition: ELEMENT.cs:303
static int[] List_Body
Definition: ELEMENT.cs:253
static SourceElement.Row GetRandomElement(int lv=1, bool useWeight=true)
Definition: ELEMENT.cs:593
virtual bool ShowXP
Definition: ELEMENT.cs:326
virtual bool UseExpMod
Definition: ELEMENT.cs:319
int Potential
Definition: ELEMENT.cs:307
int GetMaterialSourceValue(Thing t, int v)
Definition: ELEMENT.cs:430
virtual SourceElement.Row GetSource()
Definition: ELEMENT.cs:415
int id
Definition: ELEMENT.cs:259
int vBase
Definition: ELEMENT.cs:261
virtual void WritePurchaseReq(UINote n, int lv=1)
Definition: ELEMENT.cs:1159
SourceElement.Row source
Definition: ELEMENT.cs:282
int vExp
Definition: ELEMENT.cs:263
virtual bool IsPurchaseFeatReqMet(ElementContainer owner, int lv=-1)
Definition: ELEMENT.cs:1154
void _WriteNote(UINote n, Chara c, Act act)
Definition: ELEMENT.cs:643
int vPotential
Definition: ELEMENT.cs:265
static SourceElement.Row Get(int id)
Definition: ELEMENT.cs:410
virtual int GetSourcePotential(int v)
Definition: ELEMENT.cs:420
ElementContainer owner
Definition: ELEMENT.cs:275
virtual Sprite GetIcon(string suffix="")
Definition: ELEMENT.cs:457
static int GetResistLv(int v)
Definition: ELEMENT.cs:1187
virtual int MinValue
Definition: ELEMENT.cs:299
bool HasTag(string tag)
Definition: ELEMENT.cs:482
virtual int CostTrain
Definition: ELEMENT.cs:321
int vTempPotential
Definition: ELEMENT.cs:267
static List< SourceElement.Row > ListAttackElements
Definition: ELEMENT.cs:279
static int[] List_MainAttributes
Definition: ELEMENT.cs:249
static int GetId(string alias)
Definition: ELEMENT.cs:1182
virtual string FullName
Definition: ELEMENT.cs:315
void AddHeaderAbility(UINote n)
Definition: ELEMENT.cs:757
static Dictionary< int, int > GetElementMap(int[] list, Dictionary< int, int > map)
Definition: ELEMENT.cs:581
void AddEncNote(UINote n, Card Card, ElementContainer.NoteMode mode=ElementContainer.NoteMode.Default, Func< Element, string, string > funcText=null, Action< UINote, Element > onAddNote=null)
Definition: ELEMENT.cs:867
int GetSortVal(UIList.SortMode m)
Definition: ELEMENT.cs:1069
virtual int GetPower(Card c)
Definition: ELEMENT.cs:1134
void SetImage(Image i)
Definition: ELEMENT.cs:487
int Value
Definition: ELEMENT.cs:301
void CheckLevelBonus(ElementContainer owner, UINote n=null)
Definition: ELEMENT.cs:1028
virtual bool ShowRelativeAttribute
Definition: ELEMENT.cs:347
void WriteNoteWithRef(UINote n, ElementContainer owner, Action< UINote > onWriteNote, Element refEle)
Definition: ELEMENT.cs:628
bool IsFoodTrait
Definition: ELEMENT.cs:373
virtual string Name
Definition: ELEMENT.cs:313
static Dictionary< int, int > GetElementMap(int[] list)
Definition: ELEMENT.cs:568
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1163
virtual bool CanLink(ElementContainer owner)
Definition: ELEMENT.cs:477
int vLink
Definition: ELEMENT.cs:269
virtual Act.Cost GetCost(Chara c)
Definition: ELEMENT.cs:1092
virtual bool ShowEncNumber
Definition: ELEMENT.cs:369
static string GetName(string alias)
Definition: ELEMENT.cs:405
static List< SourceElement.Row > ListElements
Definition: ELEMENT.cs:277
virtual bool ShowBonuses
Definition: ELEMENT.cs:349
virtual bool PotentialAsStock
Definition: ELEMENT.cs:345
int vSource
Definition: ELEMENT.cs:271
void WriteNote(UINote n, ElementContainer owner=null, Action< UINote > onWriteNote=null)
Definition: ELEMENT.cs:621
static Element Void
Definition: ELEMENT.cs:247
virtual bool UsePotential
Definition: ELEMENT.cs:343
int vSourcePotential
Definition: ELEMENT.cs:273
void _WriteNote(UINote n, ElementContainer owner, Action< UINote > onWriteNote, bool isRef, bool addHeader=true)
Definition: ELEMENT.cs:764
bool IsGlobalElement
Definition: ELEMENT.cs:354
bool IsPartyWideElement
Definition: ELEMENT.cs:367
bool IsTrait
Definition: ELEMENT.cs:371
bool IsFactionWideElement
Definition: ELEMENT.cs:365
static int[] List_Mind
Definition: ELEMENT.cs:255
virtual void OnWriteNote(UINote n, ElementContainer owner)
Definition: ELEMENT.cs:1020
virtual string GetDetail()
Definition: ELEMENT.cs:497
Element GetParent(Card c)
Definition: ELEMENT.cs:559
virtual int MinPotential
Definition: ELEMENT.cs:305
virtual int CostLearn
Definition: ELEMENT.cs:323
SourceElement.Row _source
Definition: ELEMENT.cs:257
virtual void SetTextValue(UIText text, bool shorten=false)
Definition: ELEMENT.cs:1139
static int[] List_MainAttributesMajor
Definition: ELEMENT.cs:251
static long GetResistDamage(long dmg, int v, int power=0)
Definition: ELEMENT.cs:1201
const int Div
Definition: ELEMENT.cs:245
Act act
Definition: ELEMENT.cs:403
bool IsFoodTraitMain
Definition: ELEMENT.cs:376
bool IsFlag
Definition: ELEMENT.cs:311
virtual bool ShowValue
Definition: ELEMENT.cs:339
bool IsMainAttribute
Definition: ELEMENT.cs:392
virtual int ExpToNext
Definition: ELEMENT.cs:317
bool IsActive(Card c)
Definition: ELEMENT.cs:462
virtual string ShortName
Definition: ELEMENT.cs:351
int SortVal(bool charaSheet=false)
Definition: ELEMENT.cs:471
ElementContainerFaction charaElements
Definition: FACTION.cs:146
Definition: FEAT.cs:345
int CountKeyItem(string alias)
Definition: Player.cs:2266
virtual string id
Definition: Religion.cs:33
static SkinColorProfile CurrentColors
Definition: SkinManager.cs:84
override string GetName()
SourceKeyItem keyItems
SourceElement elements
Definition: SPELL.cs:708
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
Definition: Thing.cs:8
SourceThing.Row source
Definition: Thing.cs:11
Definition: UIItem.cs:5
Image image2
Definition: UIItem.cs:16
UIText text3
Definition: UIItem.cs:10
UIButton button1
Definition: UIItem.cs:18
Image image1
Definition: UIItem.cs:14
UIText text2
Definition: UIItem.cs:8
UIText text4
Definition: UIItem.cs:12
UIText text1
Definition: UIItem.cs:6
Definition: UIList.cs:9
SortMode
Definition: UIList.cs:27
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:163
UINote note
Definition: UITooltip.cs:21
Definition: ACT.cs:71
CostType type
Definition: ACT.cs:74
int cost
Definition: ACT.cs:72