Elin Decompiled Documentation EA 23.181 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 6800:
33 case 8200:
34 continue;
35 }
36 if (row.idMold != 0 && !adv)
37 {
38 switch (row.aliasRef)
39 {
40 case "eleEther":
41 case "eleAcid":
42 case "eleCut":
43 case "eleImpact":
44 continue;
45 }
46 }
47 if (!row.tag.Contains("noRandomAbility"))
48 {
49 list.Add(row);
50 }
51 }
52 return list;
53 }
54
56 {
57 if (randomAbilities.Count == 0)
58 {
60 }
61 if (randomAbilitiesAdv.Count == 0)
62 {
64 }
65 if (!(owner.trait is TraitAdventurer))
66 {
67 return randomAbilities;
68 }
69 return randomAbilitiesAdv;
70 }
71
72 public CharaAbility(Chara _owner)
73 {
74 owner = _owner;
75 Refresh();
76 }
77
78 public void Refresh()
79 {
80 list.items.Clear();
81 string[] actCombat = owner.source.actCombat;
82 for (int i = 0; i < actCombat.Length; i++)
83 {
84 string[] array = actCombat[i].Split('/');
85 list.items.Add(new ActList.Item
86 {
87 act = ACT.dict[ConvertID(array[0])],
88 chance = ((array.Length > 1) ? array[1].ToInt() : 100),
89 pt = (array.Length > 2)
90 });
91 }
93 {
94 int num = owner.trait.MaxRandomAbility + EClass.rnd(2) - list.items.Count;
95 if (num > 1)
96 {
97 owner._listAbility = new List<int>();
98 for (int j = 0; j < num; j++)
99 {
100 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
101 }
102 }
103 }
104 if (owner._listAbility == null)
105 {
106 return;
107 }
108 foreach (int item in owner._listAbility)
109 {
110 string alias = EClass.sources.elements.map[Mathf.Abs(item)].alias;
111 list.items.Add(new ActList.Item
112 {
113 act = ACT.dict[alias],
114 chance = 50,
115 pt = (item < 0)
116 });
117 }
118 string ConvertID(string s)
119 {
121 {
122 return s;
123 }
124 if (EClass.sources.elements.alias[s].aliasRef == "mold")
125 {
126 return s + owner.MainElement.source.alias.Replace("ele", "");
127 }
128 return s;
129 }
130 }
131
132 public void Add(int id, int chance, bool pt)
133 {
134 if (owner._listAbility == null)
135 {
136 owner._listAbility = new List<int>();
137 }
138 owner._listAbility.Add(id * ((!pt) ? 1 : (-1)));
139 Refresh();
140 }
141
142 public void AddRandom()
143 {
144 if (owner._listAbility == null)
145 {
146 owner._listAbility = new List<int>();
147 }
148 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
149 Refresh();
150 }
151
152 public void Remove(int id)
153 {
154 owner._listAbility.Remove(id);
155 if (owner._listAbility.Count == 0)
156 {
157 owner._listAbility = null;
158 }
159 Refresh();
160 }
161
162 public bool Has(int id)
163 {
164 foreach (ActList.Item item in list.items)
165 {
166 if (item.act.id == id)
167 {
168 return true;
169 }
170 }
171 return false;
172 }
173}
List< Item > items
Definition: ActList.cs:14
static List< SourceElement.Row > randomAbilities
Definition: CharaAbility.cs:6
void Refresh()
Definition: CharaAbility.cs:78
List< SourceElement.Row > GetRandomAbilityList()
Definition: CharaAbility.cs:55
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:72
void AddRandom()
static List< SourceElement.Row > BuildRandomAbilityList(bool adv)
Definition: CharaAbility.cs:14
bool Has(int id)
Definition: Chara.cs:10
Element MainElement
Definition: Chara.cs:715
new TraitChara trait
Definition: Chara.cs:501
SourceChara.Row source
Definition: Chara.cs:156
List< int > _listAbility
Definition: Chara.cs:61
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:58
static SourceManager sources
Definition: EClass.cs:42
SourceElement.Row source
Definition: ELEMENT.cs:271
static Element Void
Definition: ELEMENT.cs:236
SourceElement elements
virtual int MaxRandomAbility
Definition: TraitChara.cs:97