Elin Decompiled Documentation EA 23.297 Nightly Patch 1
Loading...
Searching...
No Matches
FEAT.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4public class FEAT
5{
6 public const int featLER = 1624;
7
8 public const int featMAG = 1625;
9
10 public const int featWIL = 1626;
11
12 public const int featDefense = 1631;
13
14 public const int featLuck = 1628;
15
16 public const int featSPD = 1629;
17
18 public const int featHardy = 1630;
19
20 public const int featPER = 1623;
21
22 public const int featEvade = 1632;
23
24 public const int featCHA = 1627;
25
26 public const int featEND = 1622;
27
28 public const int featManaMeat = 1421;
29
30 public const int featSTR = 1620;
31
32 public const int featStamina = 1612;
33
34 public const int featMana = 1611;
35
36 public const int featLife = 1610;
37
38 public const int featMurderer = 1428;
39
40 public const int featDisguise = 1427;
41
42 public const int featNeckHunter = 1426;
43
44 public const int featMimic = 1425;
45
46 public const int featElite = 1424;
47
48 public const int featPeaky = 1423;
49
50 public const int featHealer = 1422;
51
52 public const int featSpotting = 1633;
53
54 public const int featExecutioner = 1420;
55
56 public const int featDEX = 1621;
57
58 public const int featNegotiate = 1634;
59
60 public const int featGourmet = 1650;
61
62 public const int featFaith = 1636;
63
64 public const int featMilitant = 1419;
65
66 public const int featComat = 1750;
67
68 public const int featFastFucker = 1664;
69
70 public const int featFastEater = 1663;
71
72 public const int featGoldenFinger = 1662;
73
74 public const int featDismantler = 1661;
75
76 public const int featLooter = 1660;
77
78 public const int featFisher = 1659;
79
80 public const int featChef = 1658;
81
82 public const int featManaCost = 1657;
83
84 public const int featScavenger = 1656;
85
86 public const int featModelBeliever = 1655;
87
88 public const int featMartial = 1635;
89
90 public const int featHeavyCasting = 1654;
91
92 public const int featRapidArrow = 1652;
93
94 public const int featMagicManner = 1651;
95
96 public const int featDefender = 1649;
97
98 public const int featRapidMagic = 1648;
99
100 public const int featSummoner = 1647;
101
102 public const int featLonelySoul = 1646;
103
104 public const int featParty = 1645;
105
106 public const int featBodyParts = 1644;
107
108 public const int featSorter = 1643;
109
110 public const int featSleeper = 1642;
111
112 public const int featResCurse = 1641;
113
114 public const int featAnimalLover = 1640;
115
116 public const int featDreamWaker = 1653;
117
118 public const int featSwordsage = 1418;
119
120 public const int featGod_trickery1 = 1345;
121
122 public const int featInquisitor = 1416;
123
124 public const int featCosmicHorror = 1233;
125
126 public const int featHeavyEater = 1234;
127
128 public const int featLightEater = 1235;
129
130 public const int featNorland = 1236;
131
132 public const int featRoran = 1237;
133
134 public const int featElder = 1238;
135
136 public const int featDemon = 1239;
137
138 public const int featMassSummoner = 1240;
139
140 public const int featMeatCushion = 1241;
141
142 public const int featGeneSlot = 1242;
143
144 public const int featEternalYouth = 1243;
145
146 public const int featCentaur = 1244;
147
148 public const int featSevenSense = 1245;
149
150 public const int featPegasus = 1246;
151
152 public const int featLibra = 1247;
153
154 public const int featMiscreation = 1248;
155
156 public const int featBloodBond = 1249;
157
158 public const int featVampire = 1250;
159
160 public const int featAshborn = 1251;
161
162 public const int featAquatic = 1252;
163
164 public const int featWitch = 1417;
165
166 public const int featBadKarma = 1271;
167
168 public const int featPeacemaker = 1272;
169
170 public const int featBloom = 1273;
171
172 public const int featSlimeEvolution = 1274;
173
174 public const int featBelovedOne = 1275;
175
176 public const int featHarem = 1276;
177
178 public const int featGoddess = 1290;
179
180 public const int featSadCreature = 1291;
181
182 public const int featBaby = 1232;
183
184 public const int featGod_element1 = 1300;
185
186 public const int featNirvana = 1231;
187
188 public const int featLittleOne = 1229;
189
190 public const int featSlowFood = 1200;
191
192 public const int featManaBond = 1201;
193
194 public const int featFastLearner = 1202;
195
196 public const int featGrowParts = 1203;
197
198 public const int featFairyWeak = 1204;
199
200 public const int featCannibalism = 1205;
201
202 public const int featMelilithCurse = 1206;
203
204 public const int featFoxBless = 1207;
205
206 public const int featFoxLearn = 1208;
207
208 public const int featFluffyTail = 1209;
209
210 public const int featUndead = 1210;
211
212 public const int featSnail = 1211;
213
214 public const int featFairyResist = 1212;
215
216 public const int featElea = 1213;
217
218 public const int featManaPrecision = 1214;
219
220 public const int featDwarf = 1215;
221
222 public const int featSuccubus = 1216;
223
224 public const int featGolem = 1217;
225
226 public const int featMetal = 1218;
227
228 public const int featElderCrab = 1219;
229
230 public const int featFate = 1220;
231
232 public const int featSpike = 1221;
233
234 public const int featSplit = 1222;
235
236 public const int featAcidBody = 1223;
237
238 public const int featShiva = 1224;
239
240 public const int featLoyal = 1225;
241
242 public const int featUnderground = 1226;
243
244 public const int featServant = 1227;
245
246 public const int featDemigod = 1228;
247
248 public const int featAdam = 1230;
249
250 public const int featGod_earth1 = 1305;
251
252 public const int featGoodKarma = 1270;
253
254 public const int featGod_machine1 = 1315;
255
256 public const int featWhiteVixen = 1414;
257
258 public const int featFairysan = 1413;
259
260 public const int featLuckyCat = 1412;
261
262 public const int featEarthStrength = 1411;
263
264 public const int featReboot = 1410;
265
266 public const int featBoost = 1409;
267
268 public const int featPaladin2 = 1408;
269
270 public const int featPaladin = 1407;
271
272 public const int featTourist = 1406;
273
274 public const int featGod_wind1 = 1310;
275
276 public const int featPianist = 1405;
277
278 public const int featArcher = 1404;
279
280 public const int featFarmer = 1403;
281
282 public const int featWizard = 1402;
283
284 public const int featThief = 1401;
285
286 public const int featWarrior = 1400;
287
288 public const int featGod_strife1 = 1355;
289
290 public const int featGod_moonshadow1 = 1350;
291
292 public const int featGod_oblivion1 = 1340;
293
294 public const int featGod_harmony1 = 1335;
295
296 public const int featGod_luck1 = 1330;
297
298 public const int featGod_harvest1 = 1325;
299
300 public const int featGod_healing1 = 1320;
301
302 public const int featFoxMaid = 1415;
303
304 public static readonly int[] IDS = new int[149]
305 {
306 1624, 1625, 1626, 1631, 1628, 1629, 1630, 1623, 1632, 1627,
307 1622, 1421, 1620, 1612, 1611, 1610, 1428, 1427, 1426, 1425,
308 1424, 1423, 1422, 1633, 1420, 1621, 1634, 1650, 1636, 1419,
309 1750, 1664, 1663, 1662, 1661, 1660, 1659, 1658, 1657, 1656,
310 1655, 1635, 1654, 1652, 1651, 1649, 1648, 1647, 1646, 1645,
311 1644, 1643, 1642, 1641, 1640, 1653, 1418, 1345, 1416, 1233,
312 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243,
313 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1417,
314 1271, 1272, 1273, 1274, 1275, 1276, 1290, 1291, 1232, 1300,
315 1231, 1229, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
316 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,
317 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
318 1228, 1230, 1305, 1270, 1315, 1414, 1413, 1412, 1411, 1410,
319 1409, 1408, 1407, 1406, 1310, 1405, 1404, 1403, 1402, 1401,
320 1400, 1355, 1350, 1340, 1335, 1330, 1325, 1320, 1415
321 };
322}
323public class Feat : Element
324{
325 public static List<string> hints = new List<string>();
326
327 public static string[] featRef = new string[5];
328
329 public override bool ShowBonuses => false;
330
331 public override string Name => base.source.GetText().SplitNewline().TryGet(base.Value - 1);
332
333 public override string FullName
334 {
335 get
336 {
337 string[] array = base.source.GetText().SplitNewline();
338 return array.TryGet(base.Value - 1) + ((base.source.max > 1 && array.Length == 1 && base.Value > 1) ? (" " + base.Value) : "");
339 }
340 }
341
342 public override bool ShowXP => false;
343
344 public override bool ShowValue => false;
345
346 public override int CostLearn => base.source.cost.TryGet(base.Value - 1);
347
348 public override bool CanLink(ElementContainer owner)
349 {
350 return !base.IsGlobalElement;
351 }
352
353 public override Sprite GetIcon(string suffix = "")
354 {
355 return SpriteSheet.Get("Media/Graphics/Icon/Element/icon_elements", "ele_Feat");
356 }
357
358 public override void OnWriteNote(UINote n, ElementContainer owner)
359 {
360 Apply(base.Value, owner, hint: true);
361 foreach (string hint in hints)
362 {
363 n.AddText("_bullet".lang() + hint);
364 }
365 }
366
368 {
369 string text = "";
370 Apply(base.Value, owner, hint: true);
371 foreach (string hint in hints)
372 {
373 text = text + hint.StripLastPun() + ", ";
374 }
375 return text.TrimEnd(' ').TrimEnd(',');
376 }
377
378 public override bool IsPurchaseFeatReqMet(ElementContainer owner, int lv = -1)
379 {
380 if (base.source.req.Length != 0)
381 {
382 Element element = owner.GetElement(base.source.req[0]);
383 if (element == null || element.ValueWithoutLink < ((base.source.req.Length == 1) ? 1 : base.source.req[Mathf.Clamp(((lv == -1 && owner != null) ? owner.Value(id) : lv) + 1, 1, base.source.req.Length - 1)].ToInt()))
384 {
385 return false;
386 }
387 }
388 return true;
389 }
390
391 public override void WritePurchaseReq(UINote n, int lv = -1)
392 {
393 if (base.source.req.Length != 0)
394 {
395 Element element = Element.Create(base.source.req[0], (base.source.req.Length == 1) ? 1 : base.source.req[Mathf.Clamp(((lv == -1 && owner != null) ? owner.Value(id) : lv) + 1, 1, base.source.req.Length - 1)].ToInt());
396 if (element != null)
397 {
398 n.AddHeader("featReq");
399 n.AddText(element.Name + ": " + element.Value, FontColor.Bad);
400 }
401 }
402 }
403
404 public List<string> Apply(int a, ElementContainer owner, bool hint = false)
405 {
406 if (hint)
407 {
408 hints.Clear();
409 }
411 {
412 feat = this,
413 owner = owner,
414 hint = hint
415 };
416 elinFeatApplyEventArgs.SetData(a);
417 BaseModManager.PublishEvent("elin.feat.apply", elinFeatApplyEventArgs);
418 a = elinFeatApplyEventArgs.data;
419 int value = base.Value;
420 int A = Mathf.Abs(a);
421 int invert = ((a >= 0) ? 1 : (-1));
422 if (hint)
423 {
424 featRef[0] = a.ToString() ?? "";
425 featRef[1] = a.ToString() ?? "";
426 }
427 Chara chara = owner.Chara;
428 int num = vPotential;
429 if (!hint && a > 0 && chara != null)
430 {
431 num = (vPotential = chara.LV);
432 }
433 switch (id)
434 {
435 case 1660:
436 featRef[0] = (a * 25).ToString() ?? "";
437 break;
438 case 1206:
439 ModBase(78, -a * 10, hide: false);
440 break;
441 case 1642:
442 featRef[0] = ((a == 1) ? 10 : ((a == 2) ? 20 : 30)).ToString() ?? "";
443 break;
444 case 1643:
445 featRef[0] = ((a == 1) ? 1 : ((a == 2) ? 3 : 5)).ToString() ?? "";
446 break;
447 case 1610:
448 ModBase(60, a * 4, hide: false);
449 break;
450 case 1611:
451 ModBase(61, a * 4, hide: false);
452 break;
453 case 1612:
454 ModBase(62, a * 4, hide: false);
455 break;
456 case 1620:
457 ModAttribute(70);
458 break;
459 case 1621:
460 ModAttribute(72);
461 break;
462 case 1622:
463 ModAttribute(71);
464 break;
465 case 1623:
466 ModAttribute(73);
467 break;
468 case 1626:
469 ModAttribute(75);
470 break;
471 case 1625:
472 ModAttribute(76);
473 break;
474 case 1627:
475 ModAttribute(77);
476 break;
477 case 1624:
478 ModAttribute(74);
479 break;
480 case 1629:
481 ModBase(79, a * 5, hide: false);
482 break;
483 case 1630:
484 ModBase(65, ((A == 1) ? 2 : ((A == 2) ? 5 : 10)) * invert, hide: false);
485 break;
486 case 1631:
487 ModBase(64, ((A == 1) ? 2 : ((A == 2) ? 5 : 10)) * invert, hide: false);
488 break;
489 case 1632:
490 ModBase(150, a * 2, hide: false);
491 break;
492 case 1633:
493 ModBase(210, a * 3, hide: false);
494 ModBase(402, ((A == 3) ? 1 : 0) * invert, hide: false);
495 break;
496 case 1634:
497 ModBase(291, a * 4, hide: false);
498 break;
499 case 1635:
500 ModBase(100, a * 3, hide: false);
501 break;
502 case 1636:
503 ModBase(306, a * 4, hide: false);
504 break;
505 case 1628:
506 ModBase(78, a * 2, hide: false);
507 break;
508 case 1640:
509 ModBase(77, a * 2, hide: false);
510 break;
511 case 1400:
512 featRef[0] = (a * 10).ToString() ?? "";
513 break;
514 case 1404:
515 featRef[0] = (a * 10).ToString() ?? "";
516 break;
517 case 1401:
518 ModBase(78, a * 15, hide: false);
519 break;
520 case 1406:
521 featRef[0] = (a * 20).ToString() ?? "";
522 featRef[1] = (a * 5).ToString() ?? "";
523 break;
524 case 1644:
525 featRef[0] = a.ToString() ?? "";
526 if (!hint)
527 {
528 if (a > 0)
529 {
531 }
532 else
533 {
534 _ = a;
535 _ = 0;
536 }
537 if (owner.Chara.IsPC && (bool)WidgetEquip.Instance)
538 {
540 }
541 }
542 ModBase(60, (A > 5) ? ((A - 5) * -3 * invert) : 0, hide: false);
543 ModBase(79, (A > 5) ? ((A - 5) * -5 * invert) : 0, hide: false);
544 ModBase(77, (A > 5) ? ((A - 5) * -3 * invert) : 0, hide: false);
545 break;
546 case 1230:
547 ModBase(60, A * 2 * invert, hide: false);
548 ModBase(79, A * 3 * invert, hide: false);
549 break;
550 case 1204:
551 ModBase(64, a * 50, hide: true);
552 ModBase(401, a, hide: false);
553 break;
554 case 1202:
555 ModBase(403, a * 20, hide: true);
556 break;
557 case 1210:
558 ModBase(955, a * 5, hide: false);
559 ModBase(953, a * 10, hide: false);
560 ModBase(958, a * 5, hide: false);
561 ModBase(956, a * 10, hide: false);
562 ModBase(950, a * -5, hide: false);
563 ModBase(960, a * -5, hide: false);
564 ModBase(423, a, hide: false);
565 break;
566 case 1290:
567 ModBase(418, a * 100, hide: false);
568 break;
569 case 1239:
570 ModBase(956, a * 5, hide: false);
571 ModBase(959, a * 5, hide: false);
572 ModBase(423, a, hide: false);
573 ModBase(424, a, hide: false);
574 ModBase(421, a, hide: false);
575 break;
576 case 1233:
577 ModBase(954, a * 10, hide: false);
578 ModBase(423, a, hide: false);
579 ModBase(425, a, hide: false);
580 ModBase(424, a, hide: false);
581 ModBase(421, a, hide: false);
582 break;
583 case 1226:
584 ModBase(955, a * 5, hide: false);
585 ModBase(953, a * 5, hide: false);
586 break;
587 case 1212:
588 ModBase(961, a * 5, hide: false);
589 ModBase(953, a * 5, hide: false);
590 ModBase(958, a * 5, hide: false);
591 ModBase(956, a * 5, hide: false);
592 ModBase(954, a * 5, hide: false);
593 ModBase(957, a * 5, hide: false);
594 ModBase(959, a * 5, hide: false);
595 break;
596 case 1213:
597 ModBase(962, a * 20, hide: false);
598 break;
599 case 1224:
600 ModBase(951, a * 15, hide: false);
601 break;
602 case 1217:
603 ModBase(952, a * -10, hide: false);
604 ModBase(955, a * 20, hide: false);
605 ModBase(964, a * 20, hide: false);
606 break;
607 case 1218:
608 ModBase(950, a / 40, hide: false);
609 ModBase(952, a / 40, hide: false);
610 ModBase(955, a / 40, hide: false);
611 ModBase(953, a / 40, hide: false);
612 ModBase(958, a / 40, hide: false);
613 ModBase(956, a / 40, hide: false);
614 ModBase(954, a / 40, hide: false);
615 ModBase(959, a / 40, hide: false);
616 ModBase(964, a / 40, hide: false);
617 ModBase(961, a / 40, hide: false);
618 break;
619 case 1221:
620 ModBase(964, a * 20, hide: false);
621 break;
622 case 1223:
623 ModBase(963, a * 20, hide: false);
624 break;
625 case 1216:
626 ModBase(6020, a, hide: false);
627 break;
628 case 1250:
629 ModBase(950, a * -10, hide: false);
630 ModBase(951, a * 5, hide: false);
631 ModBase(961, a * 5, hide: false);
632 ModBase(8793, a, hide: false);
633 ModBase(6607, a, hide: false);
634 break;
635 case 1415:
636 ModBase(60, a * 15, hide: false);
637 ModBase(79, a * 5, hide: false);
638 ModBase(953, a * 3, hide: false);
639 ModBase(961, a, hide: false);
640 ModBase(960, a, hide: false);
641 break;
642 case 1419:
643 ModPotential(101, a * 50);
644 ModPotential(111, a * 50);
645 ModPotential(103, a * 50);
646 ModPotential(106, a * 50);
647 ModPotential(122, a * 50);
648 ModPotential(120, a * 50);
649 ModPotential(123, a * 50);
650 break;
651 case 1274:
652 featRef[3] = (a - 7).ToString() ?? "";
653 break;
654 case 1750:
655 {
656 string[] array = featRef;
657 int num2 = a;
658 array[0] = num2.ToString() ?? "";
659 featRef[1] = (a * 2).ToString() ?? "";
660 break;
661 }
662 case 1532:
663 ModBase(73, -a * 5, hide: false);
664 break;
665 case 1533:
666 ModBase(73, a * 5, hide: false);
667 break;
668 case 1510:
669 ModBase(65, a * 3, hide: false);
670 break;
671 case 1511:
672 ModBase(65, -a * 3, hide: false);
673 break;
674 case 1512:
675 ModBase(73, a * 5, hide: false);
676 break;
677 case 1513:
678 ModBase(73, -a * 5, hide: false);
679 break;
680 case 1514:
681 ModBase(72, a * 3, hide: false);
682 break;
683 case 1515:
684 ModBase(72, -a * 3, hide: false);
685 break;
686 case 1516:
687 ModBase(300, a * 4, hide: false);
688 break;
689 case 1517:
690 ModBase(300, -a * 4, hide: false);
691 break;
692 case 1518:
693 ModBase(79, a * 5, hide: false);
694 break;
695 case 1519:
696 ModBase(79, -a * 5, hide: false);
697 break;
698 case 1520:
699 ModBase(70, a * 3, hide: false);
700 break;
701 case 1521:
702 ModBase(70, -a * 3, hide: false);
703 break;
704 case 1522:
705 ModBase(77, a * 5, hide: false);
706 break;
707 case 1523:
708 ModBase(77, -a * 5, hide: false);
709 break;
710 case 1524:
711 ModBase(307, a * 4, hide: false);
712 break;
713 case 1525:
714 ModBase(307, -a * 4, hide: false);
715 break;
716 case 1526:
717 ModBase(951, a * 5, hide: false);
718 ModBase(950, -a * 5, hide: false);
719 break;
720 case 1527:
721 ModBase(951, -a * 5, hide: false);
722 ModBase(950, a * 5, hide: false);
723 break;
724 case 1528:
725 ModBase(952, a * 5, hide: false);
726 break;
727 case 1529:
728 ModBase(952, -a * 5, hide: false);
729 break;
730 case 1530:
731 ModBase(960, a * 5, hide: false);
732 ModBase(956, -a * 5, hide: false);
733 break;
734 case 1531:
735 ModBase(960, -a * 5, hide: false);
736 ModBase(956, a * 5, hide: false);
737 break;
738 case 1300:
739 case 1305:
740 case 1310:
741 case 1315:
742 case 1320:
743 case 1325:
744 case 1330:
745 case 1335:
746 case 1340:
747 case 1345:
748 case 1350:
749 case 1355:
750 GodHint();
751 break;
752 case 1550:
753 ModBase(404, -a * 10, hide: false);
754 break;
755 case 1551:
756 ModBase(77, -a * (4 + num / 5), hide: false);
757 break;
758 case 1552:
759 ModBase(79, a * Mathf.Min(30 + num / 5, 100), hide: false);
760 if (!hint && a > 0)
761 {
762 chara?.body.UnequipAll(39);
763 }
764 break;
765 case 1553:
766 ModBase(73, a * (5 + num / 3), hide: false);
767 ModBase(77, -a * (5 + num / 3), hide: false);
768 break;
769 case 1554:
770 ModBase(404, a * 10, hide: false);
771 ModBase(401, a, hide: false);
772 ModBase(79, a * (10 + num / 5), hide: false);
773 if (!hint && a > 0)
774 {
775 chara?.body.UnequipAll(33);
776 }
777 break;
778 case 1555:
779 ModBase(65, a * (12 + num), hide: false);
780 ModBase(77, -a * (5 + num / 5), hide: false);
781 if (!hint && a > 0)
782 {
783 chara?.body.UnequipAll(31);
784 }
785 break;
786 case 1556:
787 ModBase(64, -a * (10 + num), hide: false);
788 ModBase(67, a * (5 + num / 2), hide: false);
789 break;
790 case 1557:
791 ModBase(71, -a * (5 + num / 3), hide: false);
792 ModBase(72, -a * (4 + num / 4), hide: false);
793 ModBase(74, a * (6 + num / 2), hide: false);
794 ModBase(75, a * (2 + num / 6), hide: false);
795 break;
796 case 1560:
797 ModBase(60, -a * 15, hide: false);
798 ModBase(70, -a * (4 + num / 3), hide: false);
799 break;
800 case 1561:
801 ModBase(61, -a * 15, hide: false);
802 ModBase(76, -a * (4 + num / 3), hide: false);
803 break;
804 case 1562:
805 ModBase(65, a * (15 + num / 2), hide: false);
806 ModBase(79, -a * (10 + num / 5), hide: false);
807 break;
808 case 1563:
809 ModBase(77, -a * (3 + num / 4), hide: false);
810 break;
811 case 1564:
812 ModBase(961, a * 5, hide: false);
813 break;
814 case 1565:
815 ModBase(955, a * 20, hide: false);
816 break;
817 }
818 if (hint)
819 {
820 string text = base.source.GetText("textExtra");
821 if (!text.IsEmpty())
822 {
823 string text2 = text.SplitNewline().TryGet(value - 1, 99);
824 if (!text2.IsEmpty())
825 {
826 int num3 = 0;
827 string[] array2 = text2.Split(',');
828 foreach (string obj in array2)
829 {
830 string text3 = featRef[num3];
831 string text4 = obj.Replace(";", ",");
832 if (text3.ToInt() < 0)
833 {
834 text4 = text4.Replace("+#1", text3);
835 }
836 text4 = text4.Replace("#1", text3);
837 hints.Add(text4);
838 num3++;
839 }
840 }
841 }
842 }
843 return hints;
844 void GodHint()
845 {
846 if (!hint)
847 {
848 return;
849 }
850 foreach (Element value2 in owner.Card.Chara.faithElements.dict.Values)
851 {
852 if (value2.source.id != id)
853 {
854 NoteElement(value2.id, value2.Value);
855 }
856 }
857 }
858 void ModAttribute(int ele)
859 {
860 _ = hint;
861 ModBase(ele, ((A == 1) ? 2 : ((A == 2) ? 4 : 5)) * invert, hide: false);
862 ModPotential(ele, a * 10);
863 }
864 void ModBase(int ele, int _v, bool hide)
865 {
866 if (!hint)
867 {
868 owner.ModBase(ele, _v);
869 }
870 if (!hide && _v != 0)
871 {
872 NoteElement(ele, _v);
873 }
874 }
875 void ModPotential(int ele, int _v)
876 {
877 if (!hint)
878 {
879 owner.ModPotential(ele, _v);
880 }
881 Note("modPotential".lang(EClass.sources.elements.map[ele].GetName(), "+" + _v + "%"));
882 }
883 void Note(string s)
884 {
885 if (hint)
886 {
887 hints.Add(s);
888 }
889 }
890 void NoteElement(int ele, int a)
891 {
893 if (row.category == "ability")
894 {
895 Note("hintLearnAbility".lang(row.GetName().ToTitleCase()));
896 }
897 else if (row.tag.Contains("flag"))
898 {
899 Note(row.GetName());
900 }
901 else
902 {
903 string @ref = ((a < 0) ? "" : "+") + a;
904 if (row.category == "resist")
905 {
906 int num4 = 0;
907 @ref = ((a > 0) ? "+" : "-").Repeat(Mathf.Clamp(Mathf.Abs(a) / 5 + num4, 1, 5));
908 Note("modValueRes".lang(row.GetName(), @ref));
909 }
910 else
911 {
912 Note("modValue".lang(row.GetName(), @ref));
913 }
914 }
915 }
916 }
917}
@ ModPotential
@ hint
FontColor
Definition: FontColor.cs:2
static void PublishEvent(string eventId, object data=null)
virtual Chara Chara
Definition: Card.cs:2108
int LV
Definition: Card.cs:387
void UnequipAll(int idSlot)
Definition: CharaBody.cs:57
Definition: Chara.cs:10
CharaBody body
Definition: Chara.cs:94
override bool IsPC
Definition: Chara.cs:626
void AddRandomBodyPart(bool msg=false)
Definition: Chara.cs:2243
ElementContainer faithElements
Definition: Chara.cs:38
Definition: EClass.cs:6
static SourceManager sources
Definition: EClass.cs:43
virtual void SetData(T newData)
Definition: EVENT.cs:11
Dictionary< int, Element > dict
Element ModPotential(int ele, int v)
virtual Card Card
int Value(int ele)
Element ModBase(int ele, int v)
virtual Chara Chara
Element GetElement(string alias)
int ValueWithoutLink
Definition: ELEMENT.cs:299
int id
Definition: ELEMENT.cs:255
SourceElement.Row source
Definition: ELEMENT.cs:278
int vPotential
Definition: ELEMENT.cs:261
ElementContainer owner
Definition: ELEMENT.cs:271
int Value
Definition: ELEMENT.cs:297
virtual string Name
Definition: ELEMENT.cs:309
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1115
Definition: FEAT.cs:5
const int featManaCost
Definition: FEAT.cs:82
const int featElite
Definition: FEAT.cs:46
const int featDemon
Definition: FEAT.cs:136
const int featLonelySoul
Definition: FEAT.cs:102
const int featUnderground
Definition: FEAT.cs:242
const int featMiscreation
Definition: FEAT.cs:154
const int featAdam
Definition: FEAT.cs:248
const int featWitch
Definition: FEAT.cs:164
const int featLuckyCat
Definition: FEAT.cs:260
const int featShiva
Definition: FEAT.cs:238
const int featCannibalism
Definition: FEAT.cs:200
const int featMartial
Definition: FEAT.cs:88
const int featFairysan
Definition: FEAT.cs:258
const int featBoost
Definition: FEAT.cs:266
const int featNirvana
Definition: FEAT.cs:186
const int featSPD
Definition: FEAT.cs:16
const int featSnail
Definition: FEAT.cs:212
const int featSwordsage
Definition: FEAT.cs:118
const int featEvade
Definition: FEAT.cs:22
const int featModelBeliever
Definition: FEAT.cs:86
const int featEternalYouth
Definition: FEAT.cs:144
const int featAcidBody
Definition: FEAT.cs:236
const int featBloom
Definition: FEAT.cs:170
const int featDisguise
Definition: FEAT.cs:40
const int featGeneSlot
Definition: FEAT.cs:142
const int featMelilithCurse
Definition: FEAT.cs:202
const int featTourist
Definition: FEAT.cs:272
const int featGod_element1
Definition: FEAT.cs:184
const int featFate
Definition: FEAT.cs:230
const int featServant
Definition: FEAT.cs:244
const int featAshborn
Definition: FEAT.cs:160
const int featDEX
Definition: FEAT.cs:56
const int featNorland
Definition: FEAT.cs:130
const int featGoodKarma
Definition: FEAT.cs:252
const int featFastEater
Definition: FEAT.cs:70
const int featFaith
Definition: FEAT.cs:62
const int featExecutioner
Definition: FEAT.cs:54
const int featArcher
Definition: FEAT.cs:278
const int featEND
Definition: FEAT.cs:26
const int featPaladin
Definition: FEAT.cs:270
const int featSuccubus
Definition: FEAT.cs:222
const int featBelovedOne
Definition: FEAT.cs:174
const int featPaladin2
Definition: FEAT.cs:268
const int featRoran
Definition: FEAT.cs:132
const int featLightEater
Definition: FEAT.cs:128
const int featHardy
Definition: FEAT.cs:18
const int featHeavyCasting
Definition: FEAT.cs:90
const int featGolem
Definition: FEAT.cs:224
const int featNeckHunter
Definition: FEAT.cs:42
const int featFisher
Definition: FEAT.cs:78
const int featMagicManner
Definition: FEAT.cs:94
const int featHealer
Definition: FEAT.cs:50
const int featElea
Definition: FEAT.cs:216
const int featDreamWaker
Definition: FEAT.cs:116
const int featMetal
Definition: FEAT.cs:226
const int featLoyal
Definition: FEAT.cs:240
const int featManaPrecision
Definition: FEAT.cs:218
const int featScavenger
Definition: FEAT.cs:84
const int featMassSummoner
Definition: FEAT.cs:138
const int featFastFucker
Definition: FEAT.cs:68
const int featLuck
Definition: FEAT.cs:14
const int featMimic
Definition: FEAT.cs:44
const int featFoxLearn
Definition: FEAT.cs:206
const int featAquatic
Definition: FEAT.cs:162
const int featBodyParts
Definition: FEAT.cs:106
const int featSTR
Definition: FEAT.cs:30
const int featDefense
Definition: FEAT.cs:12
const int featManaBond
Definition: FEAT.cs:192
const int featFastLearner
Definition: FEAT.cs:194
const int featGod_wind1
Definition: FEAT.cs:274
const int featPeaky
Definition: FEAT.cs:48
const int featSplit
Definition: FEAT.cs:234
const int featLER
Definition: FEAT.cs:6
const int featPER
Definition: FEAT.cs:20
const int featDwarf
Definition: FEAT.cs:220
const int featFairyWeak
Definition: FEAT.cs:198
const int featInquisitor
Definition: FEAT.cs:122
const int featGod_trickery1
Definition: FEAT.cs:120
const int featCosmicHorror
Definition: FEAT.cs:124
const int featSummoner
Definition: FEAT.cs:100
const int featEarthStrength
Definition: FEAT.cs:262
const int featSorter
Definition: FEAT.cs:108
const int featWhiteVixen
Definition: FEAT.cs:256
const int featManaMeat
Definition: FEAT.cs:28
const int featGod_healing1
Definition: FEAT.cs:300
const int featReboot
Definition: FEAT.cs:264
const int featMAG
Definition: FEAT.cs:8
const int featSevenSense
Definition: FEAT.cs:148
const int featBadKarma
Definition: FEAT.cs:166
const int featRapidMagic
Definition: FEAT.cs:98
const int featFluffyTail
Definition: FEAT.cs:208
const int featLibra
Definition: FEAT.cs:152
const int featGourmet
Definition: FEAT.cs:60
const int featResCurse
Definition: FEAT.cs:112
const int featMeatCushion
Definition: FEAT.cs:140
const int featBloodBond
Definition: FEAT.cs:156
const int featBaby
Definition: FEAT.cs:182
static readonly int[] IDS
Definition: FEAT.cs:304
const int featWIL
Definition: FEAT.cs:10
const int featFoxBless
Definition: FEAT.cs:204
const int featSadCreature
Definition: FEAT.cs:180
const int featSpotting
Definition: FEAT.cs:52
const int featGod_moonshadow1
Definition: FEAT.cs:290
const int featSleeper
Definition: FEAT.cs:110
const int featStamina
Definition: FEAT.cs:32
const int featThief
Definition: FEAT.cs:284
const int featDismantler
Definition: FEAT.cs:74
const int featGoldenFinger
Definition: FEAT.cs:72
const int featVampire
Definition: FEAT.cs:158
const int featWarrior
Definition: FEAT.cs:286
const int featGod_strife1
Definition: FEAT.cs:288
const int featSlimeEvolution
Definition: FEAT.cs:172
const int featGod_harvest1
Definition: FEAT.cs:298
const int featAnimalLover
Definition: FEAT.cs:114
const int featSpike
Definition: FEAT.cs:232
const int featComat
Definition: FEAT.cs:66
const int featUndead
Definition: FEAT.cs:210
const int featCHA
Definition: FEAT.cs:24
const int featFairyResist
Definition: FEAT.cs:214
const int featHarem
Definition: FEAT.cs:176
const int featGod_earth1
Definition: FEAT.cs:250
const int featFoxMaid
Definition: FEAT.cs:302
const int featElderCrab
Definition: FEAT.cs:228
const int featMurderer
Definition: FEAT.cs:38
const int featGod_luck1
Definition: FEAT.cs:296
const int featPegasus
Definition: FEAT.cs:150
const int featHeavyEater
Definition: FEAT.cs:126
const int featCentaur
Definition: FEAT.cs:146
const int featGod_machine1
Definition: FEAT.cs:254
const int featMilitant
Definition: FEAT.cs:64
const int featRapidArrow
Definition: FEAT.cs:92
const int featLooter
Definition: FEAT.cs:76
const int featGrowParts
Definition: FEAT.cs:196
const int featDemigod
Definition: FEAT.cs:246
const int featParty
Definition: FEAT.cs:104
const int featPianist
Definition: FEAT.cs:276
const int featLittleOne
Definition: FEAT.cs:188
const int featChef
Definition: FEAT.cs:80
const int featDefender
Definition: FEAT.cs:96
const int featGoddess
Definition: FEAT.cs:178
const int featGod_harmony1
Definition: FEAT.cs:294
const int featElder
Definition: FEAT.cs:134
const int featPeacemaker
Definition: FEAT.cs:168
const int featMana
Definition: FEAT.cs:34
const int featWizard
Definition: FEAT.cs:282
const int featSlowFood
Definition: FEAT.cs:190
const int featLife
Definition: FEAT.cs:36
const int featGod_oblivion1
Definition: FEAT.cs:292
const int featFarmer
Definition: FEAT.cs:280
const int featNegotiate
Definition: FEAT.cs:58
Definition: FEAT.cs:324
List< string > Apply(int a, ElementContainer owner, bool hint=false)
Definition: FEAT.cs:404
override bool ShowValue
Definition: FEAT.cs:344
override string FullName
Definition: FEAT.cs:334
override Sprite GetIcon(string suffix="")
Definition: FEAT.cs:353
override bool ShowXP
Definition: FEAT.cs:342
static List< string > hints
Definition: FEAT.cs:325
override bool CanLink(ElementContainer owner)
Definition: FEAT.cs:348
static string[] featRef
Definition: FEAT.cs:327
string GetHint(ElementContainer owner)
Definition: FEAT.cs:367
override void WritePurchaseReq(UINote n, int lv=-1)
Definition: FEAT.cs:391
override bool IsPurchaseFeatReqMet(ElementContainer owner, int lv=-1)
Definition: FEAT.cs:378
override string Name
Definition: FEAT.cs:331
override void OnWriteNote(UINote n, ElementContainer owner)
Definition: FEAT.cs:358
override int CostLearn
Definition: FEAT.cs:346
override bool ShowBonuses
Definition: FEAT.cs:329
override string GetName()
SourceElement elements
static Sprite Get(string id)
Definition: SpriteSheet.cs:28
Definition: UINote.cs:6
UIItem AddHeader(string text, Sprite sprite=null)
Definition: UINote.cs:79
UIItem AddText(string text, FontColor color=FontColor.DontChange)
Definition: UINote.cs:113
static WidgetEquip Instance
Definition: WidgetEquip.cs:11
void Rebuild()
Definition: WidgetEquip.cs:53