Elin Decompiled Documentation EA 23.201 Nightly
Loading...
Searching...
No Matches
Party.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using Newtonsoft.Json;
3using UnityEngine;
4
5public class Party : EClass
6{
7 [JsonProperty]
8 public int uidLeader;
9
10 [JsonProperty]
11 public List<int> uidMembers = new List<int>();
12
13 public List<Chara> _members;
14
15 public RefChara refLeader = new RefChara();
16
17 public List<Chara> members
18 {
19 get
20 {
21 if (_members != null)
22 {
23 return _members;
24 }
25 return SetMembers();
26 }
27 }
28
30 {
31 get
32 {
34 }
35 set
36 {
37 refLeader.Set(ref uidLeader, value);
38 }
39 }
40
41 public List<Chara> SetMembers()
42 {
43 _members = new List<Chara>();
44 HashSet<int> hashSet = new HashSet<int>();
45 foreach (int uidMember in uidMembers)
46 {
47 if (!hashSet.Contains(uidMember))
48 {
49 hashSet.Add(uidMember);
50 members.Add(RefChara.Get(uidMember));
51 }
52 }
53 return _members;
54 }
55
56 public void AddMemeber(Chara c, bool showMsg = false)
57 {
58 if (c.party == this)
59 {
60 return;
61 }
62 if (!c.IsGlobal)
63 {
64 Debug.LogError("exception: " + c?.ToString() + " is not global chara");
65 }
66 members.Add(c);
67 uidMembers.Add(c.uid);
68 c.party = this;
69 c.isSale = false;
70 c.SetBool(18, enable: false);
71 if (c.homeBranch != null)
72 {
76 if (c.homeBranch.owner.map != null)
77 {
78 c.homeBranch.owner.map.props.sales.Remove(c);
79 }
80 }
81 if (showMsg)
82 {
83 Msg.Say("party_join", c.Name);
84 SE.Play("party_join");
85 }
87 }
88
89 public Chara Find(string id)
90 {
91 foreach (Chara member in members)
92 {
93 if (member.id == id)
94 {
95 return member;
96 }
97 }
98 return null;
99 }
100
101 public void RemoveMember(Chara c)
102 {
103 if (c.host != null)
104 {
105 ActRide.Unride(c.host, c.host.parasite == c);
106 }
107 members.Remove(c);
108 uidMembers.Remove(c.uid);
109 c.party = null;
110 c.c_wasInPcParty = false;
111 c.SetDirtySpeed();
112 if (c.homeBranch != null)
113 {
116 }
118 }
119
120 public void Replace(Chara c, int index)
121 {
122 members.Remove(c);
123 uidMembers.Remove(c.uid);
124 members.Insert(index, c);
125 uidMembers.Insert(index, c.uid);
126 }
127
128 public void SetLeader(Chara c)
129 {
130 leader = c;
131 }
132
133 public Element GetPartySkill(int ele)
134 {
135 return GetBestSkill(ele);
136 }
137
138 public void ModExpPartySkill(int ele, int a)
139 {
140 }
141
142 public Element GetBestSkill(int ele)
143 {
144 Element element = Element.Create(ele);
145 foreach (Chara member in members)
146 {
147 if (member.IsAliveInCurrentZone && member.Evalue(ele) > element.Value)
148 {
149 element = member.elements.GetElement(ele);
150 }
151 }
152 return element;
153 }
154
155 public bool IsCriticallyWounded(bool includePc = false)
156 {
157 foreach (Chara member in members)
158 {
159 if ((!includePc || !member.IsPC) && member.IsCriticallyWounded())
160 {
161 return true;
162 }
163 }
164 return false;
165 }
166
167 public int EValue(int ele)
168 {
169 int num = 0;
170 foreach (Chara member in members)
171 {
172 if (member.Evalue(ele) > num)
173 {
174 num = member.Evalue(ele);
175 }
176 }
177 return num;
178 }
179
180 public bool HasElement(int ele)
181 {
182 foreach (Chara member in members)
183 {
184 if (member.HasElement(ele))
185 {
186 return true;
187 }
188 }
189 return false;
190 }
191
192 public int Count()
193 {
194 int num = 0;
195 foreach (Chara member in members)
196 {
197 if (!member.isDead)
198 {
199 num++;
200 }
201 }
202 return num;
203 }
204}
static void Unride(Chara host, Chara mount, bool talk=true)
Definition: ActRide.cs:102
void SetBool(int id, bool enable)
Definition: BaseCard.cs:20
ElementContainerCard elements
Definition: Card.cs:39
string id
Definition: Card.cs:33
bool HasElement(int ele, int req=1)
Definition: Card.cs:5725
string Name
Definition: Card.cs:2099
int uid
Definition: Card.cs:120
int Evalue(int ele)
Definition: Card.cs:2533
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:559
void SetDirtySpeed()
Definition: Chara.cs:1815
bool IsCriticallyWounded(bool includeRide=false)
Definition: Chara.cs:1159
void RefreshWorkElements(ElementContainer parent=null)
Definition: Chara.cs:8666
override bool IsPC
Definition: Chara.cs:610
Chara host
Definition: Chara.cs:33
override bool IsGlobal
Definition: Chara.cs:608
Party party
Definition: Chara.cs:43
Chara parasite
Definition: Chara.cs:30
FactionBranch homeBranch
Definition: Chara.cs:1052
bool isDead
Definition: Chara.cs:387
Definition: EClass.cs:5
Element GetElement(string alias)
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1100
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:6
Element GetBestSkill(int ele)
Definition: Party.cs:142
int uidLeader
Definition: Party.cs:8
Chara Find(string id)
Definition: Party.cs:89
Element GetPartySkill(int ele)
Definition: Party.cs:133
List< Chara > _members
Definition: Party.cs:13
RefChara refLeader
Definition: Party.cs:15
List< Chara > SetMembers()
Definition: Party.cs:41
List< int > uidMembers
Definition: Party.cs:11
void Replace(Chara c, int index)
Definition: Party.cs:120
void RemoveMember(Chara c)
Definition: Party.cs:101
int Count()
Definition: Party.cs:192
bool IsCriticallyWounded(bool includePc=false)
Definition: Party.cs:155
Chara leader
Definition: Party.cs:30
bool HasElement(int ele)
Definition: Party.cs:180
void ModExpPartySkill(int ele, int a)
Definition: Party.cs:138
List< Chara > members
Definition: Party.cs:18
int EValue(int ele)
Definition: Party.cs:167
void AddMemeber(Chara c, bool showMsg=false)
Definition: Party.cs:56
void SetLeader(Chara c)
Definition: Party.cs:128
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:60