Elin Decompiled Documentation EA 23.130 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 if (!row.tag.Contains("noRandomAbility"))
47 {
48 list.Add(row);
49 }
50 }
51 return list;
52 }
53
55 {
56 if (randomAbilities.Count == 0)
57 {
59 }
60 if (randomAbilitiesAdv.Count == 0)
61 {
63 }
64 if (!(owner.trait is TraitAdventurer))
65 {
66 return randomAbilities;
67 }
68 return randomAbilitiesAdv;
69 }
70
71 public CharaAbility(Chara _owner)
72 {
73 owner = _owner;
74 Refresh();
75 }
76
77 public void Refresh()
78 {
79 list.items.Clear();
80 string[] actCombat = owner.source.actCombat;
81 for (int i = 0; i < actCombat.Length; i++)
82 {
83 string[] array = actCombat[i].Split('/');
84 list.items.Add(new ActList.Item
85 {
86 act = ACT.dict[ConvertID(array[0])],
87 chance = ((array.Length > 1) ? array[1].ToInt() : 100),
88 pt = (array.Length > 2)
89 });
90 }
92 {
93 int num = owner.trait.MaxRandomAbility + EClass.rnd(2) - list.items.Count;
94 if (num > 1)
95 {
96 owner._listAbility = new List<int>();
97 for (int j = 0; j < num; j++)
98 {
99 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
100 }
101 }
102 }
103 if (owner._listAbility == null)
104 {
105 return;
106 }
107 foreach (int item in owner._listAbility)
108 {
109 string alias = EClass.sources.elements.map[Mathf.Abs(item)].alias;
110 list.items.Add(new ActList.Item
111 {
112 act = ACT.dict[alias],
113 chance = 50,
114 pt = (item < 0)
115 });
116 }
117 string ConvertID(string s)
118 {
120 {
121 return s;
122 }
123 if (EClass.sources.elements.alias[s].aliasRef == "mold")
124 {
125 return s + owner.MainElement.source.alias.Replace("ele", "");
126 }
127 return s;
128 }
129 }
130
131 public void Add(int id, int chance, bool pt)
132 {
133 if (owner._listAbility == null)
134 {
135 owner._listAbility = new List<int>();
136 }
137 owner._listAbility.Add(id * ((!pt) ? 1 : (-1)));
138 Refresh();
139 }
140
141 public void AddRandom()
142 {
143 if (owner._listAbility == null)
144 {
145 owner._listAbility = new List<int>();
146 }
147 owner._listAbility.Add(GetRandomAbilityList().RandomItemWeighted((SourceElement.Row e) => e.chance).id);
148 Refresh();
149 }
150
151 public void Remove(int id)
152 {
153 owner._listAbility.Remove(id);
154 if (owner._listAbility.Count == 0)
155 {
156 owner._listAbility = null;
157 }
158 Refresh();
159 }
160}
List< Item > items
Definition: ActList.cs:14
static List< SourceElement.Row > randomAbilities
Definition: CharaAbility.cs:6
void Refresh()
Definition: CharaAbility.cs:77
List< SourceElement.Row > GetRandomAbilityList()
Definition: CharaAbility.cs:54
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:71
void AddRandom()
static List< SourceElement.Row > BuildRandomAbilityList(bool adv)
Definition: CharaAbility.cs:14
Definition: Chara.cs:10
Element MainElement
Definition: Chara.cs:707
new TraitChara trait
Definition: Chara.cs:493
SourceChara.Row source
Definition: Chara.cs:148
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:269
static Element Void
Definition: ELEMENT.cs:234
SourceElement elements
virtual int MaxRandomAbility
Definition: TraitChara.cs:97