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