Elin Decompiled Documentation EA 23.302 Nightly
Loading...
Searching...
No Matches
ConStrife.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using Newtonsoft.Json;
3using UnityEngine;
4
5public class ConStrife : BaseBuff
6{
7 [JsonProperty]
9
10 [JsonProperty]
11 public int exp;
12
13 [JsonProperty]
14 public int lv;
15
16 [JsonProperty]
17 public int turn;
18
19 public override string TextDuration => "Lv." + lv;
20
21 public int ExpToNext => (lv + 1) * (lv + 1);
22
23 public override bool ShouldOverride(Condition c)
24 {
25 return false;
26 }
27
28 public override bool CanStack(Condition c)
29 {
30 return true;
31 }
32
34 {
35 return ec;
36 }
37
38 public void AddKill(Chara c)
39 {
40 if (!owner.IsPC)
41 {
42 return;
43 }
45 {
46 if (c.IsMinion)
47 {
48 exp += 2;
49 }
50 else
51 {
52 exp += 30;
53 }
54 }
55 else
56 {
57 exp++;
58 }
59 while (exp >= ExpToNext)
60 {
61 if (lv >= 5)
62 {
63 exp = ExpToNext;
64 break;
65 }
66 exp -= ExpToNext;
67 lv++;
68 ec.SetBase(964, (lv >= 3) ? ((lv - 2) * 5) : 0);
69 ec.SetBase(662, lv * 10);
71 }
72 SetTurn();
73 }
74
75 public void SetTurn()
76 {
77 turn = Mathf.Max(100 - lv * 10, 10);
78 }
79
80 public override void Tick()
81 {
82 if (!owner.IsPC)
83 {
84 SyncPC();
85 return;
86 }
87 turn--;
88 if (turn < 0)
89 {
90 lv--;
91 if (lv >= 1)
92 {
93 SetTurn();
94 exp = ExpToNext / 2;
95 }
96 else
97 {
98 Kill();
99 }
100 }
101 else
102 {
104 }
105 }
106
107 public void TryApplyParty()
108 {
109 if (lv < 2 || !owner.IsPC)
110 {
111 return;
112 }
113 foreach (Chara member in EClass.pc.party.members)
114 {
115 if (!member.HasCondition<ConStrife>())
116 {
117 (member.AddCondition<ConStrife>() as ConStrife)?.SyncPC();
118 }
119 }
120 }
121
122 public void SyncPC()
123 {
124 ConStrife condition = EClass.pc.GetCondition<ConStrife>();
125 if (condition == null || condition.lv < 2)
126 {
127 turn = 0;
128 Kill();
129 return;
130 }
131 turn = condition.turn;
132 lv = condition.lv;
133 exp = condition.exp;
134 ec.SetBase(964, condition.ec.GetOrCreateElement(964).vBase);
135 ec.SetBase(662, condition.ec.GetOrCreateElement(662).vBase);
136 }
137
138 public override void OnWriteNote(List<string> list)
139 {
140 list.Add("hintStrife".lang(lv.ToString() ?? "", exp + "/" + ExpToNext));
141 list.Add("hintStrife2".lang((lv * 10).ToString() ?? "", (lv * 5).ToString() ?? "").TagColorGoodBad(() => true));
142 foreach (Element e in ec.dict.Values)
143 {
144 if (e.Value == 0)
145 {
146 continue;
147 }
148 if (e.IsFlag)
149 {
150 list.Add(e.Name.TagColorGoodBad(() => e.Value >= 0));
151 }
152 else if (elements != null && elements.Has(e.id) && elements.Value(e.id) != e.Value)
153 {
154 list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + elements.Value(e.id) + (e.source.tag.Contains("ratio") ? "%" : "") + " (" + e.Value + ")").TagColor(() => e.Value >= 0));
155 }
156 else
157 {
158 list.Add("modValue".lang(e.Name, ((e.Value < 0) ? "" : "+") + e.Value + (e.source.tag.Contains("ratio") ? "%" : "")).TagColorGoodBad(() => e.Value >= 0));
159 }
160 }
161 if (lv >= 2)
162 {
163 list.Add("hintStrife3".lang().TagColorGoodBad(() => true));
164 }
165 }
166
167 public override void SetOwner(Chara _owner, bool onDeserialize = false)
168 {
169 base.SetOwner(_owner);
171 }
172
173 public override void OnRemoved()
174 {
175 ec.SetParent();
176 }
177}
ElementContainer elements
override string ToString()
bool IsPCFactionOrMinion
Definition: Card.cs:2314
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9525
override bool IsPC
Definition: Chara.cs:626
Party party
Definition: Chara.cs:43
bool HasCondition(string alias)
Definition: Chara.cs:9686
override bool IsMinion
Definition: Chara.cs:641
override ElementContainer GetElementContainer()
Definition: ConStrife.cs:33
override void SetOwner(Chara _owner, bool onDeserialize=false)
Definition: ConStrife.cs:167
int turn
Definition: ConStrife.cs:17
override bool CanStack(Condition c)
Definition: ConStrife.cs:28
void SyncPC()
Definition: ConStrife.cs:122
override void Tick()
Definition: ConStrife.cs:80
void AddKill(Chara c)
Definition: ConStrife.cs:38
void SetTurn()
Definition: ConStrife.cs:75
void TryApplyParty()
Definition: ConStrife.cs:107
int exp
Definition: ConStrife.cs:11
override void OnRemoved()
Definition: ConStrife.cs:173
override bool ShouldOverride(Condition c)
Definition: ConStrife.cs:23
override void OnWriteNote(List< string > list)
Definition: ConStrife.cs:138
ElementContainer ec
Definition: ConStrife.cs:8
int lv
Definition: ConStrife.cs:14
int ExpToNext
Definition: ConStrife.cs:21
override string TextDuration
Definition: ConStrife.cs:19
void Kill(bool silent=false)
Definition: Condition.cs:91
Definition: EClass.cs:6
static Chara pc
Definition: EClass.cs:15
Dictionary< int, Element > dict
void SetParent(Card c)
bool Has(int ele)
int Value(int ele)
Element SetBase(string alias, int v, int potential=0)
Element GetOrCreateElement(Element ele)
int id
Definition: ELEMENT.cs:255
int vBase
Definition: ELEMENT.cs:257
SourceElement.Row source
Definition: ELEMENT.cs:278
int Value
Definition: ELEMENT.cs:297
virtual string Name
Definition: ELEMENT.cs:309
bool IsFlag
Definition: ELEMENT.cs:307
List< Chara > members
Definition: Party.cs:19