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