package handling.channel.handler; import client.MapleCharacter; import client.MapleClient; import constants.GameConstants; import handling.channel.ChannelServer; import handling.world.MapleParty; import handling.world.MaplePartyCharacter; import handling.world.PartyOperation; import handling.world.World; import handling.world.exped.ExpeditionType; import handling.world.exped.MapleExpedition; import handling.world.exped.PartySearch; import handling.world.exped.PartySearchType; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import server.maps.Event_DojoAgent; import server.maps.FieldLimitType; import server.quest.MapleQuest; import tools.data.LittleEndianAccessor; import tools.packet.CWvsContext; public class PartyHandler { public static final void DenyPartyRequest(LittleEndianAccessor slea, MapleClient c) { int action = slea.readByte(); if ((action == 50)) { MapleCharacter chr = c.getPlayer().getMap().getCharacterById(slea.readInt()); if ((chr != null) && (chr.getParty() == null) && (c.getPlayer().getParty() != null) && (c.getPlayer().getParty().getLeader().getId() == c.getPlayer().getId()) && (c.getPlayer().getParty().getMembers().size() < 8) && (c.getPlayer().getParty().getExpeditionId() <= 0) && (chr.getQuestNoAdd(MapleQuest.getInstance(122901)) == null) && (c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(122900)) == null)) { chr.setParty(c.getPlayer().getParty()); World.Party.updateParty(c.getPlayer().getParty().getId(), PartyOperation.JOIN, new MaplePartyCharacter(chr)); chr.receivePartyMemberHP(); chr.updatePartyMemberHP(); } return; } int partyid = slea.readInt(); if ((c.getPlayer().getParty() == null) && (c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(122901)) == null)) { MapleParty party = World.Party.getParty(partyid); if (party != null) { if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if (action == 35) {//was 31 // 35== inv if (party.getMembers().size() < 8) { c.getPlayer().setParty(party); World.Party.updateParty(partyid, PartyOperation.JOIN, new MaplePartyCharacter(c.getPlayer())); c.getPlayer().receivePartyMemberHP(); c.getPlayer().updatePartyMemberHP(); } else { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(22, null)); } } else if (action != 30) {//30 == party join MapleCharacter cfrom = c.getChannelServer().getPlayerStorage().getCharacterById(party.getLeader().getId()); if (cfrom != null) { cfrom.getClient().getSession().write(CWvsContext.PartyPacket.partyStatusMessage(23, c.getPlayer().getName())); } } } else { c.getPlayer().dropMessage(5, "The party you are trying to join does not exist"); } } else { c.getPlayer().dropMessage(5, "You can't join the party as you are already in one"); } } public static final void PartyOperation(LittleEndianAccessor slea, MapleClient c) { int operation = slea.readByte(); MapleParty party = c.getPlayer().getParty(); MaplePartyCharacter partyplayer = new MaplePartyCharacter(c.getPlayer()); switch (operation) { case 1: if (party == null) { party = World.Party.createParty(partyplayer); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); } else { if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if ((partyplayer.equals(party.getLeader())) && (party.getMembers().size() == 1)) { c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); } else { c.getPlayer().dropMessage(5, "You can't create a party as you are already in one"); } } break; case 2://dispand and leave? if (party == null) { break; } if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if (partyplayer.equals(party.getLeader())) { if (GameConstants.isDojo(c.getPlayer().getMapId())) { Event_DojoAgent.failed(c.getPlayer()); } if (c.getPlayer().getPyramidSubway() != null) { c.getPlayer().getPyramidSubway().fail(c.getPlayer()); } World.Party.updateParty(party.getId(), PartyOperation.DISBAND, partyplayer); if (c.getPlayer().getEventInstance() != null) { c.getPlayer().getEventInstance().disbandParty(); } } else { if (GameConstants.isDojo(c.getPlayer().getMapId())) { Event_DojoAgent.failed(c.getPlayer()); } if (c.getPlayer().getPyramidSubway() != null) { c.getPlayer().getPyramidSubway().fail(c.getPlayer()); } World.Party.updateParty(party.getId(), PartyOperation.LEAVE, partyplayer); if (c.getPlayer().getEventInstance() != null) { c.getPlayer().getEventInstance().leftParty(c.getPlayer()); } } c.getPlayer().setParty(null); break; case 3: int partyid = slea.readInt(); if (party == null) { party = World.Party.getParty(partyid); if (party != null) { if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if ((party.getMembers().size() < 8) && (c.getPlayer().getQuestNoAdd(MapleQuest.getInstance(122901)) == null)) { c.getPlayer().setParty(party); World.Party.updateParty(party.getId(), PartyOperation.JOIN, partyplayer); c.getPlayer().receivePartyMemberHP(); c.getPlayer().updatePartyMemberHP(); } else { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(22, null)); } } else { c.getPlayer().dropMessage(5, "The party you are trying to join does not exist"); } } else { c.getPlayer().dropMessage(5, "You can't join the party as you are already in one"); } break; case 4: if (party == null) { party = World.Party.createParty(partyplayer); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); } String theName = slea.readMapleAsciiString(); int theCh = World.Find.findChannel(theName); if (theCh > 0) { MapleCharacter invited = ChannelServer.getInstance(theCh).getPlayerStorage().getCharacterByName(theName); if ((invited != null) && (invited.getParty() == null) && (invited.getQuestNoAdd(MapleQuest.getInstance(122901)) == null)) { if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if (party.getMembers().size() < 8) { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(30, invited.getName())); invited.getClient().getSession().write(CWvsContext.PartyPacket.partyInvite(c.getPlayer())); } else { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(22, null)); } } else { c.getPlayer().dropMessage(6, "The person you are trying to invite is already in a party."); } } else { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(17, null)); } break; case 6://was5 if ((party == null) || (partyplayer == null) || (!partyplayer.equals(party.getLeader()))) { break; } if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } MaplePartyCharacter expelled = party.getMemberById(slea.readInt()); if (expelled != null) { if ((GameConstants.isDojo(c.getPlayer().getMapId())) && (expelled.isOnline())) { Event_DojoAgent.failed(c.getPlayer()); } if ((c.getPlayer().getPyramidSubway() != null) && (expelled.isOnline())) { c.getPlayer().getPyramidSubway().fail(c.getPlayer()); } World.Party.updateParty(party.getId(), PartyOperation.EXPEL, expelled); if (c.getPlayer().getEventInstance() != null) { if (expelled.isOnline()) { c.getPlayer().getEventInstance().disbandParty(); } } } break; case 7://was 6 if (party == null) { break; } if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } MaplePartyCharacter newleader = party.getMemberById(slea.readInt()); if ((newleader != null) && (partyplayer.equals(party.getLeader()))) { World.Party.updateParty(party.getId(), PartyOperation.CHANGE_LEADER, newleader); } break; case 66://was 7 if (party != null) { if ((c.getPlayer().getEventInstance() != null) || (c.getPlayer().getPyramidSubway() != null) || (party.getExpeditionId() > 0) || (GameConstants.isDojo(c.getPlayer().getMapId()))) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } if (partyplayer.equals(party.getLeader())) { World.Party.updateParty(party.getId(), PartyOperation.DISBAND, partyplayer); } else { World.Party.updateParty(party.getId(), PartyOperation.LEAVE, partyplayer); } c.getPlayer().setParty(null); } int partyid_ = slea.readInt(); party = World.Party.getParty(partyid_); if ((party == null) || (party.getMembers().size() >= 8)) { break; } if (party.getExpeditionId() > 0) { c.getPlayer().dropMessage(5, "You may not do party operations while in a raid."); return; } MapleCharacter cfrom = c.getPlayer().getMap().getCharacterById(party.getLeader().getId()); if ((cfrom != null) && (cfrom.getQuestNoAdd(MapleQuest.getInstance(122900)) == null)) { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(50, c.getPlayer().getName())); cfrom.getClient().getSession().write(CWvsContext.PartyPacket.partyRequestInvite(c.getPlayer())); } else { c.getPlayer().dropMessage(5, "Player was not found or player is not accepting party requests."); } break; case 8: if (slea.readByte() > 0) { c.getPlayer().getQuestRemove(MapleQuest.getInstance(122900)); } else { c.getPlayer().getQuestNAdd(MapleQuest.getInstance(122900)); } break; default: System.out.println("Unhandled Party function." + operation); } } public static void AllowPartyInvite(LittleEndianAccessor slea, MapleClient c) { if (slea.readByte() > 0) { c.getPlayer().getQuestRemove(MapleQuest.getInstance(122901)); } else { c.getPlayer().getQuestNAdd(MapleQuest.getInstance(122901)); } } public static void MemberSearch(LittleEndianAccessor slea, MapleClient c) { if ((c.getPlayer().isInBlockedMap()) || (FieldLimitType.VipRock.check(c.getPlayer().getMap().getFieldLimit()))) { c.getPlayer().dropMessage(5, "You may not do party search here."); return; } c.getSession().write(CWvsContext.PartyPacket.showMemberSearch(c.getPlayer().getMap().getCharactersThreadsafe())); } public static final void PartySearch(LittleEndianAccessor slea, MapleClient c) { if ((c.getPlayer().isInBlockedMap()) || (FieldLimitType.VipRock.check(c.getPlayer().getMap().getFieldLimit()))) { c.getPlayer().dropMessage(5, "You may not do party search here."); return; } List parties = new ArrayList(); for (MapleCharacter chr : c.getPlayer().getMap().getCharactersThreadsafe()) { if ((chr.getParty() != null) && (chr.getParty().getId() != c.getPlayer().getParty().getId()) && (!parties.contains(chr.getParty()))) { parties.add(chr.getParty()); } } c.getSession().write(CWvsContext.PartyPacket.showPartySearch(parties)); } public static final void PartyListing(LittleEndianAccessor slea, MapleClient c) { int mode = slea.readByte(); PartySearchType pst; switch (mode) { case -105: case -97: case 81: case 159: pst = PartySearchType.getById(slea.readInt()); if ((pst == null) || (c.getPlayer().getLevel() > pst.maxLevel) || (c.getPlayer().getLevel() < pst.minLevel)) { return; } if ((c.getPlayer().getParty() == null) && (World.Party.searchParty(pst).size() < 10)) { MapleParty party = World.Party.createParty(new MaplePartyCharacter(c.getPlayer()), pst.id); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); PartySearch ps = new PartySearch(slea.readMapleAsciiString(), pst.exped ? party.getExpeditionId() : party.getId(), pst); World.Party.addSearch(ps); if (pst.exped) { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(World.Party.getExped(party.getExpeditionId()), true, false)); } c.getSession().write(CWvsContext.PartyPacket.partyListingAdded(ps)); } else { c.getPlayer().dropMessage(1, "Unable to create. Please leave the party."); } break; case -103: case -95: case 83: case 161: pst = PartySearchType.getById(slea.readInt()); if ((pst == null) || (c.getPlayer().getLevel() > pst.maxLevel) || (c.getPlayer().getLevel() < pst.minLevel)) { return; } c.getSession().write(CWvsContext.PartyPacket.getPartyListing(pst)); break; case -102: case -94: case 84: case 162: break; case -101: case -93: case 85: case 163: MapleParty party = c.getPlayer().getParty(); MaplePartyCharacter partyplayer = new MaplePartyCharacter(c.getPlayer()); if (party != null) { break; } int theId = slea.readInt(); party = World.Party.getParty(theId); if (party != null) { PartySearch ps = World.Party.getSearchByParty(party.getId()); if ((ps != null) && (c.getPlayer().getLevel() <= ps.getType().maxLevel) && (c.getPlayer().getLevel() >= ps.getType().minLevel) && (party.getMembers().size() < 8)) { c.getPlayer().setParty(party); World.Party.updateParty(party.getId(), PartyOperation.JOIN, partyplayer); c.getPlayer().receivePartyMemberHP(); c.getPlayer().updatePartyMemberHP(); } else { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(21, null)); } } else { MapleExpedition exped = World.Party.getExped(theId); if (exped != null) { PartySearch ps = World.Party.getSearchByExped(exped.getId()); if ((ps != null) && (c.getPlayer().getLevel() <= ps.getType().maxLevel) && (c.getPlayer().getLevel() >= ps.getType().minLevel) && (exped.getAllMembers() < exped.getType().maxMembers)) { int partyId = exped.getFreeParty(); if (partyId < 0) { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(21, null)); } else if (partyId == 0) { party = World.Party.createPartyAndAdd(partyplayer, exped.getId()); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, true, false)); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionJoined(c.getPlayer().getName()), null); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionUpdate(exped.getIndex(party.getId()), party), null); } else { c.getPlayer().setParty(World.Party.getParty(partyId)); World.Party.updateParty(partyId, PartyOperation.JOIN, partyplayer); c.getPlayer().receivePartyMemberHP(); c.getPlayer().updatePartyMemberHP(); c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, true, false)); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionJoined(c.getPlayer().getName()), null); } } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(0, c.getPlayer().getName())); } } } break; default: if (!c.getPlayer().isGM()) { break; } System.out.println("Unknown PartyListing : " + mode + "\n" + slea); } } public static final void Expedition(LittleEndianAccessor slea, MapleClient c) { if ((c.getPlayer() == null) || (c.getPlayer().getMap() == null)) { return; } int mode = slea.readByte(); String name; MapleParty part; MapleExpedition exped; int cid; Iterator i$; switch (mode) { case 76://64 case 134: ExpeditionType et = ExpeditionType.getById(slea.readInt()); if ((et != null) && (c.getPlayer().getParty() == null) && (c.getPlayer().getLevel() <= et.maxLevel) && (c.getPlayer().getLevel() >= et.minLevel)) { MapleParty party = World.Party.createParty(new MaplePartyCharacter(c.getPlayer()), et.exped); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(World.Party.getExped(party.getExpeditionId()), true, false)); } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(0, "")); } break; case 77://65 case 135: name = slea.readMapleAsciiString(); int theCh = World.Find.findChannel(name); if (theCh > 0) { MapleCharacter invited = ChannelServer.getInstance(theCh).getPlayerStorage().getCharacterByName(name); MapleParty party = c.getPlayer().getParty(); if ((invited != null) && (invited.getParty() == null) && (party != null) && (party.getExpeditionId() > 0)) { MapleExpedition me = World.Party.getExped(party.getExpeditionId()); if ((me != null) && (me.getAllMembers() < me.getType().maxMembers) && (invited.getLevel() <= me.getType().maxLevel) && (invited.getLevel() >= me.getType().minLevel)) { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(7, invited.getName())); invited.getClient().getSession().write(CWvsContext.ExpeditionPacket.expeditionInvite(c.getPlayer(), me.getType().exped)); } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(3, invited.getName())); } } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(2, name)); } } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(0, name)); } break; case 78://66 case 136: name = slea.readMapleAsciiString(); int action = slea.readInt(); int theChh = World.Find.findChannel(name); if (theChh <= 0) { break; } MapleCharacter cfrom = ChannelServer.getInstance(theChh).getPlayerStorage().getCharacterByName(name); if ((cfrom != null) && (cfrom.getParty() != null) && (cfrom.getParty().getExpeditionId() > 0)) { MapleParty party = cfrom.getParty(); exped = World.Party.getExped(party.getExpeditionId()); if ((exped != null) && (action == 8)) { if ((c.getPlayer().getLevel() <= exped.getType().maxLevel) && (c.getPlayer().getLevel() >= exped.getType().minLevel) && (exped.getAllMembers() < exped.getType().maxMembers)) { int partyId = exped.getFreeParty(); if (partyId < 0) { c.getSession().write(CWvsContext.PartyPacket.partyStatusMessage(21, null)); } else if (partyId == 0) { party = World.Party.createPartyAndAdd(new MaplePartyCharacter(c.getPlayer()), exped.getId()); c.getPlayer().setParty(party); c.getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, true, false)); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionJoined(c.getPlayer().getName()), null); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionUpdate(exped.getIndex(party.getId()), party), null); } else { c.getPlayer().setParty(World.Party.getParty(partyId)); World.Party.updateParty(partyId, PartyOperation.JOIN, new MaplePartyCharacter(c.getPlayer())); c.getPlayer().receivePartyMemberHP(); c.getPlayer().updatePartyMemberHP(); c.getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, false, false)); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionJoined(c.getPlayer().getName()), null); } } else { c.getSession().write(CWvsContext.ExpeditionPacket.expeditionError(3, cfrom.getName())); } } else if (action == 9) { cfrom.getClient().getSession().write(CWvsContext.PartyPacket.partyStatusMessage(23, c.getPlayer().getName())); } } break; case 79://67 case 137: part = c.getPlayer().getParty(); if ((part == null) || (part.getExpeditionId() <= 0)) { break; } exped = World.Party.getExped(part.getExpeditionId()); if (exped != null) { if (GameConstants.isDojo(c.getPlayer().getMapId())) { Event_DojoAgent.failed(c.getPlayer()); } if (exped.getLeader() == c.getPlayer().getId()) { World.Party.disbandExped(exped.getId()); if (c.getPlayer().getEventInstance() != null) { c.getPlayer().getEventInstance().disbandParty(); } } else if (part.getLeader().getId() == c.getPlayer().getId()) { World.Party.updateParty(part.getId(), PartyOperation.DISBAND, new MaplePartyCharacter(c.getPlayer())); if (c.getPlayer().getEventInstance() != null) { c.getPlayer().getEventInstance().disbandParty(); } World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionLeft(c.getPlayer().getName()), null); } else { World.Party.updateParty(part.getId(), PartyOperation.LEAVE, new MaplePartyCharacter(c.getPlayer())); if (c.getPlayer().getEventInstance() != null) { c.getPlayer().getEventInstance().leftParty(c.getPlayer()); } World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionLeft(c.getPlayer().getName()), null); } if (c.getPlayer().getPyramidSubway() != null) { c.getPlayer().getPyramidSubway().fail(c.getPlayer()); } c.getPlayer().setParty(null); } break; case 80://68 case 138: part = c.getPlayer().getParty(); if ((part == null) || (part.getExpeditionId() <= 0)) { break; } exped = World.Party.getExped(part.getExpeditionId()); if ((exped != null) && (exped.getLeader() == c.getPlayer().getId())) { cid = slea.readInt(); for (i$ = exped.getParties().iterator(); i$.hasNext();) { int i = ((Integer) i$.next()).intValue(); MapleParty par = World.Party.getParty(i); if (par != null) { MaplePartyCharacter expelled = par.getMemberById(cid); if (expelled != null) { if ((expelled.isOnline()) && (GameConstants.isDojo(c.getPlayer().getMapId()))) { Event_DojoAgent.failed(c.getPlayer()); } World.Party.updateParty(i, PartyOperation.EXPEL, expelled); if ((c.getPlayer().getEventInstance() != null) && (expelled.isOnline())) { c.getPlayer().getEventInstance().disbandParty(); } if ((c.getPlayer().getPyramidSubway() != null) && (expelled.isOnline())) { c.getPlayer().getPyramidSubway().fail(c.getPlayer()); } World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionLeft(expelled.getName()), null); break; } } } } break; case 81://69 case 139: part = c.getPlayer().getParty(); if ((part == null) || (part.getExpeditionId() <= 0)) { break; } exped = World.Party.getExped(part.getExpeditionId()); if ((exped != null) && (exped.getLeader() == c.getPlayer().getId())) { MaplePartyCharacter newleader = part.getMemberById(slea.readInt()); if (newleader != null) { World.Party.updateParty(part.getId(), PartyOperation.CHANGE_LEADER, newleader); exped.setLeader(newleader.getId()); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionLeaderChanged(0), null); } } break; case 82://70 case 140: part = c.getPlayer().getParty(); if ((part == null) || (part.getExpeditionId() <= 0)) { break; } exped = World.Party.getExped(part.getExpeditionId()); if ((exped != null) && (exped.getLeader() == c.getPlayer().getId())) { cid = slea.readInt(); for (i$ = exped.getParties().iterator(); i$.hasNext();) { int i = ((Integer) i$.next()).intValue(); MapleParty par = World.Party.getParty(i); if (par != null) { MaplePartyCharacter newleader = par.getMemberById(cid); if ((newleader != null) && (par.getId() != part.getId())) { World.Party.updateParty(par.getId(), PartyOperation.CHANGE_LEADER, newleader); } } } } break; case 83://71 case 141: part = c.getPlayer().getParty(); if ((part == null) || (part.getExpeditionId() <= 0)) { break; } exped = World.Party.getExped(part.getExpeditionId()); if ((exped != null) && (exped.getLeader() == c.getPlayer().getId())) { int partyIndexTo = slea.readInt(); if ((partyIndexTo < exped.getType().maxParty) && (partyIndexTo <= exped.getParties().size())) { cid = slea.readInt(); for (i$ = exped.getParties().iterator(); i$.hasNext();) { int i = ((Integer) i$.next()).intValue(); MapleParty par = World.Party.getParty(i); if (par != null) { MaplePartyCharacter expelled = par.getMemberById(cid); if ((expelled != null) && (expelled.isOnline())) { MapleCharacter chr = World.getStorage(expelled.getChannel()).getCharacterById(expelled.getId()); if (chr == null) { break; } if (partyIndexTo < exped.getParties().size()) { MapleParty party = World.Party.getParty((exped.getParties().get(partyIndexTo)).intValue()); if ((party == null) || (party.getMembers().size() >= 8)) { c.getPlayer().dropMessage(5, "Invalid party."); break; } } if (GameConstants.isDojo(c.getPlayer().getMapId())) { Event_DojoAgent.failed(c.getPlayer()); } World.Party.updateParty(i, PartyOperation.EXPEL, expelled); if (partyIndexTo < exped.getParties().size()) { MapleParty party = World.Party.getParty((exped.getParties().get(partyIndexTo)).intValue()); if ((party != null) && (party.getMembers().size() < 8)) { World.Party.updateParty(party.getId(), PartyOperation.JOIN, expelled); chr.receivePartyMemberHP(); chr.updatePartyMemberHP(); chr.getClient().getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, true, false)); } } else { MapleParty party = World.Party.createPartyAndAdd(expelled, exped.getId()); chr.setParty(party); chr.getClient().getSession().write(CWvsContext.PartyPacket.partyCreated(party.getId())); chr.getClient().getSession().write(CWvsContext.ExpeditionPacket.expeditionStatus(exped, true, false)); World.Party.expedPacket(exped.getId(), CWvsContext.ExpeditionPacket.expeditionUpdate(exped.getIndex(party.getId()), party), null); } if ((c.getPlayer().getEventInstance() != null) && (expelled.isOnline())) { c.getPlayer().getEventInstance().disbandParty(); } if (c.getPlayer().getPyramidSubway() == null) { break; } c.getPlayer().getPyramidSubway().fail(c.getPlayer()); break; } } } } } break; default: if (!c.getPlayer().isGM()) { break; } System.out.println("Unknown Expedition : " + mode + "\n" + slea); } } }