Elin Decompiled Documentation EA 23.130 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:2172
virtual Chara Chara
Definition: Card.cs:1970
string id
Definition: Card.cs:31
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5585
virtual bool IsPCParty
Definition: Card.cs:2049
string Name
Definition: Card.cs:2037
Point pos
Definition: Card.cs:55
int uid
Definition: Card.cs:118
virtual bool IsPC
Definition: Card.cs:2043
virtual bool isChara
Definition: Card.cs:1983
int Evalue(int ele)
Definition: Card.cs:2471
virtual bool IsPCFaction
Definition: Card.cs:2169
virtual CardRow sourceCard
Definition: Card.cs:2031
SourceCategory.Row category
Definition: Card.cs:1949
void AddExp(int a)
Definition: Card.cs:2816
int LV
Definition: Card.cs:370
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6232
Definition: Chara.cs:10
Faction faction
Definition: Chara.cs:417
Party party
Definition: Chara.cs:43
override bool IsPCFaction
Definition: Chara.cs:661
void CalculateMaxStamina()
Definition: Chara.cs:1750
bool IsInActiveZone
Definition: Chara.cs:796
FactionBranch homeBranch
Definition: Chara.cs:894
bool IsHostile()
Definition: Chara.cs:5942
SourceRace.Row race
Definition: Chara.cs:454
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:58
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:324
int ValueWithoutLink
Definition: ELEMENT.cs:290
int id
Definition: ELEMENT.cs:246
SourceElement.Row source
Definition: ELEMENT.cs:269
int Value
Definition: ELEMENT.cs:288
virtual string Name
Definition: ELEMENT.cs:300
int vLink
Definition: ELEMENT.cs:256
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:1962
void TalkWitnesses(Chara criminal, string idTalk, int radius=4, WitnessType type=WitnessType.everyone, Func< Chara, bool > talkIf=null, int chance=3)
Definition: Point.cs:799
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)