Elin Decompiled Documentation EA 23.339.0 Nightly
Loading...
Searching...
No Matches
Party.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using Newtonsoft.Json;
4using UnityEngine;
5
6public class Party : EClass
7{
8 [JsonProperty]
9 public int uidLeader;
10
11 [JsonProperty]
12 public List<int> uidMembers = new List<int>();
13
14 public List<Chara> _members;
15
16 public RefChara refLeader = new RefChara();
17
18 public List<Chara> members
19 {
20 get
21 {
22 if (_members != null)
23 {
24 return _members;
25 }
26 return SetMembers();
27 }
28 }
29
31 {
32 get
33 {
35 }
36 set
37 {
38 refLeader.Set(ref uidLeader, value);
39 }
40 }
41
42 public List<Chara> SetMembers()
43 {
44 _members = new List<Chara>();
45 HashSet<int> hashSet = new HashSet<int>();
46 foreach (int uidMember in uidMembers)
47 {
48 if (!hashSet.Contains(uidMember))
49 {
50 Chara chara = RefChara.Get(uidMember);
51 if (chara != null)
52 {
53 hashSet.Add(uidMember);
54 members.Add(chara);
55 }
56 }
57 }
58 return _members;
59 }
60
61 public int Count()
62 {
63 int num = members.Count;
64 foreach (Chara member in members)
65 {
66 num += member.Evalue(1431);
67 }
68 return num;
69 }
70
71 public void AddMemeber(Chara c, bool showMsg = false)
72 {
73 if (c.party == this)
74 {
75 return;
76 }
77 if (!c.IsGlobal)
78 {
79 Debug.LogError("exception: " + c?.ToString() + " is not global chara");
80 }
81 members.Add(c);
82 uidMembers.Add(c.uid);
83 c.party = this;
84 c.isSale = false;
85 c.SetBool(18, enable: false);
86 if (c.homeBranch != null)
87 {
91 if (c.homeBranch.owner.map != null)
92 {
93 c.homeBranch.owner.map.props.sales.Remove(c);
94 }
95 }
96 if (showMsg)
97 {
98 Msg.Say("party_join", c.Name);
99 SE.Play("party_join");
100 }
102 }
103
104 public Chara Find(string id)
105 {
106 foreach (Chara member in members)
107 {
108 if (member.id == id)
109 {
110 return member;
111 }
112 }
113 return null;
114 }
115
116 public void RemoveMember(Chara c)
117 {
118 if (c.host != null)
119 {
120 ActRide.Unride(c.host, c.host.parasite == c, talk: false);
121 }
122 members.Remove(c);
123 uidMembers.Remove(c.uid);
124 c.party = null;
125 c.c_wasInPcParty = false;
126 c.SetDirtySpeed();
127 if (c.homeBranch != null)
128 {
131 }
133 }
134
135 public void Replace(Chara c, int index)
136 {
137 members.Remove(c);
138 uidMembers.Remove(c.uid);
139 members.Insert(index, c);
140 uidMembers.Insert(index, c.uid);
141 }
142
143 public void SetLeader(Chara c)
144 {
145 leader = c;
146 }
147
148 public Element GetPartySkill(int ele)
149 {
150 return GetBestSkill(ele);
151 }
152
153 public void ModExp(int ele, int a)
154 {
155 foreach (Chara member in members)
156 {
157 member.ModExp(ele, a);
158 }
159 }
160
161 public Element GetBestSkill(int ele)
162 {
163 Element element = Element.Create(ele);
164 foreach (Chara member in members)
165 {
166 if (member.IsAliveInCurrentZone && member.Evalue(ele) > element.Value)
167 {
168 element = member.elements.GetElement(ele);
169 }
170 }
171 return element;
172 }
173
174 public bool IsCriticallyWounded(bool includePc = false)
175 {
176 foreach (Chara member in members)
177 {
178 if ((!includePc || !member.IsPC) && member.IsCriticallyWounded())
179 {
180 return true;
181 }
182 }
183 return false;
184 }
185
186 public int EvalueBest(int ele)
187 {
188 int num = 0;
189 foreach (Chara member in members)
190 {
191 if (member.Evalue(ele) > num)
192 {
193 num = member.Evalue(ele);
194 }
195 }
196 return num;
197 }
198
199 public int EvalueTotal(int ele, Func<Chara, bool> funcIf = null)
200 {
201 int num = 0;
202 foreach (Chara member in members)
203 {
204 if (funcIf == null || funcIf(member))
205 {
206 num += member.Evalue(ele);
207 }
208 }
209 return num;
210 }
211
212 public bool HasElement(int ele, bool excludePC = false)
213 {
214 foreach (Chara member in members)
215 {
216 if ((!excludePC || !member.IsPC) && member.HasElement(ele))
217 {
218 return true;
219 }
220 }
221 return false;
222 }
223
224 public void RegisterSetup(int index)
225 {
226 Player.PartySetup partySetup = new Player.PartySetup();
227 foreach (Chara member in members)
228 {
229 partySetup.uids.Add(member.uid);
230 if (member == EClass.pc.ride)
231 {
232 partySetup.ride = member.uid;
233 }
234 if (member == EClass.pc.parasite)
235 {
236 partySetup.parasite = member.uid;
237 }
238 }
239 EClass.player.partySetups[index] = partySetup;
240 }
241
242 public void Disband()
243 {
244 foreach (Chara item in members.Copy())
245 {
246 if (!item.IsPC)
247 {
249 if (item.homeZone != EClass._zone)
250 {
251 item.MoveZone(item.homeZone);
252 }
253 }
254 }
255 }
256}
static void Unride(Chara host, Chara mount, bool talk=true)
Definition: ActRide.cs:107
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
string Name
Definition: Card.cs:2191
int uid
Definition: Card.cs:125
int Evalue(int ele)
Definition: Card.cs:2704
void ModExp(string alias, int a)
Definition: Card.cs:2781
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3254
void SetBool(string id, bool enable)
Definition: Card.cs:2562
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6376
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
void SetDirtySpeed()
Definition: Chara.cs:2040
bool IsCriticallyWounded(bool includeRide=false)
Definition: Chara.cs:1236
void RefreshWorkElements(ElementContainer parent=null)
Definition: Chara.cs:9563
override bool IsPC
Definition: Chara.cs:630
Chara host
Definition: Chara.cs:33
override bool IsGlobal
Definition: Chara.cs:628
Party party
Definition: Chara.cs:43
Chara parasite
Definition: Chara.cs:30
Chara ride
Definition: Chara.cs:27
FactionBranch homeBranch
Definition: Chara.cs:1113
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:21
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
Element GetElement(string alias)
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1131
void RefreshEfficiency()
PolicyManager policies
ElementContainerZone elements
PropsManager props
Definition: Map.cs:91
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Party.cs:7
Element GetBestSkill(int ele)
Definition: Party.cs:161
int uidLeader
Definition: Party.cs:9
bool HasElement(int ele, bool excludePC=false)
Definition: Party.cs:212
Chara Find(string id)
Definition: Party.cs:104
Element GetPartySkill(int ele)
Definition: Party.cs:148
List< Chara > _members
Definition: Party.cs:14
void Disband()
Definition: Party.cs:242
int EvalueTotal(int ele, Func< Chara, bool > funcIf=null)
Definition: Party.cs:199
RefChara refLeader
Definition: Party.cs:16
List< Chara > SetMembers()
Definition: Party.cs:42
List< int > uidMembers
Definition: Party.cs:12
void Replace(Chara c, int index)
Definition: Party.cs:135
void RemoveMember(Chara c)
Definition: Party.cs:116
void ModExp(int ele, int a)
Definition: Party.cs:153
int Count()
Definition: Party.cs:61
bool IsCriticallyWounded(bool includePc=false)
Definition: Party.cs:174
Chara leader
Definition: Party.cs:31
List< Chara > members
Definition: Party.cs:19
int EvalueBest(int ele)
Definition: Party.cs:186
void AddMemeber(Chara c, bool showMsg=false)
Definition: Party.cs:71
void RegisterSetup(int index)
Definition: Party.cs:224
void SetLeader(Chara c)
Definition: Party.cs:143
List< int > uids
Definition: Player.cs:921
Definition: Player.cs:11
PartySetup[] partySetups
Definition: Player.cs:1203
List< Card > sales
Definition: PropsManager.cs:14
static Chara Get(int uid)
Definition: RefChara.cs:36
Chara GetAndCache(int uid)
Definition: RefChara.cs:5
void Set(ref int val, Chara c)
Definition: RefChara.cs:30
static void SetDirty()
Map map
Definition: Zone.cs:63