Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
CharaAbility.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4public class CharaAbility : EClass
5{
6 public static List<SourceElement.Row> randomAbilities = new List<SourceElement.Row>();
7
8 public static List<SourceElement.Row> randomAbilitiesAdv = new List<SourceElement.Row>();
9
10 public Chara owner;
11
12 public ActList list = new ActList();
13
14 public static List<SourceElement.Row> BuildRandomAbilityList(bool adv)
15 {
16 List<SourceElement.Row> list = new List<SourceElement.Row>();
17 foreach (SourceElement.Row row in EClass.sources.elements.rows)
18 {
19 if (row.abilityType.Length == 0 || row.aliasRef == "mold")
20 {
21 continue;
22 }
23 switch (row.id)
24 {
25 case 5000:
26 case 5001:
27 case 5005:
28 case 5040:
29 case 5048:
30 case 6400:
31 case 6410:
32 case 8200:
33 continue;
34 }
35 if (row.idMold != 0 && !adv)
36 {
37 switch (row.aliasRef)
38 {
39 case "eleEther":
40 case "eleAcid":
41 case "eleCut":
42 case "eleImpact":
43 continue;
44 }
45 }
46 list.Add(row);
47 }
48 return list;
49 }
50
52 {
53 if (randomAbilities.Count == 0)
54 {
56 }
57 if (randomAbilitiesAdv.Count == 0)
58 {
60 }
61 if (!(owner.trait is TraitAdventurer))
62 {
63 return randomAbilities;
64 }
65 return randomAbilitiesAdv;
66 }
67
68 public CharaAbility(Chara _owner)
69 {
70 owner = _owner;
71 Refresh();
72 }
73
74 public void Refresh()
75 {
76 list.items.Clear();
77 string[] actCombat = owner.source.actCombat;
78 for (int i = 0; i < actCombat.Length; i++)
79 {
80 string[] array = actCombat[i].Split('/');
81 list.items.Add(new ActList.Item
82 {
83 act = ACT.dict[ConvertID(array[0])],
84 chance = ((array.Length > 1) ? array[1].ToInt() : 100),
85 pt = (array.Length > 2)
86 });
87 }
89 {
90 int num = owner.trait.MaxRandomAbility + EClass.rnd(2) - list.items.Count;
91 if (num > 1)
92 {
93 owner._listAbility = new List<int>();
94 for (int j = 0; j < num; j++)
95 {
96 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
97 }
98 }
99 }
100 if (owner._listAbility == null)
101 {
102 return;
103 }
104 foreach (int item in owner._listAbility)
105 {
106 string alias = EClass.sources.elements.map[Mathf.Abs(item)].alias;
107 list.items.Add(new ActList.Item
108 {
109 act = ACT.dict[alias],
110 chance = 50,
111 pt = (item < 0)
112 });
113 }
114 string ConvertID(string s)
115 {
117 {
118 return s;
119 }
120 if (EClass.sources.elements.alias[s].aliasRef == "mold")
121 {
122 return s + owner.MainElement.source.alias.Replace("ele", "");
123 }
124 return s;
125 }
126 }
127
129 {
130 foreach (SourceElement.Row row in EClass.sources.elements.rows)
131 {
132 if (row.abilityType.Length == 0 || row.aliasRef == "mold")
133 {
134 continue;
135 }
136 switch (row.id)
137 {
138 case 5000:
139 case 5001:
140 case 5005:
141 case 5040:
142 case 5048:
143 case 6400:
144 case 6410:
145 case 8200:
146 continue;
147 }
148 if (row.idMold != 0 && !(owner.trait is TraitAdventurer))
149 {
150 switch (row.aliasRef)
151 {
152 case "eleEther":
153 case "eleAcid":
154 case "eleCut":
155 case "eleImpact":
156 continue;
157 }
158 }
159 randomAbilities.Add(row);
160 }
161 }
162
163 public void Add(int id, int chance, bool pt)
164 {
165 if (owner._listAbility == null)
166 {
167 owner._listAbility = new List<int>();
168 }
169 owner._listAbility.Add(id * ((!pt) ? 1 : (-1)));
170 Refresh();
171 }
172
173 public void AddRandom()
174 {
175 if (owner._listAbility == null)
176 {
177 owner._listAbility = new List<int>();
178 }
179 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
180 Refresh();
181 }
182
183 public void Remove(int id)
184 {
185 owner._listAbility.Remove(id);
186 if (owner._listAbility.Count == 0)
187 {
188 owner._listAbility = null;
189 }
190 Refresh();
191 }
192}
List< Item > items
Definition: ActList.cs:14
static List< SourceElement.Row > randomAbilities
Definition: CharaAbility.cs:6
void Refresh()
Definition: CharaAbility.cs:74
List< SourceElement.Row > GetRandomAbilityList()
Definition: CharaAbility.cs:51
ActList list
Definition: CharaAbility.cs:12
static List< SourceElement.Row > randomAbilitiesAdv
Definition: CharaAbility.cs:8
void Add(int id, int chance, bool pt)
void Remove(int id)
CharaAbility(Chara _owner)
Definition: CharaAbility.cs:68
void BuildRandomAbilityList()
void AddRandom()
static List< SourceElement.Row > BuildRandomAbilityList(bool adv)
Definition: CharaAbility.cs:14
Definition: Chara.cs:10
Element MainElement
Definition: Chara.cs:702
new TraitChara trait
Definition: Chara.cs:488
SourceChara.Row source
Definition: Chara.cs:143
List< int > _listAbility
Definition: Chara.cs:61
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static SourceManager sources
Definition: EClass.cs:42
SourceElement.Row source
Definition: ELEMENT.cs:263
static Element Void
Definition: ELEMENT.cs:228
SourceElement elements
virtual int MaxRandomAbility
Definition: TraitChara.cs:97