Support for new pledge member statuses.

This commit is contained in:
MobiusDevelopment
2019-03-17 14:59:41 +00:00
parent 104e56cab8
commit fb1ceb841e
105 changed files with 381 additions and 2244 deletions

View File

@ -39,11 +39,59 @@ public class ClanLevelData
27300000,
36400000,
46410000,
0 // Max level (15).
0
};
private final static int[] COMMON_CLAN_MEMBER_LIMIT =
{
10,
15,
20,
30,
40,
42,
68,
85,
94,
102,
111,
120,
128,
137,
145,
171
};
private final static int[] ELITE_CLAN_MEMBER_LIMIT =
{
0,
0,
0,
0,
0,
8,
12,
15,
16,
18,
19,
20,
22,
23,
25,
29
};
public static int getLevelRequirement(int clanLevel)
{
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
}
public static int getCommonMemberLimit(int clanLevel)
{
return COMMON_CLAN_MEMBER_LIMIT[clanLevel];
}
public static int getEliteMemberLimit(int clanLevel)
{
return ELITE_CLAN_MEMBER_LIMIT[clanLevel];
}
}

View File

@ -67,7 +67,6 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
import com.l2jmobius.gameserver.network.serverpackets.PledgeReceiveSubPledgeCreated;
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowInfoUpdate;
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
@ -99,21 +98,10 @@ public class L2Clan implements IIdentifiable, INamable
public static final int PENALTY_TYPE_DISMISS_CLAN = 3;
/** Leader clan dissolve ally */
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
// Sub-unit types
/** Clan subunit type of Academy */
public static final int SUBUNIT_ACADEMY = -1;
/** Clan subunit type of Royal Guard A */
public static final int SUBUNIT_ROYAL1 = 100;
/** Clan subunit type of Royal Guard B */
public static final int SUBUNIT_ROYAL2 = 200;
/** Clan subunit type of Order of Knights A-1 */
public static final int SUBUNIT_KNIGHT1 = 1001;
/** Clan subunit type of Order of Knights A-2 */
public static final int SUBUNIT_KNIGHT2 = 1002;
/** Clan subunit type of Order of Knights B-1 */
public static final int SUBUNIT_KNIGHT3 = 2001;
/** Clan subunit type of Order of Knights B-2 */
public static final int SUBUNIT_KNIGHT4 = 2002;
// Pledge types
public static final int PLEDGE_CLASS_COMMON = 0;
public static final int PLEDGE_CLASS_ELITE = 100;
private String _name;
private int _clanId;
@ -289,14 +277,14 @@ public class L2Clan implements IIdentifiable, INamable
if (exLeader != null)
{
exLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(exLeader));
exLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
exLeader.broadcastUserInfo();
exLeader.checkItemRestriction();
}
if (newLeader != null)
{
newLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(newLeader));
newLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
newLeader.getClanPrivileges().setAll();
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
@ -377,7 +365,7 @@ public class L2Clan implements IIdentifiable, INamable
addClanMember(member);
member.setPlayerInstance(player);
player.setClan(this);
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
player.setPledgeClass(PLEDGE_CLASS_COMMON);
player.sendPacket(new PledgeShowMemberListUpdate(player));
player.sendPacket(new PledgeSkillList(this));
@ -526,7 +514,6 @@ public class L2Clan implements IIdentifiable, INamable
player.setClanJoinExpiryTime(clanJoinExpiryTime);
}
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
player.broadcastUserInfo();
// disable clan tab
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
@ -563,102 +550,6 @@ public class L2Clan implements IIdentifiable, INamable
return result;
}
/**
* @param pledgeType the Id of the pledge type.
* @return the maximum number of members allowed for a given {@code pledgeType}.
*/
public int getMaxNrOfMembers(int pledgeType)
{
int limit = 0;
switch (pledgeType)
{
case 0:
{
switch (_level)
{
case 3:
{
limit = 30;
break;
}
case 2:
{
limit = 20;
break;
}
case 1:
{
limit = 15;
break;
}
case 0:
{
limit = 10;
break;
}
default:
{
limit = 40;
break;
}
}
break;
}
case -1:
{
limit = 20;
break;
}
case 100:
case 200:
{
switch (_level)
{
case 11:
{
limit = 30;
break;
}
default:
{
limit = 20;
break;
}
}
break;
}
case 1001:
case 1002:
case 2001:
case 2002:
{
switch (_level)
{
case 9:
case 10:
case 11:
{
limit = 25;
break;
}
default:
{
limit = 10;
break;
}
}
break;
}
default:
{
break;
}
}
return limit;
}
/**
* @param exclude the object Id to exclude from list.
* @return all online members excluding the one with object id {code exclude}.
@ -1841,35 +1732,15 @@ public class L2Clan implements IIdentifiable, INamable
return _subPledges.values().toArray(new SubPledge[_subPledges.values().size()]);
}
public SubPledge createSubPledge(L2PcInstance player, int pledgeType, int leaderId, String subPledgeName)
public SubPledge createSubPledge(int pledgeType)
{
SubPledge subPledge = null;
pledgeType = getAvailablePledgeTypes(pledgeType);
if (pledgeType == 0)
if ((_subPledges == null) || (_subPledges.get(pledgeType) != null))
{
if (pledgeType == SUBUNIT_ACADEMY)
{
player.sendPacket(SystemMessageId.YOUR_CLAN_HAS_ALREADY_ESTABLISHED_A_CLAN_ACADEMY);
}
else
{
player.sendMessage("You can't create any more sub-units of this type");
}
return null;
}
if (_leader.getObjectId() == leaderId)
{
player.sendMessage("Leader is not correct");
return null;
}
// Royal Guard 5000 points per each
// Order of Knights 10000 points per each
if ((pledgeType != -1) && (((_reputationScore < Config.ROYAL_GUARD_COST) && (pledgeType < SUBUNIT_KNIGHT1)) || ((_reputationScore < Config.KNIGHT_UNIT_COST) && (pledgeType > SUBUNIT_ROYAL2))))
{
player.sendPacket(SystemMessageId.THE_CLAN_REPUTATION_IS_TOO_LOW);
return null;
}
final String subPledgeName = pledgeType == PLEDGE_CLASS_COMMON ? "COMMON" : "ELITE";
SubPledge subPledge = null;
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement ps = con.prepareStatement("INSERT INTO clan_subpledges (clan_id,sub_pledge_id,name,leader_id) values (?,?,?,?)"))
@ -1877,81 +1748,22 @@ public class L2Clan implements IIdentifiable, INamable
ps.setInt(1, _clanId);
ps.setInt(2, pledgeType);
ps.setString(3, subPledgeName);
ps.setInt(4, pledgeType != -1 ? leaderId : 0);
ps.setInt(4, _leader.getObjectId());
ps.execute();
subPledge = new SubPledge(pledgeType, subPledgeName, leaderId);
subPledge = new SubPledge(pledgeType, subPledgeName, _leader.getObjectId());
_subPledges.put(pledgeType, subPledge);
if (pledgeType != -1)
{
// Royal Guard 5000 points per each
// Order of Knights 10000 points per each
if (pledgeType < SUBUNIT_KNIGHT1)
{
setReputationScore(_reputationScore - Config.ROYAL_GUARD_COST, true);
}
else
{
setReputationScore(_reputationScore - Config.KNIGHT_UNIT_COST, true);
// TODO: clan lvl9 or more can reinforce knights cheaper if first knight unit already created, use Config.KNIGHT_REINFORCE_COST
}
}
}
catch (Exception e)
{
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
}
broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
// broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
// broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
return subPledge;
}
public int getAvailablePledgeTypes(int pledgeType)
{
if (_subPledges.get(pledgeType) != null)
{
// LOGGER.warning("found sub-unit with id: "+pledgeType);
switch (pledgeType)
{
case SUBUNIT_ACADEMY:
{
return 0;
}
case SUBUNIT_ROYAL1:
{
pledgeType = getAvailablePledgeTypes(SUBUNIT_ROYAL2);
break;
}
case SUBUNIT_ROYAL2:
{
return 0;
}
case SUBUNIT_KNIGHT1:
{
pledgeType = getAvailablePledgeTypes(SUBUNIT_KNIGHT2);
break;
}
case SUBUNIT_KNIGHT2:
{
pledgeType = getAvailablePledgeTypes(SUBUNIT_KNIGHT3);
break;
}
case SUBUNIT_KNIGHT3:
{
pledgeType = getAvailablePledgeTypes(SUBUNIT_KNIGHT4);
break;
}
case SUBUNIT_KNIGHT4:
{
return 0;
}
}
}
return pledgeType;
}
public void updateSubPledgeInDB(int pledgeType)
{
try (Connection con = DatabaseFactory.getConnection();
@ -2243,18 +2055,11 @@ public class L2Clan implements IIdentifiable, INamable
activeChar.sendPacket(SystemMessageId.IN_ORDER_TO_JOIN_THE_CLAN_ACADEMY_YOU_MUST_BE_UNAFFILIATED_WITH_A_CLAN_AND_BE_AN_UNAWAKENED_CHARACTER_LV_84_OR_BELOW_FPR_BOTH_MAIN_AND_SUBCLASS);
return false;
}
if (getSubPledgeMembersCount(pledgeType) >= getMaxNrOfMembers(pledgeType))
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
{
if (pledgeType == 0)
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
sm.addString(_name);
activeChar.sendPacket(sm);
}
else
{
activeChar.sendPacket(SystemMessageId.THIS_CLAN_IS_FULL_AND_CANNOT_ACCEPT_NEW_MEMBERS_AT_THIS_TIME);
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
sm.addString(_name);
activeChar.sendPacket(sm);
return false;
}
return true;

View File

@ -714,6 +714,10 @@ public class L2ClanMember
break;
}
case 11:
case 12:
case 13:
case 14:
case 15:
{
switch (player.getPledgeType())
{

View File

@ -1040,25 +1040,22 @@ public final class L2PcInstance extends L2Playable
}
if ((clan != null) && (targetClan != null))
{
if ((target.getPledgeType() != L2Clan.SUBUNIT_ACADEMY) && (getPledgeType() != L2Clan.SUBUNIT_ACADEMY))
ClanWar war = clan.getWarWith(target.getClan().getId());
if (war != null)
{
ClanWar war = clan.getWarWith(target.getClan().getId());
if (war != null)
switch (war.getState())
{
switch (war.getState())
case DECLARATION:
case BLOOD_DECLARATION:
{
case DECLARATION:
case BLOOD_DECLARATION:
{
result |= RelationChanged.RELATION_DECLARED_WAR;
break;
}
case MUTUAL:
{
result |= RelationChanged.RELATION_DECLARED_WAR;
result |= RelationChanged.RELATION_MUTUAL_WAR;
break;
}
result |= RelationChanged.RELATION_DECLARED_WAR;
break;
}
case MUTUAL:
{
result |= RelationChanged.RELATION_DECLARED_WAR;
result |= RelationChanged.RELATION_MUTUAL_WAR;
break;
}
}
}
@ -9036,6 +9033,10 @@ public final class L2PcInstance extends L2Playable
public void setPledgeType(int typeId)
{
if (_clan != null)
{
_clan.createSubPledge(typeId);
}
_pledgeType = typeId;
}

View File

@ -30,7 +30,6 @@ import com.l2jmobius.gameserver.instancemanager.FortManager;
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
import com.l2jmobius.gameserver.model.L2Clan;
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
import com.l2jmobius.gameserver.model.L2ClanMember;
import com.l2jmobius.gameserver.model.L2SkillLearn;
import com.l2jmobius.gameserver.model.actor.L2Character;
@ -46,8 +45,6 @@ import com.l2jmobius.gameserver.network.serverpackets.MagicSkillLaunched;
import com.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.network.serverpackets.UserInfo;
import com.l2jmobius.gameserver.util.Util;
/**
* This class ...
@ -124,51 +121,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
ClanTable.getInstance().createClan(player, cmdParams);
}
else if (actualCommand.equalsIgnoreCase("create_academy"))
{
if (cmdParams.isEmpty())
{
return;
}
createSubPledge(player, cmdParams, null, L2Clan.SUBUNIT_ACADEMY, 5);
}
else if (actualCommand.equalsIgnoreCase("rename_pledge"))
{
if (cmdParams.isEmpty() || cmdParams2.isEmpty())
{
return;
}
renameSubPledge(player, Integer.parseInt(cmdParams), cmdParams2);
}
else if (actualCommand.equalsIgnoreCase("create_royal"))
{
if (cmdParams.isEmpty())
{
return;
}
createSubPledge(player, cmdParams, cmdParams2, L2Clan.SUBUNIT_ROYAL1, 6);
}
else if (actualCommand.equalsIgnoreCase("create_knight"))
{
if (cmdParams.isEmpty())
{
return;
}
createSubPledge(player, cmdParams, cmdParams2, L2Clan.SUBUNIT_KNIGHT1, 7);
}
else if (actualCommand.equalsIgnoreCase("assign_subpl_leader"))
{
if (cmdParams.isEmpty())
{
return;
}
assignSubPledgeLeader(player, cmdParams, cmdParams2);
}
else if (actualCommand.equalsIgnoreCase("create_ally"))
{
if (cmdParams.isEmpty())
@ -371,207 +323,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
clan.updateClanInDB();
}
private static void createSubPledge(L2PcInstance player, String clanName, String leaderName, int pledgeType, int minClanLvl)
{
if (!player.isClanLeader())
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return;
}
final L2Clan clan = player.getClan();
if (clan.getLevel() < minClanLvl)
{
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
{
player.sendPacket(SystemMessageId.TO_ESTABLISH_A_CLAN_ACADEMY_YOUR_CLAN_MUST_BE_LEVEL_5_OR_HIGHER);
}
else
{
player.sendPacket(SystemMessageId.THE_CONDITIONS_NECESSARY_TO_CREATE_A_MILITARY_UNIT_HAVE_NOT_BEEN_MET);
}
return;
}
if (!Util.isAlphaNumeric(clanName) || !isValidName(clanName) || (2 > clanName.length()))
{
player.sendPacket(SystemMessageId.CLAN_NAME_IS_INVALID);
return;
}
if (clanName.length() > 16)
{
player.sendPacket(SystemMessageId.CLAN_NAME_S_LENGTH_IS_INCORRECT);
return;
}
for (L2Clan tempClan : ClanTable.getInstance().getClans())
{
if (tempClan.getSubPledge(clanName) != null)
{
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_ALREADY_EXISTS);
sm.addString(clanName);
player.sendPacket(sm);
}
else
{
player.sendPacket(SystemMessageId.ANOTHER_MILITARY_UNIT_IS_ALREADY_USING_THAT_NAME_PLEASE_ENTER_A_DIFFERENT_NAME);
}
return;
}
}
if (pledgeType != L2Clan.SUBUNIT_ACADEMY)
{
if ((clan.getClanMember(leaderName) == null) || (clan.getClanMember(leaderName).getPledgeType() != 0))
{
if (pledgeType >= L2Clan.SUBUNIT_KNIGHT1)
{
player.sendPacket(SystemMessageId.THE_CAPTAIN_OF_THE_ORDER_OF_KNIGHTS_CANNOT_BE_APPOINTED);
}
else if (pledgeType >= L2Clan.SUBUNIT_ROYAL1)
{
player.sendPacket(SystemMessageId.THE_ROYAL_GUARD_CAPTAIN_CANNOT_BE_APPOINTED);
}
return;
}
}
final int leaderId = pledgeType != L2Clan.SUBUNIT_ACADEMY ? clan.getClanMember(leaderName).getObjectId() : 0;
if (clan.createSubPledge(player, pledgeType, leaderId, clanName) == null)
{
return;
}
SystemMessage sm;
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
{
sm = SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_THE_S1_S_CLAN_ACADEMY_HAS_BEEN_CREATED);
sm.addString(player.getClan().getName());
}
else if (pledgeType >= L2Clan.SUBUNIT_KNIGHT1)
{
sm = SystemMessage.getSystemMessage(SystemMessageId.THE_KNIGHTS_OF_S1_HAVE_BEEN_CREATED);
sm.addString(player.getClan().getName());
}
else if (pledgeType >= L2Clan.SUBUNIT_ROYAL1)
{
sm = SystemMessage.getSystemMessage(SystemMessageId.THE_ROYAL_GUARD_OF_S1_HAVE_BEEN_CREATED);
sm.addString(player.getClan().getName());
}
else
{
sm = SystemMessage.getSystemMessage(SystemMessageId.YOUR_CLAN_HAS_BEEN_CREATED);
}
player.sendPacket(sm);
if (pledgeType != L2Clan.SUBUNIT_ACADEMY)
{
final L2ClanMember leaderSubPledge = clan.getClanMember(leaderName);
final L2PcInstance leaderPlayer = leaderSubPledge.getPlayerInstance();
if (leaderPlayer != null)
{
leaderPlayer.setPledgeClass(L2ClanMember.calculatePledgeClass(leaderPlayer));
leaderPlayer.sendPacket(new UserInfo(leaderPlayer));
}
}
}
private static void renameSubPledge(L2PcInstance player, int pledgeType, String pledgeName)
{
if (!player.isClanLeader())
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return;
}
final L2Clan clan = player.getClan();
final SubPledge subPledge = player.getClan().getSubPledge(pledgeType);
if (subPledge == null)
{
player.sendMessage("Pledge don't exists.");
return;
}
if (!Util.isAlphaNumeric(pledgeName) || !isValidName(pledgeName) || (2 > pledgeName.length()))
{
player.sendPacket(SystemMessageId.CLAN_NAME_IS_INVALID);
return;
}
if (pledgeName.length() > 16)
{
player.sendPacket(SystemMessageId.CLAN_NAME_S_LENGTH_IS_INCORRECT);
return;
}
subPledge.setName(pledgeName);
clan.updateSubPledgeInDB(subPledge.getId());
clan.broadcastClanStatus();
player.sendMessage("Pledge name changed.");
}
private static void assignSubPledgeLeader(L2PcInstance player, String clanName, String leaderName)
{
if (!player.isClanLeader())
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return;
}
if (leaderName.length() > 16)
{
player.sendPacket(SystemMessageId.YOUR_TITLE_MUST_BE_AT_LEAST_1_CHARACTER_AND_CANNOT_EXCEED_16_CHARACTERS_IN_LENGTH_PLEASE_TRY_AGAIN);
return;
}
if (player.getName().equals(leaderName))
{
player.sendPacket(SystemMessageId.THE_ROYAL_GUARD_CAPTAIN_CANNOT_BE_APPOINTED);
return;
}
final L2Clan clan = player.getClan();
final SubPledge subPledge = player.getClan().getSubPledge(clanName);
if ((null == subPledge) || (subPledge.getId() == L2Clan.SUBUNIT_ACADEMY))
{
player.sendPacket(SystemMessageId.CLAN_NAME_IS_INVALID);
return;
}
if ((clan.getClanMember(leaderName) == null) || (clan.getClanMember(leaderName).getPledgeType() != 0))
{
if (subPledge.getId() >= L2Clan.SUBUNIT_KNIGHT1)
{
player.sendPacket(SystemMessageId.THE_CAPTAIN_OF_THE_ORDER_OF_KNIGHTS_CANNOT_BE_APPOINTED);
}
else if (subPledge.getId() >= L2Clan.SUBUNIT_ROYAL1)
{
player.sendPacket(SystemMessageId.THE_ROYAL_GUARD_CAPTAIN_CANNOT_BE_APPOINTED);
}
return;
}
subPledge.setLeaderId(clan.getClanMember(leaderName).getObjectId());
clan.updateSubPledgeInDB(subPledge.getId());
final L2ClanMember leaderSubPledge = clan.getClanMember(leaderName);
final L2PcInstance leaderPlayer = leaderSubPledge.getPlayerInstance();
if (leaderPlayer != null)
{
leaderPlayer.setPledgeClass(L2ClanMember.calculatePledgeClass(leaderPlayer));
leaderPlayer.sendPacket(new UserInfo(leaderPlayer));
}
clan.broadcastClanStatus();
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_BEEN_SELECTED_AS_THE_CAPTAIN_OF_S2);
sm.addString(leaderName);
sm.addString(clanName);
clan.broadcastToOnlineMembers(sm);
}
/**
* this displays PledgeSkillList to the player.
* @param player

View File

@ -98,7 +98,7 @@ public final class RequestAnswerJoinPledge implements IClientIncomingPacket
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
activeChar.setPledgeType(pledgeType);
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
if (pledgeType == -1) // Academy - Removed.
{
activeChar.setPowerGrade(9); // academy
activeChar.setLvlJoinedAcademy(activeChar.getLevel());

View File

@ -17,11 +17,14 @@
package com.l2jmobius.gameserver.network.clientpackets;
import com.l2jmobius.commons.network.PacketReader;
import com.l2jmobius.gameserver.data.xml.impl.ClanLevelData;
import com.l2jmobius.gameserver.model.ClanPrivilege;
import com.l2jmobius.gameserver.model.L2Clan;
import com.l2jmobius.gameserver.model.L2ClanMember;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.L2GameClient;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
/**
* Format: (ch) dSdS
@ -29,29 +32,22 @@ import com.l2jmobius.gameserver.network.L2GameClient;
*/
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
{
private int _isMemberSelected;
private String _memberName;
private int _newPledgeType;
private String _selectedMember;
@Override
public boolean read(L2GameClient client, PacketReader packet)
{
_isMemberSelected = packet.readD();
packet.readD(); // _isMemberSelected
_memberName = packet.readS();
_newPledgeType = packet.readD();
_selectedMember = packet.readS();
packet.readS(); // _selectedMember
return true;
}
@Override
public void run(L2GameClient client)
{
if (_isMemberSelected == 0)
{
return;
}
final L2PcInstance activeChar = client.getActiveChar();
if (activeChar == null)
{
@ -75,21 +71,21 @@ public final class RequestPledgeReorganizeMember implements IClientIncomingPacke
return;
}
final L2ClanMember member2 = clan.getClanMember(_selectedMember);
if ((member2 == null) || (member2.getObjectId() == clan.getLeaderId()))
{
return;
}
final int oldPledgeType = member1.getPledgeType();
if (oldPledgeType == _newPledgeType)
{
return;
}
if (clan.getSubPledgeMembersCount(_newPledgeType) >= (_newPledgeType == 0 ? ClanLevelData.getCommonMemberLimit(clan.getLevel()) : ClanLevelData.getEliteMemberLimit(clan.getLevel())))
{
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
sm.addString(_newPledgeType == 0 ? "Common Members" : "Elite Members");
activeChar.sendPacket(sm);
return;
}
member1.setPledgeType(_newPledgeType);
member2.setPledgeType(oldPledgeType);
clan.broadcastClanStatus();
}
}

View File

@ -69,7 +69,7 @@ public final class RequestPledgeSetAcademyMaster implements IClientIncomingPacke
L2ClanMember apprenticeMember;
L2ClanMember sponsorMember;
if (currentMember.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
if (currentMember.getPledgeType() == -1) // Academy - Removed.
{
apprenticeMember = currentMember;
sponsorMember = targetMember;

View File

@ -74,7 +74,7 @@ public final class RequestPledgeSetMemberPowerGrade implements IClientIncomingPa
return;
}
if (member.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
if (member.getPledgeType() == -1) // Academy - Removed.
{
// also checked from client side
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);

View File

@ -41,17 +41,7 @@ public class PledgeReceiveMemberInfo implements IClientOutgoingPacket
packet.writeS(_member.getName());
packet.writeS(_member.getTitle()); // title
packet.writeD(_member.getPowerGrade()); // power
// clan or subpledge name
if (_member.getPledgeType() != 0)
{
packet.writeS((_member.getClan().getSubPledge(_member.getPledgeType())).getName());
}
else
{
packet.writeS(_member.getClan().getName());
}
packet.writeS(_member.getClan().getName());
packet.writeS(_member.getApprenticeOrSponsorName()); // name of this member's apprentice/sponsor
return true;
}

View File

@ -50,7 +50,7 @@ public class PledgeReceiveSubPledgeCreated implements IClientOutgoingPacket
private String getLeaderName()
{
final int LeaderId = _subPledge.getLeaderId();
if ((_subPledge.getId() == L2Clan.SUBUNIT_ACADEMY) || (LeaderId == 0))
if ((_subPledge.getId() == -1) || (LeaderId == 0))
{
return "";
}

View File

@ -20,9 +20,7 @@ import java.util.Collection;
import com.l2jmobius.Config;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.data.sql.impl.CharNameTable;
import com.l2jmobius.gameserver.model.L2Clan;
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
import com.l2jmobius.gameserver.model.L2ClanMember;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
@ -30,34 +28,28 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
public class PledgeShowMemberListAll implements IClientOutgoingPacket
{
private final L2Clan _clan;
private final SubPledge _pledge;
private final String _name;
private final String _leaderName;
private final Collection<L2ClanMember> _members;
private final int _pledgeId;
private final boolean _isSubPledge;
private PledgeShowMemberListAll(L2Clan clan, SubPledge pledge, boolean isSubPledge)
private PledgeShowMemberListAll(L2Clan clan, boolean isSubPledge)
{
_clan = clan;
_pledge = pledge;
_pledgeId = _pledge == null ? 0x00 : _pledge.getId();
_leaderName = pledge == null ? clan.getLeaderName() : CharNameTable.getInstance().getNameById(pledge.getLeaderId());
_name = pledge == null ? clan.getName() : pledge.getName();
_leaderName = clan.getLeaderName();
_name = clan.getName();
_members = _clan.getMembers();
_isSubPledge = isSubPledge;
}
public static void sendAllTo(L2PcInstance player)
{
final L2Clan clan = player.getClan();
if (clan != null)
player.sendPacket(new PledgeShowMemberListAll(clan, true));
for (L2PcInstance member : clan.getOnlineMembers(0))
{
for (SubPledge subPledge : clan.getAllSubPledges())
if (member.getPledgeType() != L2Clan.PLEDGE_CLASS_COMMON)
{
player.sendPacket(new PledgeShowMemberListAll(clan, subPledge, false));
player.sendPacket(new PledgeShowMemberListUpdate(member));
}
player.sendPacket(new PledgeShowMemberListAll(clan, null, true));
}
}
@ -66,10 +58,10 @@ public class PledgeShowMemberListAll implements IClientOutgoingPacket
{
OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ALL.writeId(packet);
packet.writeD(_isSubPledge ? 0x00 : 0x01);
packet.writeD(0x00); // _isSubPledge
packet.writeD(_clan.getId());
packet.writeD(Config.SERVER_ID);
packet.writeD(_pledgeId);
packet.writeD(0x00);
packet.writeS(_name);
packet.writeS(_leaderName);
@ -88,30 +80,17 @@ public class PledgeShowMemberListAll implements IClientOutgoingPacket
packet.writeD(_clan.getAllyCrestId());
packet.writeD(_clan.isAtWar() ? 1 : 0); // new c3
packet.writeD(0x00); // Territory castle ID
packet.writeD(_clan.getSubPledgeMembersCount(_pledgeId));
packet.writeD(_members.size());
for (L2ClanMember m : _members)
{
if (m.getPledgeType() != _pledgeId)
{
continue;
}
packet.writeS(m.getName());
packet.writeD(m.getLevel());
packet.writeD(m.getClassId());
final L2PcInstance player = m.getPlayerInstance();
if (player != null)
{
packet.writeD(player.getAppearance().getSex() ? 1 : 0); // no visible effect
packet.writeD(player.getRace().ordinal()); // packet.writeD(1);
}
else
{
packet.writeD(0x01); // no visible effect
packet.writeD(0x01); // packet.writeD(1);
}
packet.writeD(0); // sex
packet.writeD(0); // race
packet.writeD(m.isOnline() ? m.getObjectId() : 0); // objectId = online 0 = offline
packet.writeD(m.getSponsor() != 0 ? 1 : 0);
packet.writeD(0);
packet.writeC(m.getOnlineStatus());
}
return true;

View File

@ -17,7 +17,6 @@
package com.l2jmobius.gameserver.network.serverpackets;
import com.l2jmobius.commons.network.PacketWriter;
import com.l2jmobius.gameserver.model.L2Clan;
import com.l2jmobius.gameserver.model.L2ClanMember;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.OutgoingPackets;
@ -28,14 +27,11 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
{
private final int _pledgeType;
private int _hasSponsor;
private final String _name;
private final int _level;
private final int _classId;
private final int _objectId;
private final int _onlineStatus;
private final int _race;
private final int _sex;
public PledgeShowMemberListUpdate(L2PcInstance player)
{
@ -49,17 +45,7 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
_classId = member.getClassId();
_objectId = member.getObjectId();
_pledgeType = member.getPledgeType();
_race = member.getRaceOrdinal();
_sex = member.getSex() ? 1 : 0;
_onlineStatus = member.getOnlineStatus();
if (_pledgeType == L2Clan.SUBUNIT_ACADEMY)
{
_hasSponsor = member.getSponsor() != 0 ? 1 : 0;
}
else
{
_hasSponsor = 0;
}
}
@Override
@ -70,20 +56,11 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
packet.writeS(_name);
packet.writeD(_level);
packet.writeD(_classId);
packet.writeD(_sex);
packet.writeD(_race);
if (_onlineStatus > 0)
{
packet.writeD(_objectId);
packet.writeD(_pledgeType);
}
else
{
// when going offline send as 0
packet.writeD(0);
packet.writeD(0);
}
packet.writeD(_hasSponsor);
packet.writeD(0); // _sex
packet.writeD(0); // _race
packet.writeD(_objectId);
packet.writeD(_pledgeType);
packet.writeD(0); // _hasSponsor
packet.writeC(_onlineStatus);
return true;
}

View File

@ -47,8 +47,8 @@ public class ExPledgeShowInfoUpdate extends AbstractItemPacket
OutgoingPackets.EX_PLEDGE_SHOW_INFO_UPDATE.writeId(packet);
packet.writeD(clan.getId()); // Pledge ID
packet.writeD(ClanLevelData.getLevelRequirement(clan.getLevel())); // Next level cost
packet.writeD(0); // Max pledge members
packet.writeD(0); // Max elite members
packet.writeD(ClanLevelData.getCommonMemberLimit(clan.getLevel())); // Max pledge members
packet.writeD(ClanLevelData.getEliteMemberLimit(clan.getLevel())); // Max elite members
return true;
}
}