Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
ElementContainerCard.cs
Go to the documentation of this file.
1using UnityEngine;
2
4{
5 public Card owner;
6
7 public override Card Card => owner;
8
9 public override Chara Chara => owner.Chara;
10
11 public override bool IsMeleeWeapon
12 {
13 get
14 {
15 if (Card.category.slot == 35)
16 {
17 return Card.category.skill != 0;
18 }
19 return false;
20 }
21 }
22
23 public void SetOwner(Card c, bool applyFeat)
24 {
25 owner = c;
26 SourceValueType sourceValueType = ((c.IsEquipmentOrRangedOrAmmo && c.rarity < Rarity.Artifact) ? SourceValueType.EquipmentRandom : SourceValueType.Fixed);
27 ApplyElementMap(c.uid, sourceValueType, c.sourceCard.elementMap, (sourceValueType != SourceValueType.EquipmentRandom) ? 1 : c.LV, invert: false, applyFeat);
28 }
29
30 public override void OnLearn(int ele)
31 {
33 {
34 SE.DingSkill2();
35 }
36 Msg.Say("learnSkill", Card, EClass.sources.elements.map[ele].GetName());
38 }
39
40 public void CheckSkillActions()
41 {
42 if (owner.IsPC)
43 {
44 TryLearn(6011, 281, 0);
45 TryLearn(6018, 226, 0);
46 TryLearn(6019, 227, 0);
47 TryLearn(6700, 1649, 0);
48 TryLearn(6720, 1657, 0);
49 TryLearn(6450, 132, 5);
50 }
51 void TryLearn(int eleAction, int reqEle, int lqlv)
52 {
53 if (!HasBase(eleAction) && HasBase(reqEle) && GetElement(reqEle).ValueWithoutLink >= lqlv)
54 {
55 SetBase(eleAction, 1);
57 {
58 if (owner.IsPC)
59 {
61 }
62 owner.Say("learnSkill", Card, EClass.sources.elements.map[eleAction].GetName());
63 }
64 }
65 }
66 }
67
68 public override void OnTrain(int ele)
69 {
70 Msg.Say("trainSkill", Card, EClass.sources.elements.map[ele].GetName());
71 }
72
73 public override void OnModTempPotential(Element e, int v, int threshMsg)
74 {
75 if (threshMsg == 0 || Mathf.Abs(v) >= threshMsg)
76 {
77 string lang = ((v > 0) ? "potentialInc" : "potentialDec");
78 if (owner.IsPCFaction && v > 0)
79 {
80 owner.PlaySound("ding_potential");
81 }
82 Msg.SetColor((v > 0) ? "positive" : "negative");
83 owner.Say(lang, owner, e.Name.ToLower());
84 }
85 }
86
87 public override void OnLevelUp(Element e, int lastValue)
88 {
90 {
91 return;
92 }
93 if (owner.IsPC)
94 {
95 if (e.id == 287)
96 {
97 EClass.player.flags.canComupWithFoodRecipe = true;
98 }
99 SE.DingSkill2();
100 }
101 if (owner.isChara)
102 {
104 {
106 {
108 {
110 string text = e.source.GetText("textInc", returnNull: true);
111 if (!text.IsEmpty())
112 {
113 owner.Say(text, owner);
114 }
115 else
116 {
117 owner.Say("ding_skill", owner, e.Name);
118 }
119 owner.pos.TalkWitnesses(owner.Chara, "ding_other", 4, WitnessType.ally, null, 4 + EClass.pc.party.members.Count);
120 }
121 if (owner.IsPCParty)
122 {
123 WidgetPopText.Say("popDing".lang(owner.IsPC ? "" : owner.Name, e.Name, lastValue.ToString() ?? "", e.ValueWithoutLink.ToString() ?? ""), FontColor.Good);
124 }
125 }
126 if (owner.Chara.homeBranch != null)
127 {
128 owner.Chara.homeBranch.Log("bDing", Card, e.Name, lastValue.ToString() ?? "", e.ValueWithoutLink.ToString() ?? "");
129 }
130 }
131 if (e is Skill)
132 {
133 owner.AddExp(10 + EClass.rnd(5));
134 }
136 }
138 }
139
140 public override void OnLevelDown(Element e, int lastValue)
141 {
143 {
144 return;
145 }
146 _ = owner.IsPC;
147 if (!owner.isChara)
148 {
149 return;
150 }
152 {
154 string text = e.source.GetText("textDec", returnNull: true);
155 if (!text.IsEmpty())
156 {
157 Msg.Say(text, owner);
158 }
159 else
160 {
161 Msg.Say("dec_skill", owner, e.Name);
162 }
163 }
165 }
166
167 public override int ValueBonus(Element e)
168 {
169 if (EClass.game == null)
170 {
171 return 0;
172 }
173 int num = 0;
175 {
177 if (element != null)
178 {
179 num += element.Value;
180 }
181 if (owner.IsPCParty)
182 {
183 int id = e.id;
184 if (id == 70 || (uint)(id - 72) <= 1u)
185 {
186 int num2 = 0;
187 foreach (Chara member in EClass.pc.party.members)
188 {
189 if (member.Evalue(1419) > 0)
190 {
191 num2 += member.Evalue(1419);
192 }
193 }
194 if (num2 > 0)
195 {
196 int num3 = 0;
197 foreach (Chara chara in EClass._map.charas)
198 {
199 if (chara.IsHostile(EClass.pc))
200 {
201 num3++;
202 }
203 }
204 if (num3 > 0)
205 {
206 num += Mathf.Max(1, (e.ValueWithoutLink + e.vLink) * (int)Mathf.Clamp(4f + Mathf.Sqrt(num3) * (float)num2 * 2f, 5f, 30f) / 100);
207 }
208 }
209 }
210 }
211 if (e.id == 78)
212 {
213 num += EClass.player.CountKeyItem("lucky_coin") * 2;
214 if (Chara != null && Chara.Evalue(663) > 0)
215 {
216 num = num * 2 + (e.ValueWithoutLink + e.vLink);
217 }
218 }
219 if (e.id != 664 && (owner.Chara.race.IsMachine || owner.id == "android"))
220 {
221 int num4 = owner.Evalue(664);
222 if (num4 > 0)
223 {
224 switch (e.id)
225 {
226 case 64:
227 case 65:
228 num += (e.ValueWithoutLink + e.vLink) * num4 / 2 / 100;
229 break;
230 case 79:
231 num += (e.ValueWithoutLink + e.vLink) * num4 / 100;
232 break;
233 }
234 }
235 }
236 }
237 if (!e.source.aliasMtp.IsEmpty())
238 {
239 int num5 = owner.Evalue(e.source.aliasMtp);
240 if (num5 != 0)
241 {
242 num += (e.ValueWithoutLink + e.vLink) * num5 / 100;
243 }
244 }
245 return num;
246 }
247}
FontColor
Definition: FontColor.cs:2
Rarity
Definition: Rarity.cs:2
SourceValueType
WitnessType
Definition: WitnessType.cs:2
Dictionary< int, int > elementMap
Definition: CardRow.cs:43
Definition: Card.cs:11
bool IsPCFactionOrMinion
Definition: Card.cs:2132
virtual Chara Chara
Definition: Card.cs:1946
string id
Definition: Card.cs:31
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
virtual bool IsPCParty
Definition: Card.cs:2025
string Name
Definition: Card.cs:2013
Point pos
Definition: Card.cs:55
int uid
Definition: Card.cs:118
virtual bool IsPC
Definition: Card.cs:2019
virtual bool isChara
Definition: Card.cs:1959
int Evalue(int ele)
Definition: Card.cs:2431
virtual bool IsPCFaction
Definition: Card.cs:2129
virtual CardRow sourceCard
Definition: Card.cs:2007
SourceCategory.Row category
Definition: Card.cs:1925
void AddExp(int a)
Definition: Card.cs:2767
int LV
Definition: Card.cs:370
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
Definition: Chara.cs:10
Faction faction
Definition: Chara.cs:412
Party party
Definition: Chara.cs:43
override bool IsPCFaction
Definition: Chara.cs:656
void CalculateMaxStamina()
Definition: Chara.cs:1736
bool IsInActiveZone
Definition: Chara.cs:791
FactionBranch homeBranch
Definition: Chara.cs:889
bool IsHostile()
Definition: Chara.cs:5884
SourceRace.Row race
Definition: Chara.cs:449
bool IsGameStarted
Definition: Core.cs:84
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static int rnd(int a)
Definition: EClass.cs:50
static Core core
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
void SetOwner(Card c, bool applyFeat)
override void OnLearn(int ele)
override int ValueBonus(Element e)
override void OnLevelDown(Element e, int lastValue)
override void OnTrain(int ele)
override void OnModTempPotential(Element e, int v, int threshMsg)
override void OnLevelUp(Element e, int lastValue)
int ValueWithoutLink(int ele)
void ApplyElementMap(int uid, SourceValueType type, Dictionary< int, int > map, int lv, bool invert=false, bool applyFeat=false)
Element SetBase(string alias, int v, int potential=0)
bool HasBase(int ele)
Element GetElement(string alias)
virtual bool ShowMsgOnValueChanged
Definition: ELEMENT.cs:318
int ValueWithoutLink
Definition: ELEMENT.cs:284
int id
Definition: ELEMENT.cs:240
SourceElement.Row source
Definition: ELEMENT.cs:263
int Value
Definition: ELEMENT.cs:282
virtual string Name
Definition: ELEMENT.cs:294
int vLink
Definition: ELEMENT.cs:250
string Log(string idLang, string ref1=null, string ref2=null, string ref3=null, string ref4=null)
ElementContainerFaction charaElements
Definition: FACTION.cs:144
static void Redraw()
List< Chara > charas
Definition: Map.cs:81
Color Negative
Definition: MsgColors.cs:15
Color Ding
Definition: MsgColors.cs:11
Definition: Msg.cs:5
static MsgColors colors
Definition: Msg.cs:20
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
static void SetColor()
Definition: Msg.cs:22
List< Chara > members
Definition: Party.cs:18
int CountKeyItem(string alias)
Definition: Player.cs:1946
void TalkWitnesses(Chara criminal, string idTalk, int radius=4, WitnessType type=WitnessType.everyone, Func< Chara, bool > talkIf=null, int chance=3)
Definition: Point.cs:787
Definition: SKILL.cs:288
SourceElement elements
static bool IsActive
Definition: VirtualDate.cs:13
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)