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