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

@@ -4,7 +4,4 @@
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-05.htm">"I'd like to restore my clan."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_learn_clan_skills">"Can you teach me some clan skills?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-06.htm">"I want to transfer clan leader authority."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12.htm">"I'd like to manage my Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13.htm">"I want to manage my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14.htm">"I want to manage my Order of Knights."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body><br><br>
You are not the leader of this clan. You may not raise the level of it.
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
The clan level can be raised. Raising clan level requires the following:<br>
Level 1 - SP : 20,000 Adena : 650,000<br>
Level 2 - SP: 100,000 / Adena: 2,500,000<br>
Level 3 - SP: 350,000 / Item: Blood Mark<br>
Level 4 - SP: 1,000,000 / Item: Alliance Manifesto<br>
Level 5 - SP: 2,500,000 / Item: Seal of Aspiration<br>
Level 6 - Clan Fame: 5,000 / Clan Member: More than 30<br>
Level 7 - Clan Fame: 10,000 / Clan Member: More than 50<br>
Level 8 - Clan Fame: 20,000 / Clan Member: More than 80<br>
Level 9 - Clan Fame: 40,000 / Clan Member: More than 120 / Item: 150 Blood Oaths<br>
Level 10 - Clan Fame: 40,000 / Clan Member: More than 140 / Item: 5 Blood Alliance<br>
Level 11 - Clan Fame: 75,000 / Clan Member: More than 170 / Must be Territory Owner<br>
You can obtain a Blood Mark by killing a Bloody Queen. They are located in Watcher's Tomb or around the Forbidden Gateway.<br>
To obtain an Alliance Manifesto, meet sir Christopher Rodemai of Giran Castle Town.<br>
To obtain a Seal of Aspiration, see Sir Gustav Athebaldt in the Town of Oren.<br>
To obtain Blood Oath, acquire a fortress and prove that the territories are being protected.<br>
To obtain the Determination of Blood, possess a castle and prove that the territories are being protected and citizens are being taken care of.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-16.htm">How to obtain Clan Fame</Button>
<button value="Level Up" action="bypass -h npc_%objectId%_increase_clan_level" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
</body></html>

View File

@@ -1,11 +0,0 @@
<html><body> Clans Lv. 5 or above can found an Academy.<br>
You can enroll in an Academy if your main and subclasses are all below Lv. 85 and have not Awakened. If an Academy member Awakens, they automatically graduate.<br>
Up to 20 members may enroll at an Academy. The amount of Reputation a clan receives when a member graduates varies depending on the member's level upon entry.<br>
When a clan founds an Academy, its clan leader gains buffs for the benefit of the members.<br>
Academy members can use their Academy Circlets to efficiently power-up their character.<br>
The leader can appoint a clan member to sponsor an Academy member, which gives the sponsor buffs to use on the sponsored member. They're a bit weaker than the clan leader's buffs, however.<br>
In addition, sponsors can help their partners carry out Academy quests, and check their login status.<br>
Academy members can do Academy quests with their sponsors at Lv. 70. Upon success, the clan, sponsor, and Academy member are all rewarded.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12a.htm">"I'd like to found an Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12b.htm">"I'd like to change my Academy's name."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Create Academy:<br>
Enter Academy Name:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_academy $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename the existing Academy:<br>
Enter new name for Academy:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge -1 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>Clans Lv. 6 or above may create Royal Guards with 5,000 Clan Reputation points.<br>
You can create up to 2 Royal Guards. Each can have up to 20 clan members. A clan that reaches Lv. 11 may increase the number of its Royal Guard members with 7,500 Clan Reputation points.<br>
Upon creation of a Royal Guard, 1 Royal Guard Captain must be appointed from among the clan members. The social class of the newly-appointed Royal Guard Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13a.htm">"I want to create a Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Royal Guard. [NOT DONE]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13b.htm">"I want to rename my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-15.htm">"I want to change Royal Guard Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Royal Guard Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_royal $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,4 +0,0 @@
<body><html>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13c.htm">Rename the First Royal Guard.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13d.htm">Rename the Second Royal Guard.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename First Royal Guard:<br>
Enter new name for First Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 100 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename Second Royal Guard:<br>
Enter new name for Second Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 200 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,10 +0,0 @@
<html><body>A clan Lv. 7 or above may establish an Order of Knights with 10,000 Clan Reputation points.<br>
You can create up to 4 Orders of Knights. Each can have up to 10 clan members.<br>
A clan that reaches Lv. 9 may increase the number of members in its Orders of Knights with 5,000 Clan Reputation points. Up to Lv. 10, they can do so for 2 Orders of Knights.<br>
Upon creation of an Order of Knights, 1 Captain must be appointed from among its members. The social class of the newly-appointed Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14a.htm">"I want to create an Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Order of Knights. [not done]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14b.htm">"I want to change the name of my Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to change Knight Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Order of Knights Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_knight $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14c.htm">Rename First Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14d.htm">Rename Second Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14e.htm">Rename Third Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14f.htm">Rename Fourth Order of Knights.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename first Order of Knights:<br>
Enter new name for first Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename second Order of Knights:<br>
Enter new name for second Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename third Order of Knights:<br>
Enter new name for third Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename fourth Order of Knights:<br>
Enter new name for fourth Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Assign new sub-unit leader:<br>
Enter unit name:<br>
<edit var="name" width=120><br>
Enter new unit leader name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_assign_subpl_leader $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
<font color="FF9900">[Acquiring Clan Fame]</font><br>
1. A new clan member who completes the Second Class Transfer through an academy will add from <font color="00FFFF">190 points</font> to <font color="00FFFF">650 points</font> to the clan's fame, depending on their level when joining the academy.<br>
2. If a castle is captured following a siege, <font color="00FFFF">1500 points</font> are added. (<font color="00FFFF">1500 points</font> are added even if the defenders are NPCs.)<br>
3. If a clan maintains possession of a castle for 2 consecutive weeks, <font color="00FFFF">750 points</font> are added.<br>
4. When the clan acquires a battle-type hideout, <font color="00FFFF">500 points</font> are added; if the hide-out was captured from another clan, <font color="00FFFF">500 points</font> are taken from their score.<br>
5. If a clan member maintains possession of a battle-type hideout for 2 consecutive weeks, <font color="00FFFF">250 points</font>are added.<br>
6. If a clan member is also a member of the party that wins first place in the Festival of Darkness, <font color="00FFFF">200 points</font> are added.<br>
7. If a clan member is reborn as a hero, up to <font color="00FFFF">1000 points</font> are added (depending on the number of members).<br>
8. Fame can also be increased through special clan quests.<br>
9. If your clan defeats an enemy clan member during clan war (dual declared state) or a castle siege, <font color="00FFFF">1 points</font> per clan member is added from the enemy clan.<br>
*If the other clan is below level 5 or its fame is less than 0, your clan cannot acquire its fame.<br>
10. If a fortress is captured following a siege, <font color="00FFFF">200 points</font> are added.<br>
11. If your clan demolished the ballistas inside a fortress, <font color="00FFFF">30 points</font> are added.<br>
<font color="FF9900">[Losing Clan Fame]</font><br>
1. If you fail to defend a castle or fortress in a siege, up to <font color="00FFFF">3000 points</font> can be lost.<br>
2. If you lose a battle-type hideout to another clan, up to <font color="00FFFF">1000 points</font> can be lost.<br>
3. If an allied clan member is killed by an enemy clan member during a clan war (dual declared state) or a castle siege, <font color="00FFFF">1 point</font> is lost per clan member.<br>
4. Fame points can be used to purchase items to help raise the clan's level, or to acquire clan skills.<br>
*Fame is not lost if the clan is below level 5 or its fame is less than 0.<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-03.htm">Back</Button>
</body></html>

View File

@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
LEADER_REQUIRED.put("9000-05.htm", "9000-05-no.htm");
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-15.htm", "9000-07-no.htm");
}
private Clan()

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 (pledgeType == 0)
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
{
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);
}
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

@@ -1039,8 +1039,6 @@ 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)
@@ -1062,7 +1060,6 @@ public final class L2PcInstance extends L2Playable
}
}
}
}
if (_handysBlockCheckerEventArena != -1)
{
result |= RelationChanged.RELATION_INSIEGE;
@@ -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_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;
}
member1.setPledgeType(_newPledgeType);
member2.setPledgeType(oldPledgeType);
clan.broadcastClanStatus();
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);
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.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(0); // _sex
packet.writeD(0); // _race
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); // _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;
}
}

View File

@@ -4,7 +4,4 @@
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-05.htm">"I'd like to restore my clan."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_learn_clan_skills">"Can you teach me some clan skills?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-06.htm">"I want to transfer clan leader authority."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12.htm">"I'd like to manage my Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13.htm">"I want to manage my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14.htm">"I want to manage my Order of Knights."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body><br><br>
You are not the leader of this clan. You may not raise the level of it.
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
The clan level can be raised. Raising clan level requires the following:<br>
Level 1 - SP : 20,000 Adena : 650,000<br>
Level 2 - SP: 100,000 / Adena: 2,500,000<br>
Level 3 - SP: 350,000 / Item: Blood Mark<br>
Level 4 - SP: 1,000,000 / Item: Alliance Manifesto<br>
Level 5 - SP: 2,500,000 / Item: Seal of Aspiration<br>
Level 6 - Clan Fame: 5,000 / Clan Member: More than 30<br>
Level 7 - Clan Fame: 10,000 / Clan Member: More than 50<br>
Level 8 - Clan Fame: 20,000 / Clan Member: More than 80<br>
Level 9 - Clan Fame: 40,000 / Clan Member: More than 120 / Item: 150 Blood Oaths<br>
Level 10 - Clan Fame: 40,000 / Clan Member: More than 140 / Item: 5 Blood Alliance<br>
Level 11 - Clan Fame: 75,000 / Clan Member: More than 170 / Must be Territory Owner<br>
You can obtain a Blood Mark by killing a Bloody Queen. They are located in Watcher's Tomb or around the Forbidden Gateway.<br>
To obtain an Alliance Manifesto, meet sir Christopher Rodemai of Giran Castle Town.<br>
To obtain a Seal of Aspiration, see Sir Gustav Athebaldt in the Town of Oren.<br>
To obtain Blood Oath, acquire a fortress and prove that the territories are being protected.<br>
To obtain the Determination of Blood, possess a castle and prove that the territories are being protected and citizens are being taken care of.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-16.htm">How to obtain Clan Fame</Button>
<button value="Level Up" action="bypass -h npc_%objectId%_increase_clan_level" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
</body></html>

View File

@@ -1,11 +0,0 @@
<html><body> Clans Lv. 5 or above can found an Academy.<br>
You can enroll in an Academy if your main and subclasses are all below Lv. 85 and have not Awakened. If an Academy member Awakens, they automatically graduate.<br>
Up to 20 members may enroll at an Academy. The amount of Reputation a clan receives when a member graduates varies depending on the member's level upon entry.<br>
When a clan founds an Academy, its clan leader gains buffs for the benefit of the members.<br>
Academy members can use their Academy Circlets to efficiently power-up their character.<br>
The leader can appoint a clan member to sponsor an Academy member, which gives the sponsor buffs to use on the sponsored member. They're a bit weaker than the clan leader's buffs, however.<br>
In addition, sponsors can help their partners carry out Academy quests, and check their login status.<br>
Academy members can do Academy quests with their sponsors at Lv. 70. Upon success, the clan, sponsor, and Academy member are all rewarded.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12a.htm">"I'd like to found an Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12b.htm">"I'd like to change my Academy's name."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Create Academy:<br>
Enter Academy Name:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_academy $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename the existing Academy:<br>
Enter new name for Academy:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge -1 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>Clans Lv. 6 or above may create Royal Guards with 5,000 Clan Reputation points.<br>
You can create up to 2 Royal Guards. Each can have up to 20 clan members. A clan that reaches Lv. 11 may increase the number of its Royal Guard members with 7,500 Clan Reputation points.<br>
Upon creation of a Royal Guard, 1 Royal Guard Captain must be appointed from among the clan members. The social class of the newly-appointed Royal Guard Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13a.htm">"I want to create a Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Royal Guard. [NOT DONE]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13b.htm">"I want to rename my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-15.htm">"I want to change Royal Guard Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Royal Guard Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_royal $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,4 +0,0 @@
<body><html>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13c.htm">Rename the First Royal Guard.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13d.htm">Rename the Second Royal Guard.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename First Royal Guard:<br>
Enter new name for First Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 100 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename Second Royal Guard:<br>
Enter new name for Second Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 200 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,10 +0,0 @@
<html><body>A clan Lv. 7 or above may establish an Order of Knights with 10,000 Clan Reputation points.<br>
You can create up to 4 Orders of Knights. Each can have up to 10 clan members.<br>
A clan that reaches Lv. 9 may increase the number of members in its Orders of Knights with 5,000 Clan Reputation points. Up to Lv. 10, they can do so for 2 Orders of Knights.<br>
Upon creation of an Order of Knights, 1 Captain must be appointed from among its members. The social class of the newly-appointed Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14a.htm">"I want to create an Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Order of Knights. [not done]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14b.htm">"I want to change the name of my Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to change Knight Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Order of Knights Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_knight $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14c.htm">Rename First Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14d.htm">Rename Second Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14e.htm">Rename Third Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14f.htm">Rename Fourth Order of Knights.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename first Order of Knights:<br>
Enter new name for first Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename second Order of Knights:<br>
Enter new name for second Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename third Order of Knights:<br>
Enter new name for third Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename fourth Order of Knights:<br>
Enter new name for fourth Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Assign new sub-unit leader:<br>
Enter unit name:<br>
<edit var="name" width=120><br>
Enter new unit leader name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_assign_subpl_leader $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
<font color="FF9900">[Acquiring Clan Fame]</font><br>
1. A new clan member who completes the Second Class Transfer through an academy will add from <font color="00FFFF">190 points</font> to <font color="00FFFF">650 points</font> to the clan's fame, depending on their level when joining the academy.<br>
2. If a castle is captured following a siege, <font color="00FFFF">1500 points</font> are added. (<font color="00FFFF">1500 points</font> are added even if the defenders are NPCs.)<br>
3. If a clan maintains possession of a castle for 2 consecutive weeks, <font color="00FFFF">750 points</font> are added.<br>
4. When the clan acquires a battle-type hideout, <font color="00FFFF">500 points</font> are added; if the hide-out was captured from another clan, <font color="00FFFF">500 points</font> are taken from their score.<br>
5. If a clan member maintains possession of a battle-type hideout for 2 consecutive weeks, <font color="00FFFF">250 points</font>are added.<br>
6. If a clan member is also a member of the party that wins first place in the Festival of Darkness, <font color="00FFFF">200 points</font> are added.<br>
7. If a clan member is reborn as a hero, up to <font color="00FFFF">1000 points</font> are added (depending on the number of members).<br>
8. Fame can also be increased through special clan quests.<br>
9. If your clan defeats an enemy clan member during clan war (dual declared state) or a castle siege, <font color="00FFFF">1 points</font> per clan member is added from the enemy clan.<br>
*If the other clan is below level 5 or its fame is less than 0, your clan cannot acquire its fame.<br>
10. If a fortress is captured following a siege, <font color="00FFFF">200 points</font> are added.<br>
11. If your clan demolished the ballistas inside a fortress, <font color="00FFFF">30 points</font> are added.<br>
<font color="FF9900">[Losing Clan Fame]</font><br>
1. If you fail to defend a castle or fortress in a siege, up to <font color="00FFFF">3000 points</font> can be lost.<br>
2. If you lose a battle-type hideout to another clan, up to <font color="00FFFF">1000 points</font> can be lost.<br>
3. If an allied clan member is killed by an enemy clan member during a clan war (dual declared state) or a castle siege, <font color="00FFFF">1 point</font> is lost per clan member.<br>
4. Fame points can be used to purchase items to help raise the clan's level, or to acquire clan skills.<br>
*Fame is not lost if the clan is below level 5 or its fame is less than 0.<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-03.htm">Back</Button>
</body></html>

View File

@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
LEADER_REQUIRED.put("9000-05.htm", "9000-05-no.htm");
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-15.htm", "9000-07-no.htm");
}
private Clan()

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 (pledgeType == 0)
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
{
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);
}
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

@@ -1039,8 +1039,6 @@ 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)
@@ -1062,7 +1060,6 @@ public final class L2PcInstance extends L2Playable
}
}
}
}
if (_handysBlockCheckerEventArena != -1)
{
result |= RelationChanged.RELATION_INSIEGE;
@@ -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_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;
}
member1.setPledgeType(_newPledgeType);
member2.setPledgeType(oldPledgeType);
clan.broadcastClanStatus();
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);
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.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(0); // _sex
packet.writeD(0); // _race
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); // _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;
}
}

View File

@@ -4,7 +4,4 @@
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-05.htm">"I'd like to restore my clan."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_learn_clan_skills">"Can you teach me some clan skills?"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-06.htm">"I want to transfer clan leader authority."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12.htm">"I'd like to manage my Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13.htm">"I want to manage my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14.htm">"I want to manage my Order of Knights."</Button>
</body></html>

View File

@@ -1,3 +0,0 @@
<html><body><br><br>
You are not the leader of this clan. You may not raise the level of it.
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
The clan level can be raised. Raising clan level requires the following:<br>
Level 1 - SP : 20,000 Adena : 650,000<br>
Level 2 - SP: 100,000 / Adena: 2,500,000<br>
Level 3 - SP: 350,000 / Item: Blood Mark<br>
Level 4 - SP: 1,000,000 / Item: Alliance Manifesto<br>
Level 5 - SP: 2,500,000 / Item: Seal of Aspiration<br>
Level 6 - Clan Fame: 5,000 / Clan Member: More than 30<br>
Level 7 - Clan Fame: 10,000 / Clan Member: More than 50<br>
Level 8 - Clan Fame: 20,000 / Clan Member: More than 80<br>
Level 9 - Clan Fame: 40,000 / Clan Member: More than 120 / Item: 150 Blood Oaths<br>
Level 10 - Clan Fame: 40,000 / Clan Member: More than 140 / Item: 5 Blood Alliance<br>
Level 11 - Clan Fame: 75,000 / Clan Member: More than 170 / Must be Territory Owner<br>
You can obtain a Blood Mark by killing a Bloody Queen. They are located in Watcher's Tomb or around the Forbidden Gateway.<br>
To obtain an Alliance Manifesto, meet sir Christopher Rodemai of Giran Castle Town.<br>
To obtain a Seal of Aspiration, see Sir Gustav Athebaldt in the Town of Oren.<br>
To obtain Blood Oath, acquire a fortress and prove that the territories are being protected.<br>
To obtain the Determination of Blood, possess a castle and prove that the territories are being protected and citizens are being taken care of.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-16.htm">How to obtain Clan Fame</Button>
<button value="Level Up" action="bypass -h npc_%objectId%_increase_clan_level" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_CT1.Button_DF_Down" fore="L2UI_CT1.Button_DF">
</body></html>

View File

@@ -1,11 +0,0 @@
<html><body> Clans Lv. 5 or above can found an Academy.<br>
You can enroll in an Academy if your main and subclasses are all below Lv. 85 and have not Awakened. If an Academy member Awakens, they automatically graduate.<br>
Up to 20 members may enroll at an Academy. The amount of Reputation a clan receives when a member graduates varies depending on the member's level upon entry.<br>
When a clan founds an Academy, its clan leader gains buffs for the benefit of the members.<br>
Academy members can use their Academy Circlets to efficiently power-up their character.<br>
The leader can appoint a clan member to sponsor an Academy member, which gives the sponsor buffs to use on the sponsored member. They're a bit weaker than the clan leader's buffs, however.<br>
In addition, sponsors can help their partners carry out Academy quests, and check their login status.<br>
Academy members can do Academy quests with their sponsors at Lv. 70. Upon success, the clan, sponsor, and Academy member are all rewarded.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12a.htm">"I'd like to found an Academy."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-12b.htm">"I'd like to change my Academy's name."</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Create Academy:<br>
Enter Academy Name:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_academy $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename the existing Academy:<br>
Enter new name for Academy:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge -1 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>Clans Lv. 6 or above may create Royal Guards with 5,000 Clan Reputation points.<br>
You can create up to 2 Royal Guards. Each can have up to 20 clan members. A clan that reaches Lv. 11 may increase the number of its Royal Guard members with 7,500 Clan Reputation points.<br>
Upon creation of a Royal Guard, 1 Royal Guard Captain must be appointed from among the clan members. The social class of the newly-appointed Royal Guard Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13a.htm">"I want to create a Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Royal Guard. [NOT DONE]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13b.htm">"I want to rename my Royal Guard."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-15.htm">"I want to change Royal Guard Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Royal Guard Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_royal $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,4 +0,0 @@
<body><html>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13c.htm">Rename the First Royal Guard.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-13d.htm">Rename the Second Royal Guard.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename First Royal Guard:<br>
Enter new name for First Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 100 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename Second Royal Guard:<br>
Enter new name for Second Royal Guard:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 200 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,10 +0,0 @@
<html><body>A clan Lv. 7 or above may establish an Order of Knights with 10,000 Clan Reputation points.<br>
You can create up to 4 Orders of Knights. Each can have up to 10 clan members.<br>
A clan that reaches Lv. 9 may increase the number of members in its Orders of Knights with 5,000 Clan Reputation points. Up to Lv. 10, they can do so for 2 Orders of Knights.<br>
Upon creation of an Order of Knights, 1 Captain must be appointed from among its members. The social class of the newly-appointed Captain will go up.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14a.htm">"I want to create an Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to reinforce my Order of Knights. [not done]"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14b.htm">"I want to change the name of my Order of Knights."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-01.htm">"I want to change Knight Captains."</Button>
<Button ALIGN=LEFT ICON="RETURN" action="bypass -h Quest Clan 9000-01.htm">Back</Button>
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Create Order of Knights Unit:<br>
Enter Unit Name:<br>
<edit var="name" width=120><br>
Enter Unit Leader Name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_create_knight $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14c.htm">Rename First Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14d.htm">Rename Second Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14e.htm">Rename Third Order of Knights.</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-14f.htm">Rename Fourth Order of Knights.</Button>
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename first Order of Knights:<br>
Enter new name for first Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename second Order of Knights:<br>
Enter new name for second Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 1002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename third Order of Knights:<br>
Enter new name for third Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2001 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,6 +0,0 @@
<html><body>Rename fourth Order of Knights:<br>
Enter new name for fourth Order of Knights:<br>
<edit var="name" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_rename_pledge 2002 $name" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,9 +0,0 @@
<html><body>
Assign new sub-unit leader:<br>
Enter unit name:<br>
<edit var="name" width=120><br>
Enter new unit leader name:<br>
<edit var="lname" width=120><br>
<button value="Enter" action="bypass -h npc_%objectId%_assign_subpl_leader $name $lname" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df"><br>
<button value="Cancel" action="bypass -h Quest Clan 9000-01.htm" width=80 height=27 back="L2UI_ct1.button_df" fore="L2UI_ct1.button_df">
</body></html>

View File

@@ -1,22 +0,0 @@
<html><body>
<font color="FF9900">[Acquiring Clan Fame]</font><br>
1. A new clan member who completes the Second Class Transfer through an academy will add from <font color="00FFFF">190 points</font> to <font color="00FFFF">650 points</font> to the clan's fame, depending on their level when joining the academy.<br>
2. If a castle is captured following a siege, <font color="00FFFF">1500 points</font> are added. (<font color="00FFFF">1500 points</font> are added even if the defenders are NPCs.)<br>
3. If a clan maintains possession of a castle for 2 consecutive weeks, <font color="00FFFF">750 points</font> are added.<br>
4. When the clan acquires a battle-type hideout, <font color="00FFFF">500 points</font> are added; if the hide-out was captured from another clan, <font color="00FFFF">500 points</font> are taken from their score.<br>
5. If a clan member maintains possession of a battle-type hideout for 2 consecutive weeks, <font color="00FFFF">250 points</font>are added.<br>
6. If a clan member is also a member of the party that wins first place in the Festival of Darkness, <font color="00FFFF">200 points</font> are added.<br>
7. If a clan member is reborn as a hero, up to <font color="00FFFF">1000 points</font> are added (depending on the number of members).<br>
8. Fame can also be increased through special clan quests.<br>
9. If your clan defeats an enemy clan member during clan war (dual declared state) or a castle siege, <font color="00FFFF">1 points</font> per clan member is added from the enemy clan.<br>
*If the other clan is below level 5 or its fame is less than 0, your clan cannot acquire its fame.<br>
10. If a fortress is captured following a siege, <font color="00FFFF">200 points</font> are added.<br>
11. If your clan demolished the ballistas inside a fortress, <font color="00FFFF">30 points</font> are added.<br>
<font color="FF9900">[Losing Clan Fame]</font><br>
1. If you fail to defend a castle or fortress in a siege, up to <font color="00FFFF">3000 points</font> can be lost.<br>
2. If you lose a battle-type hideout to another clan, up to <font color="00FFFF">1000 points</font> can be lost.<br>
3. If an allied clan member is killed by an enemy clan member during a clan war (dual declared state) or a castle siege, <font color="00FFFF">1 point</font> is lost per clan member.<br>
4. Fame points can be used to purchase items to help raise the clan's level, or to acquire clan skills.<br>
*Fame is not lost if the clan is below level 5 or its fame is less than 0.<br><br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Clan 9000-03.htm">Back</Button>
</body></html>

View File

@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
LEADER_REQUIRED.put("9000-05.htm", "9000-05-no.htm");
LEADER_REQUIRED.put("9000-07.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-12b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-13b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14a.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-14b.htm", "9000-07-no.htm");
LEADER_REQUIRED.put("9000-15.htm", "9000-07-no.htm");
}
private Clan()

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 (pledgeType == 0)
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
{
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);
}
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

@@ -1039,8 +1039,6 @@ 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)
@@ -1062,7 +1060,6 @@ public final class L2PcInstance extends L2Playable
}
}
}
}
if (_handysBlockCheckerEventArena != -1)
{
result |= RelationChanged.RELATION_INSIEGE;
@@ -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;
}
member1.setPledgeType(_newPledgeType);
member2.setPledgeType(oldPledgeType);
clan.broadcastClanStatus();
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);
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);

Some files were not shown because too many files have changed in this diff Show More