package handling.world.party; import client.MapleCharacter; import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import server.MapleStatEffect; public class MapleParty implements Serializable { private static final long serialVersionUID = 9179541993413738569L; private MaplePartyCharacter leader; private List<MaplePartyCharacter> members = new LinkedList(); private int id; private int expeditionLink = -1; private boolean disbanded = false; private boolean 非公开组队; private String 组队名称; private Map<Integer, Map<Integer, List<Integer>>> partyBuffs = new HashMap(); public MapleParty(int id, MaplePartyCharacter chrfor, boolean 非公开组队, String 组队名称) { this.leader = chrfor; this.members.add(this.leader); this.id = id; this.非公开组队 = 非公开组队; this.组队名称 = 组队名称; } public MapleParty(int id, MaplePartyCharacter chrfor, int expeditionLink) { this.leader = chrfor; this.members.add(this.leader); this.id = id; this.expeditionLink = expeditionLink; } public boolean containsMembers(MaplePartyCharacter member) { return this.members.contains(member); } public void addMember(MaplePartyCharacter member) { this.members.add(member); } public void removeMember(MaplePartyCharacter member) { this.members.remove(member); cancelAllPartyBuffsByChr(member.getId()); } public void updateMember(MaplePartyCharacter member) { for (int i = 0; i < this.members.size(); i++) { MaplePartyCharacter chr = (MaplePartyCharacter) this.members.get(i); if (chr.equals(member)) { this.members.set(i, member); } } } public MaplePartyCharacter getMemberById(int id) { for (MaplePartyCharacter chr : this.members) { if (chr.getId() == id) { return chr; } } return null; } public int getAverageLevel(MapleCharacter chr) { int Averagelevel = 0; for (MaplePartyCharacter bchr : this.members) { /*if (chr.getMapId() != bchr.getMapid()) { continue; }*/ Averagelevel += bchr.getLevel(); } return Averagelevel; } public MaplePartyCharacter getMemberByIndex(int index) { return (MaplePartyCharacter) this.members.get(index); } public Collection<MaplePartyCharacter> getMembers() { return new LinkedList(this.members); } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public MaplePartyCharacter getLeader() { return this.leader; } public void setLeader(MaplePartyCharacter nLeader) { this.leader = nLeader; } public int getExpeditionId() { return this.expeditionLink; } @Override public int hashCode() { int prime = 31; int result = 1; result = 31 * result + this.id; return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } MapleParty other = (MapleParty) obj; return this.id == other.id; } public boolean isDisbanded() { return this.disbanded; } public void disband() { this.disbanded = true; } public String getName() { return 组队名称; } public void setName(String name) { 组队名称 = name; } public boolean is非公开组队() { return 非公开组队; } public void set非公开组队(boolean 非公开组队) { this.非公开组队 = 非公开组队; } public void givePartyBuff(int buffId, int applyfrom, int applyto) { if (partyBuffs.containsKey(buffId)) { if (partyBuffs.get(buffId).containsKey(applyfrom)) { if (!partyBuffs.get(buffId).keySet().isEmpty()) { for (Integer from : partyBuffs.get(buffId).keySet()) { if (partyBuffs.get(buffId).get(from).contains(applyto)) { partyBuffs.get(buffId).get(from).remove(partyBuffs.get(buffId).get(from).indexOf(applyto)); } if (partyBuffs.get(buffId).get(from).isEmpty()) { partyBuffs.get(buffId).remove(from); } } } if (partyBuffs != null && !partyBuffs.get(buffId).get(applyfrom).contains(applyto)) { partyBuffs.get(buffId).get(applyfrom).add(applyto); } } else { ArrayList applytos = new ArrayList(); applytos.add(applyto); partyBuffs.get(buffId).put(applyfrom, applytos); } } else { Map<Integer, List<Integer>> hMap = new HashMap(); ArrayList applytos = new ArrayList(); applytos.add(applyto); hMap.put(applyfrom, applytos); partyBuffs.put(buffId, hMap); } } public int getPartyBuffs(int applyfrom) { ArrayList chrs = new ArrayList(); for (Map<Integer, List<Integer>> buffs : partyBuffs.values()) { if (buffs.containsKey(applyfrom)) { for (List<Integer> applytos : buffs.values()) { for (int i : applytos) { if (!chrs.contains(i)) { chrs.add(i); } } } } } return chrs.size(); } public int cancelPartyBuff(int buffId, int cancelby) { if (partyBuffs.containsKey(buffId)) { if (partyBuffs.get(buffId).isEmpty()) { partyBuffs.remove(buffId); } else { for (Integer applyfrom : partyBuffs.get(buffId).keySet()) { if (partyBuffs.get(buffId).get(applyfrom).isEmpty()) { partyBuffs.get(buffId).remove(applyfrom); } else if (partyBuffs.get(buffId).get(applyfrom).contains(cancelby)) { partyBuffs.get(buffId).get(applyfrom).remove(partyBuffs.get(buffId).get(applyfrom).indexOf(cancelby)); return applyfrom; } } } } return -1; } public void cancelAllPartyBuffsByChr(int cancelby) { if (partyBuffs.isEmpty()) { return; } try { for (Integer buffId : partyBuffs.keySet()) { if (partyBuffs.get(buffId).isEmpty()) { partyBuffs.remove(buffId); } else { for (Integer applyfrom : partyBuffs.get(buffId).keySet()) { if (partyBuffs.get(buffId).get(applyfrom).isEmpty() || applyfrom == cancelby) { partyBuffs.get(buffId).remove(applyfrom); MapleCharacter chr = MapleCharacter.getOnlineCharacterById(applyfrom); if (applyfrom == cancelby && chr != null) { // MapleStatEffect.apply祈祷众生(chr); } } else if (partyBuffs.get(buffId).get(applyfrom).contains(cancelby)) { partyBuffs.get(buffId).get(applyfrom).remove(partyBuffs.get(buffId).get(applyfrom).indexOf(cancelby)); MapleCharacter chr = MapleCharacter.getOnlineCharacterById(applyfrom); if (chr != null) { // MapleStatEffect.apply祈祷众生(chr); } } } } } } catch (Exception e) { } } }