Support for new pledge member statuses.
This commit is contained in:
@ -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];
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -714,6 +714,10 @@ public class L2ClanMember
|
||||
break;
|
||||
}
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case 14:
|
||||
case 15:
|
||||
{
|
||||
switch (player.getPledgeType())
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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());
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 "";
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user