Elin Modding Docs Doc
Loading...
Searching...
No Matches
SourceElement.cs
1using System;
2using System.Collections.Generic;
3using System.Reflection;
4using UnityEngine;
5using UnityEngine.UI;
6
7// Token: 0x02000019 RID: 25
8public class SourceElement : SourceDataInt<SourceElement.Row>
9{
10 // Token: 0x060000FE RID: 254 RVA: 0x0000A2A8 File Offset: 0x000084A8
11 public override SourceElement.Row CreateRow()
12 {
13 return new SourceElement.Row
14 {
15 id = SourceData.GetInt(0),
16 alias = SourceData.GetString(1),
17 name_JP = SourceData.GetString(2),
18 name = SourceData.GetString(3),
19 altname_JP = SourceData.GetString(4),
20 altname = SourceData.GetString(5),
21 aliasParent = SourceData.GetString(6),
22 parentFactor = SourceData.GetFloat(7),
23 lvFactor = SourceData.GetInt(8),
24 encFactor = SourceData.GetInt(9),
25 mtp = SourceData.GetInt(10),
26 aliasRef = SourceData.GetString(11),
27 aliasMtp = SourceData.GetString(12),
28 sort = SourceData.GetInt(13),
29 target = SourceData.GetString(14),
30 proc = SourceData.GetStringArray(15),
31 type = SourceData.GetString(16),
32 group = SourceData.GetString(17),
33 category = SourceData.GetString(18),
34 categorySub = SourceData.GetString(19),
35 abilityType = SourceData.GetStringArray(20),
36 tag = SourceData.GetStringArray(21),
37 thing = SourceData.GetString(22),
38 eleP = SourceData.GetInt(23),
39 cooldown = SourceData.GetInt(24),
40 LV = SourceData.GetInt(25),
41 chance = SourceData.GetInt(26),
42 value = SourceData.GetInt(27),
43 cost = SourceData.GetIntArray(28),
44 charge = SourceData.GetInt(29),
45 radius = SourceData.GetFloat(30),
46 max = SourceData.GetInt(31),
47 req = SourceData.GetStringArray(32),
48 idTrainer = SourceData.GetString(33),
49 encSlot = SourceData.GetString(34),
50 partySkill = SourceData.GetInt(35),
51 tagTrainer = SourceData.GetString(36),
52 levelBonus_JP = SourceData.GetString(37),
53 levelBonus = SourceData.GetString(38),
54 foodEffect = SourceData.GetStringArray(39),
55 langAct = SourceData.GetStringArray(41),
56 detail_JP = SourceData.GetString(42),
57 detail = SourceData.GetString(43),
58 textPhase_JP = SourceData.GetString(44),
59 textPhase = SourceData.GetString(45),
60 textExtra_JP = SourceData.GetString(46),
61 textExtra = SourceData.GetString(47),
62 textInc_JP = SourceData.GetString(48),
63 textInc = SourceData.GetString(49),
64 textDec_JP = SourceData.GetString(50),
65 textDec = SourceData.GetString(51),
66 textAlt_JP = SourceData.GetStringArray(52),
67 textAlt = SourceData.GetStringArray(53),
68 adjective_JP = SourceData.GetStringArray(54),
69 adjective = SourceData.GetStringArray(55)
70 };
71 }
72
73 // Token: 0x060000FF RID: 255 RVA: 0x0000A57C File Offset: 0x0000877C
74 public override void SetRow(SourceElement.Row r)
75 {
76 this.map[r.id] = r;
77 }
78
79 // Token: 0x06000100 RID: 256 RVA: 0x0000A590 File Offset: 0x00008790
80 public override void OnInit()
81 {
82 foreach (SourceElement.Row row in this.rows)
83 {
84 if (row.id >= 100 && row.id < 400)
85 {
86 this.hobbies.Add(row);
87 }
88 row.isAttribute = (row.category == "attribute");
89 row.isPrimaryAttribute = (row.isAttribute && row.tag.Contains("primary"));
90 row.isSkill = (row.category == "skill");
91 row.isSpell = (row.categorySub == "spell");
92 }
93 }
94
95 // Token: 0x06000101 RID: 257 RVA: 0x0000A668 File Offset: 0x00008868
96 public override void OnAfterImportData()
97 {
98 Core.SetCurrent(null);
99 foreach (SourceElement.Row row in this.rows)
100 {
101 this.map[row.id] = row;
102 this.alias[row.GetAlias] = row;
103 }
104 int num = 50000;
105 int num2 = 0;
106 for (int i = 910; i < 925; i++)
107 {
108 SourceElement.Row ele = EClass.sources.elements.map[i];
109 this.AddRow(ele, num + num2 + 100, "ball_");
110 this.AddRow(ele, num + num2 + 200, "breathe_");
111 this.AddRow(ele, num + num2 + 300, "bolt_");
112 this.AddRow(ele, num + num2 + 400, "hand_");
113 this.AddRow(ele, num + num2 + 500, "arrow_");
114 this.AddRow(ele, num + num2 + 600, "funnel_");
115 this.AddRow(ele, num + num2 + 700, "miasma_");
116 this.AddRow(ele, num + num2 + 800, "weapon_");
117 this.AddRow(ele, num + num2 + 900, "puddle_");
118 num2++;
119 }
120 }
121
122 // Token: 0x06000102 RID: 258 RVA: 0x0000A7E4 File Offset: 0x000089E4
123 public void AddRow(SourceElement.Row ele, int id, string idOrg)
124 {
125 SourceElement.Row row = EClass.sources.elements.alias[idOrg];
126 System.Reflection.FieldInfo[] fields = row.GetType().GetFields();
128 foreach (System.Reflection.FieldInfo fieldInfo in fields)
129 {
130 row2.SetField(fieldInfo.Name, row.GetField(fieldInfo.Name));
131 }
132 row2.id = id;
133 row2.idMold = row.id;
134 row2.alias = row.alias + ele.alias.Remove(0, 3);
135 row2.aliasRef = ele.alias;
136 row2.aliasParent = ele.aliasParent;
137 row2.chance = row.chance;
138 row2.LV = row.LV;
139 row2.OnImportData(EClass.sources.elements);
140 this.rows.Add(row2);
141 }
142
143 // Token: 0x17000034 RID: 52
144 // (get) Token: 0x06000103 RID: 259 RVA: 0x0000A8C4 File Offset: 0x00008AC4
145 public override string[] ImportFields
146 {
147 get
148 {
149 return new string[]
150 {
151 "altname",
152 "textPhase",
153 "textExtra",
154 "textInc",
155 "textDec",
156 "textAlt",
157 "adjective",
158 "levelBonus"
159 };
160 }
161 }
162
163 // Token: 0x040000D5 RID: 213
164 [NonSerialized]
165 public List<SourceElement.Row> hobbies = new List<SourceElement.Row>();
166
167 // Token: 0x0200079A RID: 1946
168 [Serializable]
169 public class Row : SourceData.BaseRow
170 {
171 // Token: 0x170010D5 RID: 4309
172 // (get) Token: 0x0600372C RID: 14124 RVA: 0x0012A5F9 File Offset: 0x001287F9
173 public override bool UseAlias
174 {
175 get
176 {
177 return true;
178 }
179 }
180
181 // Token: 0x170010D6 RID: 4310
182 // (get) Token: 0x0600372D RID: 14125 RVA: 0x0012A5FC File Offset: 0x001287FC
183 public override string GetAlias
184 {
185 get
186 {
187 return this.alias;
188 }
189 }
190
191 // Token: 0x0600372E RID: 14126 RVA: 0x0012A604 File Offset: 0x00128804
192 public override string GetName()
193 {
194 if (this.idMold != 0)
195 {
196 return EClass.sources.elements.map[this.idMold].alias.lang(EClass.sources.elements.alias[this.aliasRef].GetAltname(0), null, null, null, null);
197 }
198 return base.GetName();
199 }
200
201 // Token: 0x0600372F RID: 14127 RVA: 0x0012A668 File Offset: 0x00128868
202 public Sprite GetSprite()
203 {
204 Sprite result;
205 if ((result = SpriteSheet.Get("Media/Graphics/Icon/Element/icon_ability", this.alias)) == null)
206 {
207 result = (SpriteSheet.Get("Media/Graphics/Icon/Element/icon_ability", this.type) ?? EClass.core.refs.icons.defaultAbility);
208 }
209 return result;
210 }
211
212 // Token: 0x06003730 RID: 14128 RVA: 0x0012A6A8 File Offset: 0x001288A8
213 public void SetImage(Image image)
214 {
215 image.sprite = (this.GetSprite() ?? EClass.core.refs.icons.defaultAbility);
216 if (!this.aliasRef.IsEmpty())
217 {
218 image.color = EClass.setting.elements[this.aliasRef].colorSprite;
219 return;
220 }
221 image.color = Color.white;
222 }
223
224 // Token: 0x06003731 RID: 14129 RVA: 0x0012A712 File Offset: 0x00128912
225 public string GetAltname(int i)
226 {
227 return base.GetText("altname", false).Split(',', StringSplitOptions.None).TryGet(i, -1);
228 }
229
230 // Token: 0x06003732 RID: 14130 RVA: 0x0012A72F File Offset: 0x0012892F
231 public bool IsEncAppliable(Thing t, bool isMaterial)
232 {
233 if (isMaterial && t.IsEquipmentOrRanged)
234 {
235 return true;
236 }
237 if (this.tag.Contains("trait"))
238 {
239 return !t.IsEquipmentOrRanged;
240 }
241 return this.IsEncAppliable(t.category);
242 }
243
244 // Token: 0x06003733 RID: 14131 RVA: 0x0012A768 File Offset: 0x00128968
245 public bool IsEncAppliable(Thing t)
246 {
247 if (this.id == 10)
248 {
249 return true;
250 }
251 if (this.tag.Contains("trait"))
252 {
253 return !t.IsEquipmentOrRanged && !t.IsAmmo;
254 }
255 if (!t.IsEquipmentOrRanged)
256 {
257 return false;
258 }
259 if (t.IsAmmo)
260 {
261 this.IsEncAppliable(t.category);
262 }
263 return true;
264 }
265
266 // Token: 0x06003734 RID: 14132 RVA: 0x0012A7C8 File Offset: 0x001289C8
267 public bool IsEncAppliable(SourceCategory.Row cat)
268 {
269 if (this.encSlot.IsEmpty())
270 {
271 return false;
272 }
273 if (this.encSlot == "global")
274 {
275 return true;
276 }
277 int slot = cat.slot;
278 if (slot == 0)
279 {
280 return false;
281 }
282 string a = this.encSlot;
283 if (a == "all")
284 {
285 return true;
286 }
287 if (!(a == "weapon"))
288 {
289 return this.encSlot.Contains(EClass.sources.elements.map[slot].alias);
290 }
291 return cat.IsChildOf("weapon");
292 }
293
294 // Token: 0x04001F6C RID: 8044
295 public int id;
296
297 // Token: 0x04001F6D RID: 8045
298 public string alias;
299
300 // Token: 0x04001F6E RID: 8046
301 public string name_JP;
302
303 // Token: 0x04001F6F RID: 8047
304 public string name;
305
306 // Token: 0x04001F70 RID: 8048
307 public string altname_JP;
308
309 // Token: 0x04001F71 RID: 8049
310 public string altname;
311
312 // Token: 0x04001F72 RID: 8050
313 public string aliasParent;
314
315 // Token: 0x04001F73 RID: 8051
316 public float parentFactor;
317
318 // Token: 0x04001F74 RID: 8052
319 public int lvFactor;
320
321 // Token: 0x04001F75 RID: 8053
322 public int encFactor;
323
324 // Token: 0x04001F76 RID: 8054
325 public int mtp;
326
327 // Token: 0x04001F77 RID: 8055
328 public string aliasRef;
329
330 // Token: 0x04001F78 RID: 8056
331 public string aliasMtp;
332
333 // Token: 0x04001F79 RID: 8057
334 public int sort;
335
336 // Token: 0x04001F7A RID: 8058
337 public string target;
338
339 // Token: 0x04001F7B RID: 8059
340 public string[] proc;
341
342 // Token: 0x04001F7C RID: 8060
343 public string type;
344
345 // Token: 0x04001F7D RID: 8061
346 public string group;
347
348 // Token: 0x04001F7E RID: 8062
349 public string category;
350
351 // Token: 0x04001F7F RID: 8063
352 public string categorySub;
353
354 // Token: 0x04001F80 RID: 8064
355 public string[] abilityType;
356
357 // Token: 0x04001F81 RID: 8065
358 public string[] tag;
359
360 // Token: 0x04001F82 RID: 8066
361 public string thing;
362
363 // Token: 0x04001F83 RID: 8067
364 public int eleP;
365
366 // Token: 0x04001F84 RID: 8068
367 public int cooldown;
368
369 // Token: 0x04001F85 RID: 8069
370 public int LV;
371
372 // Token: 0x04001F86 RID: 8070
373 public int chance;
374
375 // Token: 0x04001F87 RID: 8071
376 public int value;
377
378 // Token: 0x04001F88 RID: 8072
379 public int[] cost;
380
381 // Token: 0x04001F89 RID: 8073
382 public int charge;
383
384 // Token: 0x04001F8A RID: 8074
385 public float radius;
386
387 // Token: 0x04001F8B RID: 8075
388 public int max;
389
390 // Token: 0x04001F8C RID: 8076
391 public string[] req;
392
393 // Token: 0x04001F8D RID: 8077
394 public string idTrainer;
395
396 // Token: 0x04001F8E RID: 8078
397 public string encSlot;
398
399 // Token: 0x04001F8F RID: 8079
400 public int partySkill;
401
402 // Token: 0x04001F90 RID: 8080
403 public string tagTrainer;
404
405 // Token: 0x04001F91 RID: 8081
406 public string levelBonus_JP;
407
408 // Token: 0x04001F92 RID: 8082
409 public string levelBonus;
410
411 // Token: 0x04001F93 RID: 8083
412 public string[] foodEffect;
413
414 // Token: 0x04001F94 RID: 8084
415 public string[] langAct;
416
417 // Token: 0x04001F95 RID: 8085
418 public string detail_JP;
419
420 // Token: 0x04001F96 RID: 8086
421 public string detail;
422
423 // Token: 0x04001F97 RID: 8087
424 public string textPhase_JP;
425
426 // Token: 0x04001F98 RID: 8088
427 public string textPhase;
428
429 // Token: 0x04001F99 RID: 8089
430 public string textExtra_JP;
431
432 // Token: 0x04001F9A RID: 8090
433 public string textExtra;
434
435 // Token: 0x04001F9B RID: 8091
436 public string textInc_JP;
437
438 // Token: 0x04001F9C RID: 8092
439 public string textInc;
440
441 // Token: 0x04001F9D RID: 8093
442 public string textDec_JP;
443
444 // Token: 0x04001F9E RID: 8094
445 public string textDec;
446
447 // Token: 0x04001F9F RID: 8095
448 public string[] textAlt_JP;
449
450 // Token: 0x04001FA0 RID: 8096
451 public string[] textAlt;
452
453 // Token: 0x04001FA1 RID: 8097
454 public string[] adjective_JP;
455
456 // Token: 0x04001FA2 RID: 8098
457 public string[] adjective;
458
459 // Token: 0x04001FA3 RID: 8099
460 [NonSerialized]
461 public bool isAttribute;
462
463 // Token: 0x04001FA4 RID: 8100
464 [NonSerialized]
465 public bool isPrimaryAttribute;
466
467 // Token: 0x04001FA5 RID: 8101
468 [NonSerialized]
469 public bool isSkill;
470
471 // Token: 0x04001FA6 RID: 8102
472 [NonSerialized]
473 public bool isSpell;
474
475 // Token: 0x04001FA7 RID: 8103
476 public int idMold;
477
478 // Token: 0x04001FA8 RID: 8104
479 public string name_L;
480
481 // Token: 0x04001FA9 RID: 8105
482 public string altname_L;
483
484 // Token: 0x04001FAA RID: 8106
485 public string detail_L;
486
487 // Token: 0x04001FAB RID: 8107
488 public string textPhase_L;
489
490 // Token: 0x04001FAC RID: 8108
491 public string textExtra_L;
492
493 // Token: 0x04001FAD RID: 8109
494 public string textInc_L;
495
496 // Token: 0x04001FAE RID: 8110
497 public string textDec_L;
498
499 // Token: 0x04001FAF RID: 8111
500 public string levelBonus_L;
501
502 // Token: 0x04001FB0 RID: 8112
503 public string[] textAlt_L;
504
505 // Token: 0x04001FB1 RID: 8113
506 public string[] adjective_L;
507 }
508}
Definition Thing.cs:10