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