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