Elin Modding Docs Doc
Loading...
Searching...
No Matches
BaseCondition.cs
1using System;
2using System.Collections.Generic;
3using Newtonsoft.Json;
4using UnityEngine;
5
6// Token: 0x020002B2 RID: 690
7public class BaseCondition : BaseStats
8{
9 // Token: 0x17000639 RID: 1593
10 // (get) Token: 0x0600164F RID: 5711 RVA: 0x0009611B File Offset: 0x0009431B
11 // (set) Token: 0x06001650 RID: 5712 RVA: 0x00096125 File Offset: 0x00094325
12 public int value
13 {
14 get
15 {
16 return this._ints[0];
17 }
18 set
19 {
20 this._ints[0] = value;
21 }
22 }
23
24 // Token: 0x1700063A RID: 1594
25 // (get) Token: 0x06001651 RID: 5713 RVA: 0x00096130 File Offset: 0x00094330
26 // (set) Token: 0x06001652 RID: 5714 RVA: 0x0009613A File Offset: 0x0009433A
27 public int power
28 {
29 get
30 {
31 return this._ints[1];
32 }
33 set
34 {
35 this._ints[1] = value;
36 }
37 }
38
39 // Token: 0x1700063B RID: 1595
40 // (get) Token: 0x06001653 RID: 5715 RVA: 0x00096145 File Offset: 0x00094345
41 // (set) Token: 0x06001654 RID: 5716 RVA: 0x0009614F File Offset: 0x0009434F
42 public int refVal
43 {
44 get
45 {
46 return this._ints[2];
47 }
48 set
49 {
50 this._ints[2] = value;
51 }
52 }
53
54 // Token: 0x1700063C RID: 1596
55 // (get) Token: 0x06001655 RID: 5717 RVA: 0x0009615A File Offset: 0x0009435A
56 // (set) Token: 0x06001656 RID: 5718 RVA: 0x00096164 File Offset: 0x00094364
57 public int refVal2
58 {
59 get
60 {
61 return this._ints[3];
62 }
63 set
64 {
65 this._ints[3] = value;
66 }
67 }
68
69 // Token: 0x1700063D RID: 1597
70 // (get) Token: 0x06001657 RID: 5719 RVA: 0x0009616F File Offset: 0x0009436F
71 // (set) Token: 0x06001658 RID: 5720 RVA: 0x0009617E File Offset: 0x0009437E
72 public bool givenByPcParty
73 {
74 get
75 {
76 return (this._ints[4] & 2) != 0;
77 }
78 set
79 {
80 this._ints[4] = (value ? (this._ints[4] | 2) : (this._ints[4] & -3));
81 }
82 }
83
84 // Token: 0x1700063E RID: 1598
85 // (get) Token: 0x06001659 RID: 5721 RVA: 0x000961A2 File Offset: 0x000943A2
86 // (set) Token: 0x0600165A RID: 5722 RVA: 0x000961B1 File Offset: 0x000943B1
87 public bool isPerfume
88 {
89 get
90 {
91 return (this._ints[4] & 4) != 0;
92 }
93 set
94 {
95 this._ints[4] = (value ? (this._ints[4] | 4) : (this._ints[4] & -5));
96 }
97 }
98
99 // Token: 0x1700063F RID: 1599
100 // (get) Token: 0x0600165B RID: 5723 RVA: 0x000961D5 File Offset: 0x000943D5
101 public override Chara Owner
102 {
103 get
104 {
105 return this.owner;
106 }
107 }
108
109 // Token: 0x17000640 RID: 1600
110 // (get) Token: 0x0600165C RID: 5724 RVA: 0x000961DD File Offset: 0x000943DD
111 public virtual string Name
112 {
113 get
114 {
115 return base.source.GetText("name", false);
116 }
117 }
118
119 // Token: 0x0600165D RID: 5725 RVA: 0x000961F0 File Offset: 0x000943F0
120 public virtual bool CanStack(Condition c)
121 {
122 return true;
123 }
124
125 // Token: 0x17000641 RID: 1601
126 // (get) Token: 0x0600165E RID: 5726 RVA: 0x000961F3 File Offset: 0x000943F3
127 public virtual bool IsToggle
128 {
129 get
130 {
131 return false;
132 }
133 }
134
135 // Token: 0x17000642 RID: 1602
136 // (get) Token: 0x0600165F RID: 5727 RVA: 0x000961F6 File Offset: 0x000943F6
137 public virtual bool WillOverride
138 {
139 get
140 {
141 return false;
142 }
143 }
144
145 // Token: 0x17000643 RID: 1603
146 // (get) Token: 0x06001660 RID: 5728 RVA: 0x000961F9 File Offset: 0x000943F9
147 public virtual bool AllowMultipleInstance
148 {
149 get
150 {
151 return false;
152 }
153 }
154
155 // Token: 0x17000644 RID: 1604
156 // (get) Token: 0x06001661 RID: 5729 RVA: 0x000961FC File Offset: 0x000943FC
157 public virtual bool ConsumeTurn
158 {
159 get
160 {
161 return false;
162 }
163 }
164
165 // Token: 0x17000645 RID: 1605
166 // (get) Token: 0x06001662 RID: 5730 RVA: 0x000961FF File Offset: 0x000943FF
167 public virtual bool PreventRegen
168 {
169 get
170 {
171 return false;
172 }
173 }
174
175 // Token: 0x17000646 RID: 1606
176 // (get) Token: 0x06001663 RID: 5731 RVA: 0x00096202 File Offset: 0x00094402
177 public virtual bool ShouldRefresh
178 {
179 get
180 {
181 return false;
182 }
183 }
184
185 // Token: 0x17000647 RID: 1607
186 // (get) Token: 0x06001664 RID: 5732 RVA: 0x00096205 File Offset: 0x00094405
187 public virtual bool CancelAI
188 {
189 get
190 {
191 return this.ConsumeTurn;
192 }
193 }
194
195 // Token: 0x17000648 RID: 1608
196 // (get) Token: 0x06001665 RID: 5733 RVA: 0x0009620D File Offset: 0x0009440D
197 public virtual bool TimeBased
198 {
199 get
200 {
201 return false;
202 }
203 }
204
205 // Token: 0x17000649 RID: 1609
206 // (get) Token: 0x06001666 RID: 5734 RVA: 0x00096210 File Offset: 0x00094410
207 public virtual bool SyncRide
208 {
209 get
210 {
211 return false;
212 }
213 }
214
215 // Token: 0x06001667 RID: 5735 RVA: 0x00096213 File Offset: 0x00094413
216 public virtual bool TryMove(Point p)
217 {
218 return true;
219 }
220
221 // Token: 0x1700064A RID: 1610
222 // (get) Token: 0x06001668 RID: 5736 RVA: 0x00096216 File Offset: 0x00094416
223 public virtual int GainResistFactor
224 {
225 get
226 {
227 return base.source.gainRes;
228 }
229 }
230
231 // Token: 0x1700064B RID: 1611
232 // (get) Token: 0x06001669 RID: 5737 RVA: 0x00096223 File Offset: 0x00094423
233 public virtual int P2
234 {
235 get
236 {
237 return 0;
238 }
239 }
240
241 // Token: 0x1700064C RID: 1612
242 // (get) Token: 0x0600166A RID: 5738 RVA: 0x00096226 File Offset: 0x00094426
243 public SourceElement.Row sourceElement
244 {
245 get
246 {
247 return EClass.sources.elements.map[this.refVal];
248 }
249 }
250
251 // Token: 0x1700064D RID: 1613
252 // (get) Token: 0x0600166B RID: 5739 RVA: 0x00096242 File Offset: 0x00094442
253 public virtual bool IsElemental
254 {
255 get
256 {
257 return false;
258 }
259 }
260
261 // Token: 0x1700064E RID: 1614
262 // (get) Token: 0x0600166C RID: 5740 RVA: 0x00096245 File Offset: 0x00094445
263 public virtual string RefString1
264 {
265 get
266 {
267 if (!this.IsElemental)
268 {
269 return "";
270 }
271 return this.sourceElement.GetName().ToLower();
272 }
273 }
274
275 // Token: 0x0600166D RID: 5741 RVA: 0x00096265 File Offset: 0x00094465
276 public void SetElement(int id)
277 {
278 this.refVal = id;
279 }
280
281 // Token: 0x0600166E RID: 5742 RVA: 0x0009626E File Offset: 0x0009446E
282 public void SetRefVal(int a, int b)
283 {
284 this.refVal = a;
285 this.refVal2 = b;
286 }
287
288 // Token: 0x0600166F RID: 5743 RVA: 0x00096280 File Offset: 0x00094480
289 public virtual Color GetSpriteColor()
290 {
291 if (!this.IsElemental)
292 {
293 return Color.white;
294 }
295 return EClass.setting.elements[EClass.sources.elements.map[this.refVal].alias].colorSprite;
296 }
297
298 // Token: 0x06001670 RID: 5744 RVA: 0x000962D0 File Offset: 0x000944D0
299 public override string ToString()
300 {
301 return string.Concat(new string[]
302 {
303 this.Name,
304 " ",
305 this.value.ToString(),
306 " ",
307 this.phase.ToString()
308 });
309 }
310
311 // Token: 0x06001671 RID: 5745 RVA: 0x00096320 File Offset: 0x00094520
312 public override string GetText()
313 {
314 if (!this.IsNullPhase())
315 {
316 return this.GetPhaseStr();
317 }
318 return "";
319 }
320
321 // Token: 0x06001672 RID: 5746 RVA: 0x00096336 File Offset: 0x00094536
322 public override int GetValue()
323 {
324 return this.value;
325 }
326
327 // Token: 0x06001673 RID: 5747 RVA: 0x0009633E File Offset: 0x0009453E
328 public override Color GetColor(Gradient g)
329 {
330 return g.Evaluate((base.source.phase.LastItem<int>() == 0) ? 0f : ((float)this.phase / (float)base.source.phase.LastItem<int>()));
331 }
332
333 // Token: 0x06001674 RID: 5748 RVA: 0x00096378 File Offset: 0x00094578
334 public virtual void SetOwner(Chara _owner, bool onDeserialize = false)
335 {
336 this.owner = _owner;
337 this.phase = this.GetPhase();
338 if (this.EmoIcon > this.owner.emoIcon)
339 {
340 this.owner.emoIcon = this.EmoIcon;
341 }
342 if (base.source.elements.Length != 0)
343 {
344 this.elements = new ElementContainer();
345 for (int i = 0; i < base.source.elements.Length; i += 2)
346 {
347 this.elements.SetBase(this.GetElementSource(i).id, base.source.elements[i + 1].Calc(this.power, 0, this.P2), 0);
348 }
349 this.elements.SetParent(this.owner);
350 }
351 }
352
353 // Token: 0x06001675 RID: 5749 RVA: 0x00096438 File Offset: 0x00094638
354 public SourceElement.Row GetElementSource(int i)
355 {
356 string text = base.source.elements[i];
357 if (text == "res")
358 {
359 text = this.sourceElement.aliasRef;
360 }
361 else if (text == "ele")
362 {
363 text = this.sourceElement.alias;
364 }
365 return EClass.sources.elements.alias[text];
366 }
367
368 // Token: 0x06001676 RID: 5750 RVA: 0x0009649C File Offset: 0x0009469C
369 public void Start()
370 {
371 this.OnBeforeStart();
372 this.phase = -1;
373 this.SetPhase();
374 this.OnStart();
375 this.OnStartOrStack();
376 this.PlayEffect();
377 if (base.source.nullify.Length != 0)
378 {
379 for (int i = this.owner.conditions.Count - 1; i >= 0; i--)
380 {
381 if (this.TryNullify(this.owner.conditions[i]))
382 {
383 this.owner.conditions[i].Kill(false);
384 }
385 }
386 }
387 }
388
389 // Token: 0x06001677 RID: 5751 RVA: 0x0009652C File Offset: 0x0009472C
390 public bool TryNullify(Condition c)
391 {
392 if (base.source.nullify.Length == 0)
393 {
394 return false;
395 }
396 foreach (string b in base.source.nullify)
397 {
398 if (c.source.alias == b)
399 {
400 this.owner.Say("nullify", this.owner, this.Name.ToLower(), c.Name.ToLower());
401 return true;
402 }
403 }
404 return false;
405 }
406
407 // Token: 0x06001678 RID: 5752 RVA: 0x000965A9 File Offset: 0x000947A9
408 public virtual void OnBeforeStart()
409 {
410 }
411
412 // Token: 0x06001679 RID: 5753 RVA: 0x000965AB File Offset: 0x000947AB
413 public virtual void OnStart()
414 {
415 }
416
417 // Token: 0x0600167A RID: 5754 RVA: 0x000965AD File Offset: 0x000947AD
418 public virtual void OnStartOrStack()
419 {
420 }
421
422 // Token: 0x0600167B RID: 5755 RVA: 0x000965B0 File Offset: 0x000947B0
423 public virtual void PlayEffect()
424 {
425 if (Condition.ignoreEffect)
426 {
427 return;
428 }
429 if (base.source.effect.Length != 0)
430 {
431 if (!base.source.effect[0].IsEmpty())
432 {
433 this.owner.PlayEffect(base.source.effect[0], true, 0f, default(Vector3));
434 }
435 this.owner.PlaySound((base.source.effect.Length >= 2) ? base.source.effect[1] : base.source.effect[0], 1f, true);
436 }
437 }
438
439 // Token: 0x0600167C RID: 5756 RVA: 0x00096650 File Offset: 0x00094850
440 public virtual void PlayEndEffect()
441 {
442 if (base.source.effect.Length >= 3)
443 {
444 if (!base.source.effect[2].IsEmpty())
445 {
446 this.owner.PlayEffect(base.source.effect[2], true, 0f, default(Vector3));
447 }
448 this.owner.PlaySound((base.source.effect.Length >= 4) ? base.source.effect[3] : base.source.effect[2], 1f, true);
449 }
450 }
451
452 // Token: 0x0600167D RID: 5757 RVA: 0x000966E7 File Offset: 0x000948E7
453 public virtual void OnRefresh()
454 {
455 }
456
457 // Token: 0x0600167E RID: 5758 RVA: 0x000966EC File Offset: 0x000948EC
458 public void SetPhase()
459 {
460 int num = this.GetPhase();
461 if (this.phase != num)
462 {
463 int num2 = this.phase;
464 this.phase = num;
465 this.PhaseMsg(num > num2);
466 this.OnChangePhase(num2, num);
467 }
468 }
469
470 // Token: 0x0600167F RID: 5759 RVA: 0x00096729 File Offset: 0x00094929
471 public bool IsNullPhase()
472 {
473 return base.source.strPhase.Length != 0 && base.source.strPhase[this.GetPhase()] == "#";
474 }
475
476 // Token: 0x06001680 RID: 5760 RVA: 0x00096757 File Offset: 0x00094957
477 public override int GetPhase()
478 {
479 return base.source.phase[Mathf.Clamp(this.value, 0, 99) / 10];
480 }
481
482 // Token: 0x06001681 RID: 5761 RVA: 0x00096778 File Offset: 0x00094978
483 public void PhaseMsg(bool inc)
484 {
485 bool flag = base.source.invert ? (!inc) : inc;
486 string[] array = (inc ? base.source.GetText("textPhase", false) : base.source.GetText("textPhase2", false)).Split(Environment.NewLine.ToCharArray());
487 if (array.Length <= this.phase || array[this.phase].IsEmpty())
488 {
489 return;
490 }
491 if (this.Type == ConditionType.Stance)
492 {
493 Msg.SetColor("ono");
494 }
495 else if (!base.source.invert && flag)
496 {
497 Msg.SetColor("negative");
498 }
499 else if (base.source.invert && !flag)
500 {
501 Msg.SetColor("positive");
502 }
503 base.PopText();
504 this.owner.Say(array[this.phase].Split('|', StringSplitOptions.None).RandomItem<string>(), this.owner, this.RefString1, null);
505 }
506
507 // Token: 0x06001682 RID: 5762 RVA: 0x0009686C File Offset: 0x00094A6C
508 public override string GetPhaseStr()
509 {
510 string[] textArray = base.source.GetTextArray("strPhase");
511 if (textArray.Length == 0)
512 {
513 return this.Name;
514 }
515 return textArray[this.phase].IsEmpty("");
516 }
517
518 // Token: 0x06001683 RID: 5763 RVA: 0x000968A7 File Offset: 0x00094AA7
519 public virtual void Tick()
520 {
521 }
522
523 // Token: 0x06001684 RID: 5764 RVA: 0x000968A9 File Offset: 0x00094AA9
524 public void Mod(int a, bool force = false)
525 {
526 if (this.isPerfume && !force)
527 {
528 return;
529 }
530 if (this.value == 0)
531 {
532 return;
533 }
534 this.value += a;
535 this.SetPhase();
536 this.OnValueChanged();
537 }
538
539 // Token: 0x06001685 RID: 5765 RVA: 0x000968DA File Offset: 0x00094ADA
540 public virtual void OnValueChanged()
541 {
542 }
543
544 // Token: 0x06001686 RID: 5766 RVA: 0x000968DC File Offset: 0x00094ADC
545 public virtual void OnChangePhase(int lastPhase, int newPhase)
546 {
547 }
548
549 // Token: 0x06001687 RID: 5767 RVA: 0x000968DE File Offset: 0x00094ADE
550 public virtual void OnRemoved()
551 {
552 }
553
554 // Token: 0x1700064F RID: 1615
555 // (get) Token: 0x06001688 RID: 5768 RVA: 0x000968E0 File Offset: 0x00094AE0
556 public virtual bool CanManualRemove
557 {
558 get
559 {
560 return false;
561 }
562 }
563
564 // Token: 0x06001689 RID: 5769 RVA: 0x000968E3 File Offset: 0x00094AE3
565 public virtual int EvaluatePower(int p)
566 {
567 return p;
568 }
569
570 // Token: 0x0600168A RID: 5770 RVA: 0x000968E6 File Offset: 0x00094AE6
571 public virtual int EvaluateTurn(int p)
572 {
573 return Mathf.Max(1, base.source.duration.Calc(p, 0, this.P2));
574 }
575
576 // Token: 0x0600168B RID: 5771 RVA: 0x00096906 File Offset: 0x00094B06
577 public virtual BaseNotification CreateNotification()
578 {
579 return new BaseNotification();
580 }
581
582 // Token: 0x0600168C RID: 5772 RVA: 0x00096910 File Offset: 0x00094B10
583 public Element GetDefenseAttribute(Chara c = null)
584 {
585 if (base.source.defenseAttb.IsEmpty())
586 {
587 return null;
588 }
589 if (c == null)
590 {
591 return Element.Create(base.source.defenseAttb[0], 1);
592 }
593 return c.elements.GetOrCreateElement(base.source.defenseAttb[0]);
594 }
595
596 // Token: 0x0600168D RID: 5773 RVA: 0x00096960 File Offset: 0x00094B60
597 public override void _WriteNote(UINote n, bool asChild = false)
598 {
599 List<string> list = new List<string>();
600 Element defenseAttribute = this.GetDefenseAttribute(null);
601 if (defenseAttribute != null)
602 {
603 list.Add("hintDefenseAttb".lang(defenseAttribute.Name.ToTitleCase(false), null, null, null, null));
604 }
605 this.OnWriteNote(list);
606 foreach (string key in base.source.nullify)
607 {
608 list.Add("hintNullify".lang(EClass.sources.stats.alias[key].GetName(), null, null, null, null));
609 }
610 for (int j = 0; j < base.source.elements.Length; j += 2)
611 {
612 Element element = Element.Create(this.GetElementSource(j).id, base.source.elements[j + 1].Calc(this.power, 0, this.P2));
613 list.Add("modValue".lang(element.Name, ((element.Value < 0) ? "" : "+") + element.Value.ToString(), null, null, null));
614 }
615 if (list.Count > 0)
616 {
617 if (!asChild)
618 {
619 n.Space(8, 1);
620 }
621 foreach (string str in list)
622 {
623 n.AddText("_bullet".lang() + str, FontColor.DontChange);
624 }
625 }
626 }
627
628 // Token: 0x0600168E RID: 5774 RVA: 0x00096AF8 File Offset: 0x00094CF8
629 public virtual void OnWriteNote(List<string> list)
630 {
631 }
632
633 // Token: 0x0600168F RID: 5775 RVA: 0x00096AFA File Offset: 0x00094CFA
634 public virtual RendererReplacer GetRendererReplacer()
635 {
636 return null;
637 }
638
639 // Token: 0x04001063 RID: 4195
640 [JsonProperty]
641 public int[] _ints = new int[5];
642
643 // Token: 0x04001064 RID: 4196
644 public int phase = -1;
645
646 // Token: 0x04001065 RID: 4197
647 public ElementContainer elements;
648
649 // Token: 0x04001066 RID: 4198
650 public Chara owner;
651}
Definition Chara.cs:12
Definition Msg.cs:7
Definition Point.cs:11