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