Elin Decompiled Documentation EA 23.331 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, 20);
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:2342
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:6613
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:2704
virtual bool IsPCFaction
Definition: Card.cs:2339
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:3116
int LV
Definition: Card.cs:389
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7291
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:2188
bool IsInActiveZone
Definition: Chara.cs:885
bool IsMachine
Definition: Chara.cs:950
FactionBranch homeBranch
Definition: Chara.cs:1113
bool IsHostile()
Definition: Chara.cs:6849
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:337
int ValueWithoutLink
Definition: ELEMENT.cs:303
int id
Definition: ELEMENT.cs:259
SourceElement.Row source
Definition: ELEMENT.cs:282
int Value
Definition: ELEMENT.cs:301
virtual string Name
Definition: ELEMENT.cs:313
int vLink
Definition: ELEMENT.cs:269
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:294
SourceElement elements
static bool IsActive
Definition: VirtualDate.cs:13
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)