Elin Decompiled Documentation EA 23.316 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 && !c.isReplica) ? SourceValueType.EquipmentRandom : SourceValueType.Fixed);
27 if (c.sourceCard.ContainsTag("fixedElement"))
28 {
29 sourceValueType = SourceValueType.Fixed;
30 }
31 if (c.sourceCard.ContainsTag("randomElement"))
32 {
33 sourceValueType = SourceValueType.EquipmentRandom;
34 }
35 ApplyElementMap(c.uid, sourceValueType, c.sourceCard.elementMap, (sourceValueType != SourceValueType.EquipmentRandom) ? 1 : c.LV, invert: false, applyFeat);
36 }
37
38 public override void OnLearn(int ele)
39 {
41 {
42 SE.DingSkill2();
43 }
44 Msg.Say("learnSkill", Card, EClass.sources.elements.map[ele].GetName());
46 }
47
48 public void CheckSkillActions()
49 {
50 if (owner.IsPC)
51 {
52 TryLearn(6608, 1274, 0);
53 TryLearn(6011, 281, 0);
54 TryLearn(6018, 226, 0);
55 TryLearn(6019, 227, 0);
56 TryLearn(6700, 1649, 0);
57 TryLearn(6720, 1657, 0);
58 TryLearn(6450, 132, 5);
59 TryLearn(6603, 6020, 50);
60 }
61 void TryLearn(int eleAction, int reqEle, int lqlv)
62 {
63 if (!HasBase(eleAction) && HasBase(reqEle) && GetElement(reqEle).ValueWithoutLink >= lqlv)
64 {
65 SetBase(eleAction, 1);
67 {
68 if (owner.IsPC)
69 {
71 }
72 owner.Say("learnSkill", Card, EClass.sources.elements.map[eleAction].GetName());
73 }
74 }
75 }
76 }
77
78 public override void OnTrain(int ele)
79 {
80 Msg.Say("trainSkill", Card, EClass.sources.elements.map[ele].GetName());
81 }
82
83 public override void OnModTempPotential(Element e, int v, int threshMsg)
84 {
85 if ((threshMsg == 0 || Mathf.Abs(v) >= threshMsg) && v != 0)
86 {
87 string lang = ((v > 0) ? "potentialInc" : "potentialDec");
88 if (owner.IsPCFaction && v > 0)
89 {
90 owner.PlaySound("ding_potential");
91 }
92 Msg.SetColor((v > 0) ? "positive" : "negative");
93 owner.Say(lang, owner, e.Name.ToLower());
94 }
95 }
96
97 public override void OnLevelUp(Element e, int lastValue)
98 {
100 {
101 return;
102 }
103 if (owner.IsPC)
104 {
105 if (e.id == 287)
106 {
107 EClass.player.flags.canComupWithFoodRecipe = true;
108 }
109 SE.DingSkill2();
110 }
111 if (owner.isChara)
112 {
114 {
116 {
118 {
120 string text = e.source.GetText("textInc", returnNull: true);
121 if (!text.IsEmpty())
122 {
123 owner.Say(text, owner);
124 }
125 else
126 {
127 owner.Say("ding_skill", owner, e.Name);
128 }
129 owner.pos.TalkWitnesses(owner.Chara, "ding_other", 4, WitnessType.ally, null, 4 + EClass.pc.party.members.Count);
130 }
131 if (owner.IsPCParty)
132 {
133 WidgetPopText.Say("popDing".lang(owner.IsPC ? "" : owner.Name, e.Name, lastValue.ToString() ?? "", e.ValueWithoutLink.ToString() ?? ""), FontColor.Good);
134 }
135 }
136 if (owner.Chara.homeBranch != null)
137 {
138 owner.Chara.homeBranch.Log("bDing", Card, e.Name, lastValue.ToString() ?? "", e.ValueWithoutLink.ToString() ?? "");
139 }
140 }
141 if (e is Skill)
142 {
143 owner.AddExp(10 + EClass.rnd(5));
144 }
146 }
148 }
149
150 public override void OnLevelDown(Element e, int lastValue)
151 {
153 {
154 return;
155 }
156 _ = owner.IsPC;
157 if (!owner.isChara)
158 {
159 return;
160 }
162 {
164 string text = e.source.GetText("textDec", returnNull: true);
165 if (!text.IsEmpty())
166 {
167 Msg.Say(text, owner);
168 }
169 else
170 {
171 Msg.Say("dec_skill", owner, e.Name);
172 }
173 }
175 }
176
177 public override int ValueBonus(Element e)
178 {
179 if (EClass.game == null)
180 {
181 return 0;
182 }
183 int num = 0;
185 {
187 if (element != null)
188 {
189 num += element.Value;
190 }
191 if (owner.IsPCParty)
192 {
193 int id = e.id;
194 if ((id == 70 || (uint)(id - 72) <= 1u) && EClass.game.activeZone != null)
195 {
196 int num2 = 0;
197 foreach (Chara member in EClass.pc.party.members)
198 {
199 if (member.Evalue(1419) > 0)
200 {
201 num2 += member.Evalue(1419);
202 }
203 }
204 if (num2 > 0)
205 {
206 int num3 = 0;
207 foreach (Chara chara in EClass._map.charas)
208 {
209 if (chara.IsHostile(EClass.pc))
210 {
211 num3++;
212 }
213 }
214 if (num3 > 0)
215 {
216 num += Mathf.Max(1, (e.ValueWithoutLink + e.vLink) * (int)Mathf.Clamp(4f + Mathf.Sqrt(num3) * (float)num2 * 2f, 5f, 30f) / 100);
217 }
218 }
219 }
220 }
221 if (e.id == 78)
222 {
223 num += EClass.player.CountKeyItem("lucky_coin") * 2;
224 if (Chara != null && Chara.Evalue(663) > 0)
225 {
226 num = num * 2 + (e.ValueWithoutLink + e.vLink);
227 }
228 }
229 if (e.id != 664 && (owner.Chara.IsMachine || owner.id == "android"))
230 {
231 int num4 = owner.Evalue(664);
232 if (num4 > 0)
233 {
234 switch (e.id)
235 {
236 case 64:
237 case 65:
238 num += (e.ValueWithoutLink + e.vLink) * num4 / 2 / 100;
239 break;
240 case 79:
241 num += (e.ValueWithoutLink + e.vLink) * num4 / 100;
242 break;
243 }
244 }
245 }
246 }
247 if (!e.source.aliasMtp.IsEmpty())
248 {
249 int num5 = owner.Evalue(e.source.aliasMtp);
250 if (num5 != 0)
251 {
252 num += (e.ValueWithoutLink + e.vLink) * num5 / 100;
253 }
254 }
255 return num;
256 }
257}
FontColor
Definition: FontColor.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:2326
virtual Chara Chara
Definition: Card.cs:2122
string id
Definition: Card.cs:36
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6543
virtual bool IsPCParty
Definition: Card.cs:2203
string Name
Definition: Card.cs:2191
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:125
virtual bool IsPC
Definition: Card.cs:2197
virtual bool isChara
Definition: Card.cs:2135
int Evalue(int ele)
Definition: Card.cs:2688
virtual bool IsPCFaction
Definition: Card.cs:2323
virtual CardRow sourceCard
Definition: Card.cs:2183
SourceCategory.Row category
Definition: Card.cs:2101
bool isReplica
Definition: Card.cs:701
void AddExp(int a, bool applyMod=true)
Definition: Card.cs:3100
int LV
Definition: Card.cs:389
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7221
Definition: Chara.cs:10
Faction faction
Definition: Chara.cs:431
Party party
Definition: Chara.cs:43
override bool IsPCFaction
Definition: Chara.cs:689
void CalculateMaxStamina()
Definition: Chara.cs:2106
bool IsInActiveZone
Definition: Chara.cs:861
bool IsMachine
Definition: Chara.cs:926
FactionBranch homeBranch
Definition: Chara.cs:1089
bool IsHostile()
Definition: Chara.cs:6758
bool IsGameStarted
Definition: Core.cs:87
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Core core
Definition: EClass.cs:7
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
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:335
int ValueWithoutLink
Definition: ELEMENT.cs:301
int id
Definition: ELEMENT.cs:257
SourceElement.Row source
Definition: ELEMENT.cs:280
int Value
Definition: ELEMENT.cs:299
virtual string Name
Definition: ELEMENT.cs:311
int vLink
Definition: ELEMENT.cs:267
string Log(string idLang, string ref1=null, string ref2=null, string ref3=null, string ref4=null)
ElementContainerFaction charaElements
Definition: FACTION.cs:146
Zone activeZone
Definition: Game.cs:252
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:19
int CountKeyItem(string alias)
Definition: Player.cs:2240
void TalkWitnesses(Chara criminal, string idTalk, int radius=4, WitnessType type=WitnessType.everyone, Func< Chara, bool > talkIf=null, int chance=3)
Definition: Point.cs:820
bool ContainsTag(string _tag)
Definition: RenderRow.cs:148
Definition: SKILL.cs:290
SourceElement elements
static bool IsActive
Definition: VirtualDate.cs:13
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)