Elin Decompiled Documentation EA 23.286 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 hashSet.Add(uidMember);
51 members.Add(RefChara.Get(uidMember));
52 }
53 }
54 return _members;
55 }
56
57 public void AddMemeber(Chara c, bool showMsg = false)
58 {
59 if (c.party == this)
60 {
61 return;
62 }
63 if (!c.IsGlobal)
64 {
65 Debug.LogError("exception: " + c?.ToString() + " is not global chara");
66 }
67 members.Add(c);
68 uidMembers.Add(c.uid);
69 c.party = this;
70 c.isSale = false;
71 c.SetBool(18, enable: false);
72 if (c.homeBranch != null)
73 {
77 if (c.homeBranch.owner.map != null)
78 {
79 c.homeBranch.owner.map.props.sales.Remove(c);
80 }
81 }
82 if (showMsg)
83 {
84 Msg.Say("party_join", c.Name);
85 SE.Play("party_join");
86 }
88 }
89
90 public Chara Find(string id)
91 {
92 foreach (Chara member in members)
93 {
94 if (member.id == id)
95 {
96 return member;
97 }
98 }
99 return null;
100 }
101
102 public void RemoveMember(Chara c)
103 {
104 if (c.host != null)
105 {
106 ActRide.Unride(c.host, c.host.parasite == c, talk: false);
107 }
108 members.Remove(c);
109 uidMembers.Remove(c.uid);
110 c.party = null;
111 c.c_wasInPcParty = false;
112 c.SetDirtySpeed();
113 if (c.homeBranch != null)
114 {
117 }
119 }
120
121 public void Replace(Chara c, int index)
122 {
123 members.Remove(c);
124 uidMembers.Remove(c.uid);
125 members.Insert(index, c);
126 uidMembers.Insert(index, c.uid);
127 }
128
129 public void SetLeader(Chara c)
130 {
131 leader = c;
132 }
133
134 public Element GetPartySkill(int ele)
135 {
136 return GetBestSkill(ele);
137 }
138
139 public void ModExp(int ele, int a)
140 {
141 foreach (Chara member in members)
142 {
143 member.ModExp(ele, a);
144 }
145 }
146
147 public Element GetBestSkill(int ele)
148 {
149 Element element = Element.Create(ele);
150 foreach (Chara member in members)
151 {
152 if (member.IsAliveInCurrentZone && member.Evalue(ele) > element.Value)
153 {
154 element = member.elements.GetElement(ele);
155 }
156 }
157 return element;
158 }
159
160 public bool IsCriticallyWounded(bool includePc = false)
161 {
162 foreach (Chara member in members)
163 {
164 if ((!includePc || !member.IsPC) && member.IsCriticallyWounded())
165 {
166 return true;
167 }
168 }
169 return false;
170 }
171
172 public int EvalueBest(int ele)
173 {
174 int num = 0;
175 foreach (Chara member in members)
176 {
177 if (member.Evalue(ele) > num)
178 {
179 num = member.Evalue(ele);
180 }
181 }
182 return num;
183 }
184
185 public int EvalueTotal(int ele, Func<Chara, bool> funcIf = null)
186 {
187 int num = 0;
188 foreach (Chara member in members)
189 {
190 if (funcIf == null || funcIf(member))
191 {
192 num += member.Evalue(ele);
193 }
194 }
195 return num;
196 }
197
198 public bool HasElement(int ele, bool excludePC = false)
199 {
200 foreach (Chara member in members)
201 {
202 if ((!excludePC || !member.IsPC) && member.HasElement(ele))
203 {
204 return true;
205 }
206 }
207 return false;
208 }
209
210 public int Count()
211 {
212 int num = 0;
213 foreach (Chara member in members)
214 {
215 if (!member.isDead)
216 {
217 num++;
218 }
219 }
220 return num;
221 }
222
223 public void RegisterSetup(int index)
224 {
225 Player.PartySetup partySetup = new Player.PartySetup();
226 foreach (Chara member in members)
227 {
228 partySetup.uids.Add(member.uid);
229 if (member == EClass.pc.ride)
230 {
231 partySetup.ride = member.uid;
232 }
233 if (member == EClass.pc.parasite)
234 {
235 partySetup.parasite = member.uid;
236 }
237 }
238 EClass.player.partySetups[index] = partySetup;
239 }
240
241 public void Disband()
242 {
243 foreach (Chara item in members.Copy())
244 {
245 if (!item.IsPC)
246 {
248 if (item.homeZone != EClass._zone)
249 {
250 item.MoveZone(item.homeZone);
251 }
252 }
253 }
254 }
255}
static void Unride(Chara host, Chara mount, bool talk=true)
Definition: ActRide.cs:107
void SetBool(int id, bool enable)
Definition: BaseCard.cs:20
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
string Name
Definition: Card.cs:2177
int uid
Definition: Card.cs:123
int Evalue(int ele)
Definition: Card.cs:2611
void ModExp(string alias, int a)
Definition: Card.cs:2688
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6122
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
void SetDirtySpeed()
Definition: Chara.cs:1896
bool IsCriticallyWounded(bool includeRide=false)
Definition: Chara.cs:1203
void RefreshWorkElements(ElementContainer parent=null)
Definition: Chara.cs:9211
override bool IsPC
Definition: Chara.cs:626
Chara host
Definition: Chara.cs:33
override bool IsGlobal
Definition: Chara.cs:624
Party party
Definition: Chara.cs:43
Chara parasite
Definition: Chara.cs:30
Chara ride
Definition: Chara.cs:27
FactionBranch homeBranch
Definition: Chara.cs:1080
bool isDead
Definition: Chara.cs:391
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:1115
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:147
int uidLeader
Definition: Party.cs:9
bool HasElement(int ele, bool excludePC=false)
Definition: Party.cs:198
Chara Find(string id)
Definition: Party.cs:90
Element GetPartySkill(int ele)
Definition: Party.cs:134
List< Chara > _members
Definition: Party.cs:14
void Disband()
Definition: Party.cs:241
int EvalueTotal(int ele, Func< Chara, bool > funcIf=null)
Definition: Party.cs:185
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:121
void RemoveMember(Chara c)
Definition: Party.cs:102
void ModExp(int ele, int a)
Definition: Party.cs:139
int Count()
Definition: Party.cs:210
bool IsCriticallyWounded(bool includePc=false)
Definition: Party.cs:160
Chara leader
Definition: Party.cs:31
List< Chara > members
Definition: Party.cs:19
int EvalueBest(int ele)
Definition: Party.cs:172
void AddMemeber(Chara c, bool showMsg=false)
Definition: Party.cs:57
void RegisterSetup(int index)
Definition: Party.cs:223
void SetLeader(Chara c)
Definition: Party.cs:129
List< int > uids
Definition: Player.cs:897
Definition: Player.cs:11
PartySetup[] partySetups
Definition: Player.cs:1179
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