Support for new pledge member statuses.
This commit is contained in:
@@ -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 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 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-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>
|
</body></html>
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
|
|||||||
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
||||||
LEADER_REQUIRED.put("9000-05.htm", "9000-05-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-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()
|
private Clan()
|
||||||
|
@@ -39,11 +39,59 @@ public class ClanLevelData
|
|||||||
27300000,
|
27300000,
|
||||||
36400000,
|
36400000,
|
||||||
46410000,
|
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)
|
public static int getLevelRequirement(int clanLevel)
|
||||||
{
|
{
|
||||||
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getCommonMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return COMMON_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getEliteMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return ELITE_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -67,7 +67,6 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
|
|||||||
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
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.PledgeShowInfoUpdate;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
|
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;
|
public static final int PENALTY_TYPE_DISMISS_CLAN = 3;
|
||||||
/** Leader clan dissolve ally */
|
/** Leader clan dissolve ally */
|
||||||
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
||||||
// Sub-unit types
|
|
||||||
/** Clan subunit type of Academy */
|
// Pledge types
|
||||||
public static final int SUBUNIT_ACADEMY = -1;
|
public static final int PLEDGE_CLASS_COMMON = 0;
|
||||||
/** Clan subunit type of Royal Guard A */
|
public static final int PLEDGE_CLASS_ELITE = 100;
|
||||||
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;
|
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
private int _clanId;
|
private int _clanId;
|
||||||
@@ -289,14 +277,14 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
|
|
||||||
if (exLeader != null)
|
if (exLeader != null)
|
||||||
{
|
{
|
||||||
exLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(exLeader));
|
exLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
exLeader.broadcastUserInfo();
|
exLeader.broadcastUserInfo();
|
||||||
exLeader.checkItemRestriction();
|
exLeader.checkItemRestriction();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newLeader != null)
|
if (newLeader != null)
|
||||||
{
|
{
|
||||||
newLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(newLeader));
|
newLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
newLeader.getClanPrivileges().setAll();
|
newLeader.getClanPrivileges().setAll();
|
||||||
|
|
||||||
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
||||||
@@ -377,7 +365,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
addClanMember(member);
|
addClanMember(member);
|
||||||
member.setPlayerInstance(player);
|
member.setPlayerInstance(player);
|
||||||
player.setClan(this);
|
player.setClan(this);
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
player.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
||||||
player.sendPacket(new PledgeSkillList(this));
|
player.sendPacket(new PledgeSkillList(this));
|
||||||
|
|
||||||
@@ -526,7 +514,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
|
||||||
player.broadcastUserInfo();
|
player.broadcastUserInfo();
|
||||||
// disable clan tab
|
// disable clan tab
|
||||||
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
||||||
@@ -563,102 +550,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
return result;
|
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.
|
* @param exclude the object Id to exclude from list.
|
||||||
* @return all online members excluding the one with object id {code exclude}.
|
* @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()]);
|
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;
|
if ((_subPledges == null) || (_subPledges.get(pledgeType) != null))
|
||||||
pledgeType = getAvailablePledgeTypes(pledgeType);
|
|
||||||
if (pledgeType == 0)
|
|
||||||
{
|
{
|
||||||
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Royal Guard 5000 points per each
|
final String subPledgeName = pledgeType == PLEDGE_CLASS_COMMON ? "COMMON" : "ELITE";
|
||||||
// Order of Knights 10000 points per each
|
SubPledge subPledge = null;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
PreparedStatement ps = con.prepareStatement("INSERT INTO clan_subpledges (clan_id,sub_pledge_id,name,leader_id) values (?,?,?,?)"))
|
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(1, _clanId);
|
||||||
ps.setInt(2, pledgeType);
|
ps.setInt(2, pledgeType);
|
||||||
ps.setString(3, subPledgeName);
|
ps.setString(3, subPledgeName);
|
||||||
ps.setInt(4, pledgeType != -1 ? leaderId : 0);
|
ps.setInt(4, _leader.getObjectId());
|
||||||
ps.execute();
|
ps.execute();
|
||||||
|
|
||||||
subPledge = new SubPledge(pledgeType, subPledgeName, leaderId);
|
subPledge = new SubPledge(pledgeType, subPledgeName, _leader.getObjectId());
|
||||||
_subPledges.put(pledgeType, subPledge);
|
_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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
||||||
broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
||||||
return subPledge;
|
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)
|
public void updateSubPledgeInDB(int pledgeType)
|
||||||
{
|
{
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
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);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
if (getSubPledgeMembersCount(pledgeType) >= getMaxNrOfMembers(pledgeType))
|
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
|
||||||
{
|
{
|
||||||
if (pledgeType == 0)
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
{
|
sm.addString(_name);
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
activeChar.sendPacket(sm);
|
||||||
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 false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -714,6 +714,10 @@ public class L2ClanMember
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 11:
|
case 11:
|
||||||
|
case 12:
|
||||||
|
case 13:
|
||||||
|
case 14:
|
||||||
|
case 15:
|
||||||
{
|
{
|
||||||
switch (player.getPledgeType())
|
switch (player.getPledgeType())
|
||||||
{
|
{
|
||||||
|
@@ -1040,25 +1040,22 @@ public final class L2PcInstance extends L2Playable
|
|||||||
}
|
}
|
||||||
if ((clan != null) && (targetClan != null))
|
if ((clan != null) && (targetClan != null))
|
||||||
{
|
{
|
||||||
if ((target.getPledgeType() != L2Clan.SUBUNIT_ACADEMY) && (getPledgeType() != L2Clan.SUBUNIT_ACADEMY))
|
ClanWar war = clan.getWarWith(target.getClan().getId());
|
||||||
|
if (war != null)
|
||||||
{
|
{
|
||||||
ClanWar war = clan.getWarWith(target.getClan().getId());
|
switch (war.getState())
|
||||||
if (war != null)
|
|
||||||
{
|
{
|
||||||
switch (war.getState())
|
case DECLARATION:
|
||||||
|
case BLOOD_DECLARATION:
|
||||||
{
|
{
|
||||||
case DECLARATION:
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case BLOOD_DECLARATION:
|
break;
|
||||||
{
|
}
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
case MUTUAL:
|
||||||
break;
|
{
|
||||||
}
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case MUTUAL:
|
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
||||||
{
|
break;
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
|
||||||
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9036,6 +9033,10 @@ public final class L2PcInstance extends L2Playable
|
|||||||
|
|
||||||
public void setPledgeType(int typeId)
|
public void setPledgeType(int typeId)
|
||||||
{
|
{
|
||||||
|
if (_clan != null)
|
||||||
|
{
|
||||||
|
_clan.createSubPledge(typeId);
|
||||||
|
}
|
||||||
_pledgeType = typeId;
|
_pledgeType = typeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,7 +30,6 @@ import com.l2jmobius.gameserver.instancemanager.FortManager;
|
|||||||
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
||||||
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
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.MagicSkillUse;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.UserInfo;
|
|
||||||
import com.l2jmobius.gameserver.util.Util;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ...
|
* This class ...
|
||||||
@@ -124,51 +121,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
|
|
||||||
ClanTable.getInstance().createClan(player, cmdParams);
|
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"))
|
else if (actualCommand.equalsIgnoreCase("create_ally"))
|
||||||
{
|
{
|
||||||
if (cmdParams.isEmpty())
|
if (cmdParams.isEmpty())
|
||||||
@@ -371,207 +323,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
clan.updateClanInDB();
|
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.
|
* this displays PledgeSkillList to the player.
|
||||||
* @param player
|
* @param player
|
||||||
|
@@ -98,7 +98,7 @@ public final class RequestAnswerJoinPledge implements IClientIncomingPacket
|
|||||||
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
||||||
|
|
||||||
activeChar.setPledgeType(pledgeType);
|
activeChar.setPledgeType(pledgeType);
|
||||||
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
|
if (pledgeType == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
activeChar.setPowerGrade(9); // academy
|
activeChar.setPowerGrade(9); // academy
|
||||||
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
||||||
|
@@ -17,11 +17,14 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
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.ClanPrivilege;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format: (ch) dSdS
|
* Format: (ch) dSdS
|
||||||
@@ -29,29 +32,22 @@ import com.l2jmobius.gameserver.network.L2GameClient;
|
|||||||
*/
|
*/
|
||||||
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _isMemberSelected;
|
|
||||||
private String _memberName;
|
private String _memberName;
|
||||||
private int _newPledgeType;
|
private int _newPledgeType;
|
||||||
private String _selectedMember;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_isMemberSelected = packet.readD();
|
packet.readD(); // _isMemberSelected
|
||||||
_memberName = packet.readS();
|
_memberName = packet.readS();
|
||||||
_newPledgeType = packet.readD();
|
_newPledgeType = packet.readD();
|
||||||
_selectedMember = packet.readS();
|
packet.readS(); // _selectedMember
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(L2GameClient client)
|
public void run(L2GameClient client)
|
||||||
{
|
{
|
||||||
if (_isMemberSelected == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final L2PcInstance activeChar = client.getActiveChar();
|
final L2PcInstance activeChar = client.getActiveChar();
|
||||||
if (activeChar == null)
|
if (activeChar == null)
|
||||||
{
|
{
|
||||||
@@ -75,21 +71,21 @@ public final class RequestPledgeReorganizeMember implements IClientIncomingPacke
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2ClanMember member2 = clan.getClanMember(_selectedMember);
|
|
||||||
if ((member2 == null) || (member2.getObjectId() == clan.getLeaderId()))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int oldPledgeType = member1.getPledgeType();
|
final int oldPledgeType = member1.getPledgeType();
|
||||||
if (oldPledgeType == _newPledgeType)
|
if (oldPledgeType == _newPledgeType)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (clan.getSubPledgeMembersCount(_newPledgeType) >= (_newPledgeType == 0 ? ClanLevelData.getCommonMemberLimit(clan.getLevel()) : ClanLevelData.getEliteMemberLimit(clan.getLevel())))
|
||||||
|
{
|
||||||
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
|
sm.addString(_newPledgeType == 0 ? "Common Members" : "Elite Members");
|
||||||
|
activeChar.sendPacket(sm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
member1.setPledgeType(_newPledgeType);
|
member1.setPledgeType(_newPledgeType);
|
||||||
member2.setPledgeType(oldPledgeType);
|
|
||||||
clan.broadcastClanStatus();
|
clan.broadcastClanStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -69,7 +69,7 @@ public final class RequestPledgeSetAcademyMaster implements IClientIncomingPacke
|
|||||||
|
|
||||||
L2ClanMember apprenticeMember;
|
L2ClanMember apprenticeMember;
|
||||||
L2ClanMember sponsorMember;
|
L2ClanMember sponsorMember;
|
||||||
if (currentMember.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (currentMember.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
apprenticeMember = currentMember;
|
apprenticeMember = currentMember;
|
||||||
sponsorMember = targetMember;
|
sponsorMember = targetMember;
|
||||||
|
@@ -74,7 +74,7 @@ public final class RequestPledgeSetMemberPowerGrade implements IClientIncomingPa
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (member.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (member.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
// also checked from client side
|
// also checked from client side
|
||||||
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);
|
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);
|
||||||
|
@@ -41,17 +41,7 @@ public class PledgeReceiveMemberInfo implements IClientOutgoingPacket
|
|||||||
packet.writeS(_member.getName());
|
packet.writeS(_member.getName());
|
||||||
packet.writeS(_member.getTitle()); // title
|
packet.writeS(_member.getTitle()); // title
|
||||||
packet.writeD(_member.getPowerGrade()); // power
|
packet.writeD(_member.getPowerGrade()); // power
|
||||||
|
packet.writeS(_member.getClan().getName());
|
||||||
// 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
|
packet.writeS(_member.getApprenticeOrSponsorName()); // name of this member's apprentice/sponsor
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,7 @@ public class PledgeReceiveSubPledgeCreated implements IClientOutgoingPacket
|
|||||||
private String getLeaderName()
|
private String getLeaderName()
|
||||||
{
|
{
|
||||||
final int LeaderId = _subPledge.getLeaderId();
|
final int LeaderId = _subPledge.getLeaderId();
|
||||||
if ((_subPledge.getId() == L2Clan.SUBUNIT_ACADEMY) || (LeaderId == 0))
|
if ((_subPledge.getId() == -1) || (LeaderId == 0))
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@@ -20,9 +20,7 @@ import java.util.Collection;
|
|||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
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;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@@ -30,34 +28,28 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
|
|||||||
public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private final L2Clan _clan;
|
private final L2Clan _clan;
|
||||||
private final SubPledge _pledge;
|
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final String _leaderName;
|
private final String _leaderName;
|
||||||
private final Collection<L2ClanMember> _members;
|
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;
|
_clan = clan;
|
||||||
_pledge = pledge;
|
_leaderName = clan.getLeaderName();
|
||||||
_pledgeId = _pledge == null ? 0x00 : _pledge.getId();
|
_name = clan.getName();
|
||||||
_leaderName = pledge == null ? clan.getLeaderName() : CharNameTable.getInstance().getNameById(pledge.getLeaderId());
|
|
||||||
_name = pledge == null ? clan.getName() : pledge.getName();
|
|
||||||
_members = _clan.getMembers();
|
_members = _clan.getMembers();
|
||||||
_isSubPledge = isSubPledge;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendAllTo(L2PcInstance player)
|
public static void sendAllTo(L2PcInstance player)
|
||||||
{
|
{
|
||||||
final L2Clan clan = player.getClan();
|
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);
|
OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ALL.writeId(packet);
|
||||||
|
|
||||||
packet.writeD(_isSubPledge ? 0x00 : 0x01);
|
packet.writeD(0x00); // _isSubPledge
|
||||||
packet.writeD(_clan.getId());
|
packet.writeD(_clan.getId());
|
||||||
packet.writeD(Config.SERVER_ID);
|
packet.writeD(Config.SERVER_ID);
|
||||||
packet.writeD(_pledgeId);
|
packet.writeD(0x00);
|
||||||
packet.writeS(_name);
|
packet.writeS(_name);
|
||||||
packet.writeS(_leaderName);
|
packet.writeS(_leaderName);
|
||||||
|
|
||||||
@@ -88,30 +80,17 @@ public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
|||||||
packet.writeD(_clan.getAllyCrestId());
|
packet.writeD(_clan.getAllyCrestId());
|
||||||
packet.writeD(_clan.isAtWar() ? 1 : 0); // new c3
|
packet.writeD(_clan.isAtWar() ? 1 : 0); // new c3
|
||||||
packet.writeD(0x00); // Territory castle ID
|
packet.writeD(0x00); // Territory castle ID
|
||||||
packet.writeD(_clan.getSubPledgeMembersCount(_pledgeId));
|
|
||||||
|
|
||||||
|
packet.writeD(_members.size());
|
||||||
for (L2ClanMember m : _members)
|
for (L2ClanMember m : _members)
|
||||||
{
|
{
|
||||||
if (m.getPledgeType() != _pledgeId)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
packet.writeS(m.getName());
|
packet.writeS(m.getName());
|
||||||
packet.writeD(m.getLevel());
|
packet.writeD(m.getLevel());
|
||||||
packet.writeD(m.getClassId());
|
packet.writeD(m.getClassId());
|
||||||
final L2PcInstance player = m.getPlayerInstance();
|
packet.writeD(0); // sex
|
||||||
if (player != null)
|
packet.writeD(0); // race
|
||||||
{
|
|
||||||
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(m.isOnline() ? m.getObjectId() : 0); // objectId = online 0 = offline
|
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());
|
packet.writeC(m.getOnlineStatus());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package com.l2jmobius.gameserver.network.serverpackets;
|
package com.l2jmobius.gameserver.network.serverpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@@ -28,14 +27,11 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
|
|||||||
public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private final int _pledgeType;
|
private final int _pledgeType;
|
||||||
private int _hasSponsor;
|
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final int _level;
|
private final int _level;
|
||||||
private final int _classId;
|
private final int _classId;
|
||||||
private final int _objectId;
|
private final int _objectId;
|
||||||
private final int _onlineStatus;
|
private final int _onlineStatus;
|
||||||
private final int _race;
|
|
||||||
private final int _sex;
|
|
||||||
|
|
||||||
public PledgeShowMemberListUpdate(L2PcInstance player)
|
public PledgeShowMemberListUpdate(L2PcInstance player)
|
||||||
{
|
{
|
||||||
@@ -49,17 +45,7 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
|||||||
_classId = member.getClassId();
|
_classId = member.getClassId();
|
||||||
_objectId = member.getObjectId();
|
_objectId = member.getObjectId();
|
||||||
_pledgeType = member.getPledgeType();
|
_pledgeType = member.getPledgeType();
|
||||||
_race = member.getRaceOrdinal();
|
|
||||||
_sex = member.getSex() ? 1 : 0;
|
|
||||||
_onlineStatus = member.getOnlineStatus();
|
_onlineStatus = member.getOnlineStatus();
|
||||||
if (_pledgeType == L2Clan.SUBUNIT_ACADEMY)
|
|
||||||
{
|
|
||||||
_hasSponsor = member.getSponsor() != 0 ? 1 : 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_hasSponsor = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,20 +56,11 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
|||||||
packet.writeS(_name);
|
packet.writeS(_name);
|
||||||
packet.writeD(_level);
|
packet.writeD(_level);
|
||||||
packet.writeD(_classId);
|
packet.writeD(_classId);
|
||||||
packet.writeD(_sex);
|
packet.writeD(0); // _sex
|
||||||
packet.writeD(_race);
|
packet.writeD(0); // _race
|
||||||
if (_onlineStatus > 0)
|
packet.writeD(_objectId);
|
||||||
{
|
packet.writeD(_pledgeType);
|
||||||
packet.writeD(_objectId);
|
packet.writeD(0); // _hasSponsor
|
||||||
packet.writeD(_pledgeType);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// when going offline send as 0
|
|
||||||
packet.writeD(0);
|
|
||||||
packet.writeD(0);
|
|
||||||
}
|
|
||||||
packet.writeD(_hasSponsor);
|
|
||||||
packet.writeC(_onlineStatus);
|
packet.writeC(_onlineStatus);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -47,8 +47,8 @@ public class ExPledgeShowInfoUpdate extends AbstractItemPacket
|
|||||||
OutgoingPackets.EX_PLEDGE_SHOW_INFO_UPDATE.writeId(packet);
|
OutgoingPackets.EX_PLEDGE_SHOW_INFO_UPDATE.writeId(packet);
|
||||||
packet.writeD(clan.getId()); // Pledge ID
|
packet.writeD(clan.getId()); // Pledge ID
|
||||||
packet.writeD(ClanLevelData.getLevelRequirement(clan.getLevel())); // Next level cost
|
packet.writeD(ClanLevelData.getLevelRequirement(clan.getLevel())); // Next level cost
|
||||||
packet.writeD(0); // Max pledge members
|
packet.writeD(ClanLevelData.getCommonMemberLimit(clan.getLevel())); // Max pledge members
|
||||||
packet.writeD(0); // Max elite members
|
packet.writeD(ClanLevelData.getEliteMemberLimit(clan.getLevel())); // Max elite members
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 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 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-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>
|
</body></html>
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
|
|||||||
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
||||||
LEADER_REQUIRED.put("9000-05.htm", "9000-05-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-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()
|
private Clan()
|
||||||
|
@@ -39,11 +39,59 @@ public class ClanLevelData
|
|||||||
27300000,
|
27300000,
|
||||||
36400000,
|
36400000,
|
||||||
46410000,
|
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)
|
public static int getLevelRequirement(int clanLevel)
|
||||||
{
|
{
|
||||||
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getCommonMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return COMMON_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getEliteMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return ELITE_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -67,7 +67,6 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
|
|||||||
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
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.PledgeShowInfoUpdate;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
|
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;
|
public static final int PENALTY_TYPE_DISMISS_CLAN = 3;
|
||||||
/** Leader clan dissolve ally */
|
/** Leader clan dissolve ally */
|
||||||
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
||||||
// Sub-unit types
|
|
||||||
/** Clan subunit type of Academy */
|
// Pledge types
|
||||||
public static final int SUBUNIT_ACADEMY = -1;
|
public static final int PLEDGE_CLASS_COMMON = 0;
|
||||||
/** Clan subunit type of Royal Guard A */
|
public static final int PLEDGE_CLASS_ELITE = 100;
|
||||||
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;
|
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
private int _clanId;
|
private int _clanId;
|
||||||
@@ -289,14 +277,14 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
|
|
||||||
if (exLeader != null)
|
if (exLeader != null)
|
||||||
{
|
{
|
||||||
exLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(exLeader));
|
exLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
exLeader.broadcastUserInfo();
|
exLeader.broadcastUserInfo();
|
||||||
exLeader.checkItemRestriction();
|
exLeader.checkItemRestriction();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newLeader != null)
|
if (newLeader != null)
|
||||||
{
|
{
|
||||||
newLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(newLeader));
|
newLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
newLeader.getClanPrivileges().setAll();
|
newLeader.getClanPrivileges().setAll();
|
||||||
|
|
||||||
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
||||||
@@ -377,7 +365,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
addClanMember(member);
|
addClanMember(member);
|
||||||
member.setPlayerInstance(player);
|
member.setPlayerInstance(player);
|
||||||
player.setClan(this);
|
player.setClan(this);
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
player.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
||||||
player.sendPacket(new PledgeSkillList(this));
|
player.sendPacket(new PledgeSkillList(this));
|
||||||
|
|
||||||
@@ -526,7 +514,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
|
||||||
player.broadcastUserInfo();
|
player.broadcastUserInfo();
|
||||||
// disable clan tab
|
// disable clan tab
|
||||||
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
||||||
@@ -563,102 +550,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
return result;
|
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.
|
* @param exclude the object Id to exclude from list.
|
||||||
* @return all online members excluding the one with object id {code exclude}.
|
* @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()]);
|
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;
|
if ((_subPledges == null) || (_subPledges.get(pledgeType) != null))
|
||||||
pledgeType = getAvailablePledgeTypes(pledgeType);
|
|
||||||
if (pledgeType == 0)
|
|
||||||
{
|
{
|
||||||
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Royal Guard 5000 points per each
|
final String subPledgeName = pledgeType == PLEDGE_CLASS_COMMON ? "COMMON" : "ELITE";
|
||||||
// Order of Knights 10000 points per each
|
SubPledge subPledge = null;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
PreparedStatement ps = con.prepareStatement("INSERT INTO clan_subpledges (clan_id,sub_pledge_id,name,leader_id) values (?,?,?,?)"))
|
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(1, _clanId);
|
||||||
ps.setInt(2, pledgeType);
|
ps.setInt(2, pledgeType);
|
||||||
ps.setString(3, subPledgeName);
|
ps.setString(3, subPledgeName);
|
||||||
ps.setInt(4, pledgeType != -1 ? leaderId : 0);
|
ps.setInt(4, _leader.getObjectId());
|
||||||
ps.execute();
|
ps.execute();
|
||||||
|
|
||||||
subPledge = new SubPledge(pledgeType, subPledgeName, leaderId);
|
subPledge = new SubPledge(pledgeType, subPledgeName, _leader.getObjectId());
|
||||||
_subPledges.put(pledgeType, subPledge);
|
_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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
||||||
broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
||||||
return subPledge;
|
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)
|
public void updateSubPledgeInDB(int pledgeType)
|
||||||
{
|
{
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
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);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
if (getSubPledgeMembersCount(pledgeType) >= getMaxNrOfMembers(pledgeType))
|
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
|
||||||
{
|
{
|
||||||
if (pledgeType == 0)
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
{
|
sm.addString(_name);
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
activeChar.sendPacket(sm);
|
||||||
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 false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -714,6 +714,10 @@ public class L2ClanMember
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 11:
|
case 11:
|
||||||
|
case 12:
|
||||||
|
case 13:
|
||||||
|
case 14:
|
||||||
|
case 15:
|
||||||
{
|
{
|
||||||
switch (player.getPledgeType())
|
switch (player.getPledgeType())
|
||||||
{
|
{
|
||||||
|
@@ -1040,25 +1040,22 @@ public final class L2PcInstance extends L2Playable
|
|||||||
}
|
}
|
||||||
if ((clan != null) && (targetClan != null))
|
if ((clan != null) && (targetClan != null))
|
||||||
{
|
{
|
||||||
if ((target.getPledgeType() != L2Clan.SUBUNIT_ACADEMY) && (getPledgeType() != L2Clan.SUBUNIT_ACADEMY))
|
ClanWar war = clan.getWarWith(target.getClan().getId());
|
||||||
|
if (war != null)
|
||||||
{
|
{
|
||||||
ClanWar war = clan.getWarWith(target.getClan().getId());
|
switch (war.getState())
|
||||||
if (war != null)
|
|
||||||
{
|
{
|
||||||
switch (war.getState())
|
case DECLARATION:
|
||||||
|
case BLOOD_DECLARATION:
|
||||||
{
|
{
|
||||||
case DECLARATION:
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case BLOOD_DECLARATION:
|
break;
|
||||||
{
|
}
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
case MUTUAL:
|
||||||
break;
|
{
|
||||||
}
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case MUTUAL:
|
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
||||||
{
|
break;
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
|
||||||
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9036,6 +9033,10 @@ public final class L2PcInstance extends L2Playable
|
|||||||
|
|
||||||
public void setPledgeType(int typeId)
|
public void setPledgeType(int typeId)
|
||||||
{
|
{
|
||||||
|
if (_clan != null)
|
||||||
|
{
|
||||||
|
_clan.createSubPledge(typeId);
|
||||||
|
}
|
||||||
_pledgeType = typeId;
|
_pledgeType = typeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,7 +30,6 @@ import com.l2jmobius.gameserver.instancemanager.FortManager;
|
|||||||
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
||||||
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
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.MagicSkillUse;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.UserInfo;
|
|
||||||
import com.l2jmobius.gameserver.util.Util;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ...
|
* This class ...
|
||||||
@@ -124,51 +121,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
|
|
||||||
ClanTable.getInstance().createClan(player, cmdParams);
|
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"))
|
else if (actualCommand.equalsIgnoreCase("create_ally"))
|
||||||
{
|
{
|
||||||
if (cmdParams.isEmpty())
|
if (cmdParams.isEmpty())
|
||||||
@@ -371,207 +323,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
clan.updateClanInDB();
|
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.
|
* this displays PledgeSkillList to the player.
|
||||||
* @param player
|
* @param player
|
||||||
|
@@ -98,7 +98,7 @@ public final class RequestAnswerJoinPledge implements IClientIncomingPacket
|
|||||||
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
||||||
|
|
||||||
activeChar.setPledgeType(pledgeType);
|
activeChar.setPledgeType(pledgeType);
|
||||||
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
|
if (pledgeType == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
activeChar.setPowerGrade(9); // academy
|
activeChar.setPowerGrade(9); // academy
|
||||||
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
||||||
|
@@ -17,11 +17,14 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
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.ClanPrivilege;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format: (ch) dSdS
|
* Format: (ch) dSdS
|
||||||
@@ -29,29 +32,22 @@ import com.l2jmobius.gameserver.network.L2GameClient;
|
|||||||
*/
|
*/
|
||||||
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _isMemberSelected;
|
|
||||||
private String _memberName;
|
private String _memberName;
|
||||||
private int _newPledgeType;
|
private int _newPledgeType;
|
||||||
private String _selectedMember;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_isMemberSelected = packet.readD();
|
packet.readD(); // _isMemberSelected
|
||||||
_memberName = packet.readS();
|
_memberName = packet.readS();
|
||||||
_newPledgeType = packet.readD();
|
_newPledgeType = packet.readD();
|
||||||
_selectedMember = packet.readS();
|
packet.readS(); // _selectedMember
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(L2GameClient client)
|
public void run(L2GameClient client)
|
||||||
{
|
{
|
||||||
if (_isMemberSelected == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final L2PcInstance activeChar = client.getActiveChar();
|
final L2PcInstance activeChar = client.getActiveChar();
|
||||||
if (activeChar == null)
|
if (activeChar == null)
|
||||||
{
|
{
|
||||||
@@ -75,21 +71,21 @@ public final class RequestPledgeReorganizeMember implements IClientIncomingPacke
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2ClanMember member2 = clan.getClanMember(_selectedMember);
|
|
||||||
if ((member2 == null) || (member2.getObjectId() == clan.getLeaderId()))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int oldPledgeType = member1.getPledgeType();
|
final int oldPledgeType = member1.getPledgeType();
|
||||||
if (oldPledgeType == _newPledgeType)
|
if (oldPledgeType == _newPledgeType)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (clan.getSubPledgeMembersCount(_newPledgeType) >= (_newPledgeType == 0 ? ClanLevelData.getCommonMemberLimit(clan.getLevel()) : ClanLevelData.getEliteMemberLimit(clan.getLevel())))
|
||||||
|
{
|
||||||
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
|
sm.addString(_newPledgeType == 0 ? "Common Members" : "Elite Members");
|
||||||
|
activeChar.sendPacket(sm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
member1.setPledgeType(_newPledgeType);
|
member1.setPledgeType(_newPledgeType);
|
||||||
member2.setPledgeType(oldPledgeType);
|
|
||||||
clan.broadcastClanStatus();
|
clan.broadcastClanStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -69,7 +69,7 @@ public final class RequestPledgeSetAcademyMaster implements IClientIncomingPacke
|
|||||||
|
|
||||||
L2ClanMember apprenticeMember;
|
L2ClanMember apprenticeMember;
|
||||||
L2ClanMember sponsorMember;
|
L2ClanMember sponsorMember;
|
||||||
if (currentMember.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (currentMember.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
apprenticeMember = currentMember;
|
apprenticeMember = currentMember;
|
||||||
sponsorMember = targetMember;
|
sponsorMember = targetMember;
|
||||||
|
@@ -74,7 +74,7 @@ public final class RequestPledgeSetMemberPowerGrade implements IClientIncomingPa
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (member.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (member.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
// also checked from client side
|
// also checked from client side
|
||||||
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);
|
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);
|
||||||
|
@@ -41,17 +41,7 @@ public class PledgeReceiveMemberInfo implements IClientOutgoingPacket
|
|||||||
packet.writeS(_member.getName());
|
packet.writeS(_member.getName());
|
||||||
packet.writeS(_member.getTitle()); // title
|
packet.writeS(_member.getTitle()); // title
|
||||||
packet.writeD(_member.getPowerGrade()); // power
|
packet.writeD(_member.getPowerGrade()); // power
|
||||||
|
packet.writeS(_member.getClan().getName());
|
||||||
// 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
|
packet.writeS(_member.getApprenticeOrSponsorName()); // name of this member's apprentice/sponsor
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -50,7 +50,7 @@ public class PledgeReceiveSubPledgeCreated implements IClientOutgoingPacket
|
|||||||
private String getLeaderName()
|
private String getLeaderName()
|
||||||
{
|
{
|
||||||
final int LeaderId = _subPledge.getLeaderId();
|
final int LeaderId = _subPledge.getLeaderId();
|
||||||
if ((_subPledge.getId() == L2Clan.SUBUNIT_ACADEMY) || (LeaderId == 0))
|
if ((_subPledge.getId() == -1) || (LeaderId == 0))
|
||||||
{
|
{
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@@ -20,9 +20,7 @@ import java.util.Collection;
|
|||||||
|
|
||||||
import com.l2jmobius.Config;
|
import com.l2jmobius.Config;
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
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;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@@ -30,34 +28,28 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
|
|||||||
public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private final L2Clan _clan;
|
private final L2Clan _clan;
|
||||||
private final SubPledge _pledge;
|
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final String _leaderName;
|
private final String _leaderName;
|
||||||
private final Collection<L2ClanMember> _members;
|
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;
|
_clan = clan;
|
||||||
_pledge = pledge;
|
_leaderName = clan.getLeaderName();
|
||||||
_pledgeId = _pledge == null ? 0x00 : _pledge.getId();
|
_name = clan.getName();
|
||||||
_leaderName = pledge == null ? clan.getLeaderName() : CharNameTable.getInstance().getNameById(pledge.getLeaderId());
|
|
||||||
_name = pledge == null ? clan.getName() : pledge.getName();
|
|
||||||
_members = _clan.getMembers();
|
_members = _clan.getMembers();
|
||||||
_isSubPledge = isSubPledge;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendAllTo(L2PcInstance player)
|
public static void sendAllTo(L2PcInstance player)
|
||||||
{
|
{
|
||||||
final L2Clan clan = player.getClan();
|
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);
|
OutgoingPackets.PLEDGE_SHOW_MEMBER_LIST_ALL.writeId(packet);
|
||||||
|
|
||||||
packet.writeD(_isSubPledge ? 0x00 : 0x01);
|
packet.writeD(0x00); // _isSubPledge
|
||||||
packet.writeD(_clan.getId());
|
packet.writeD(_clan.getId());
|
||||||
packet.writeD(Config.SERVER_ID);
|
packet.writeD(Config.SERVER_ID);
|
||||||
packet.writeD(_pledgeId);
|
packet.writeD(0x00);
|
||||||
packet.writeS(_name);
|
packet.writeS(_name);
|
||||||
packet.writeS(_leaderName);
|
packet.writeS(_leaderName);
|
||||||
|
|
||||||
@@ -88,30 +80,17 @@ public class PledgeShowMemberListAll implements IClientOutgoingPacket
|
|||||||
packet.writeD(_clan.getAllyCrestId());
|
packet.writeD(_clan.getAllyCrestId());
|
||||||
packet.writeD(_clan.isAtWar() ? 1 : 0); // new c3
|
packet.writeD(_clan.isAtWar() ? 1 : 0); // new c3
|
||||||
packet.writeD(0x00); // Territory castle ID
|
packet.writeD(0x00); // Territory castle ID
|
||||||
packet.writeD(_clan.getSubPledgeMembersCount(_pledgeId));
|
|
||||||
|
|
||||||
|
packet.writeD(_members.size());
|
||||||
for (L2ClanMember m : _members)
|
for (L2ClanMember m : _members)
|
||||||
{
|
{
|
||||||
if (m.getPledgeType() != _pledgeId)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
packet.writeS(m.getName());
|
packet.writeS(m.getName());
|
||||||
packet.writeD(m.getLevel());
|
packet.writeD(m.getLevel());
|
||||||
packet.writeD(m.getClassId());
|
packet.writeD(m.getClassId());
|
||||||
final L2PcInstance player = m.getPlayerInstance();
|
packet.writeD(0); // sex
|
||||||
if (player != null)
|
packet.writeD(0); // race
|
||||||
{
|
|
||||||
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(m.isOnline() ? m.getObjectId() : 0); // objectId = online 0 = offline
|
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());
|
packet.writeC(m.getOnlineStatus());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -17,7 +17,6 @@
|
|||||||
package com.l2jmobius.gameserver.network.serverpackets;
|
package com.l2jmobius.gameserver.network.serverpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketWriter;
|
import com.l2jmobius.commons.network.PacketWriter;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
import com.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
@@ -28,14 +27,11 @@ import com.l2jmobius.gameserver.network.OutgoingPackets;
|
|||||||
public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
||||||
{
|
{
|
||||||
private final int _pledgeType;
|
private final int _pledgeType;
|
||||||
private int _hasSponsor;
|
|
||||||
private final String _name;
|
private final String _name;
|
||||||
private final int _level;
|
private final int _level;
|
||||||
private final int _classId;
|
private final int _classId;
|
||||||
private final int _objectId;
|
private final int _objectId;
|
||||||
private final int _onlineStatus;
|
private final int _onlineStatus;
|
||||||
private final int _race;
|
|
||||||
private final int _sex;
|
|
||||||
|
|
||||||
public PledgeShowMemberListUpdate(L2PcInstance player)
|
public PledgeShowMemberListUpdate(L2PcInstance player)
|
||||||
{
|
{
|
||||||
@@ -49,17 +45,7 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
|||||||
_classId = member.getClassId();
|
_classId = member.getClassId();
|
||||||
_objectId = member.getObjectId();
|
_objectId = member.getObjectId();
|
||||||
_pledgeType = member.getPledgeType();
|
_pledgeType = member.getPledgeType();
|
||||||
_race = member.getRaceOrdinal();
|
|
||||||
_sex = member.getSex() ? 1 : 0;
|
|
||||||
_onlineStatus = member.getOnlineStatus();
|
_onlineStatus = member.getOnlineStatus();
|
||||||
if (_pledgeType == L2Clan.SUBUNIT_ACADEMY)
|
|
||||||
{
|
|
||||||
_hasSponsor = member.getSponsor() != 0 ? 1 : 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_hasSponsor = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,20 +56,11 @@ public final class PledgeShowMemberListUpdate implements IClientOutgoingPacket
|
|||||||
packet.writeS(_name);
|
packet.writeS(_name);
|
||||||
packet.writeD(_level);
|
packet.writeD(_level);
|
||||||
packet.writeD(_classId);
|
packet.writeD(_classId);
|
||||||
packet.writeD(_sex);
|
packet.writeD(0); // _sex
|
||||||
packet.writeD(_race);
|
packet.writeD(0); // _race
|
||||||
if (_onlineStatus > 0)
|
packet.writeD(_objectId);
|
||||||
{
|
packet.writeD(_pledgeType);
|
||||||
packet.writeD(_objectId);
|
packet.writeD(0); // _hasSponsor
|
||||||
packet.writeD(_pledgeType);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// when going offline send as 0
|
|
||||||
packet.writeD(0);
|
|
||||||
packet.writeD(0);
|
|
||||||
}
|
|
||||||
packet.writeD(_hasSponsor);
|
|
||||||
packet.writeC(_onlineStatus);
|
packet.writeC(_onlineStatus);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -47,8 +47,8 @@ public class ExPledgeShowInfoUpdate extends AbstractItemPacket
|
|||||||
OutgoingPackets.EX_PLEDGE_SHOW_INFO_UPDATE.writeId(packet);
|
OutgoingPackets.EX_PLEDGE_SHOW_INFO_UPDATE.writeId(packet);
|
||||||
packet.writeD(clan.getId()); // Pledge ID
|
packet.writeD(clan.getId()); // Pledge ID
|
||||||
packet.writeD(ClanLevelData.getLevelRequirement(clan.getLevel())); // Next level cost
|
packet.writeD(ClanLevelData.getLevelRequirement(clan.getLevel())); // Next level cost
|
||||||
packet.writeD(0); // Max pledge members
|
packet.writeD(ClanLevelData.getCommonMemberLimit(clan.getLevel())); // Max pledge members
|
||||||
packet.writeD(0); // Max elite members
|
packet.writeD(ClanLevelData.getEliteMemberLimit(clan.getLevel())); // Max elite members
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 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 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-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>
|
</body></html>
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -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>
|
|
@@ -64,13 +64,6 @@ public final class Clan extends AbstractNpcAI
|
|||||||
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
LEADER_REQUIRED.put("9000-04.htm", "9000-04-no.htm");
|
||||||
LEADER_REQUIRED.put("9000-05.htm", "9000-05-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-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()
|
private Clan()
|
||||||
|
@@ -39,11 +39,59 @@ public class ClanLevelData
|
|||||||
27300000,
|
27300000,
|
||||||
36400000,
|
36400000,
|
||||||
46410000,
|
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)
|
public static int getLevelRequirement(int clanLevel)
|
||||||
{
|
{
|
||||||
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
return CLAN_LEVEL_REQUIREMENTS[clanLevel];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getCommonMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return COMMON_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getEliteMemberLimit(int clanLevel)
|
||||||
|
{
|
||||||
|
return ELITE_CLAN_MEMBER_LIMIT[clanLevel];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -67,7 +67,6 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
|
|||||||
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
import com.l2jmobius.gameserver.network.serverpackets.CreatureSay;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
import com.l2jmobius.gameserver.network.serverpackets.ExSubPledgeSkillAdd;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
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.PledgeShowInfoUpdate;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListAll;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.PledgeShowMemberListDeleteAll;
|
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;
|
public static final int PENALTY_TYPE_DISMISS_CLAN = 3;
|
||||||
/** Leader clan dissolve ally */
|
/** Leader clan dissolve ally */
|
||||||
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
|
||||||
// Sub-unit types
|
|
||||||
/** Clan subunit type of Academy */
|
// Pledge types
|
||||||
public static final int SUBUNIT_ACADEMY = -1;
|
public static final int PLEDGE_CLASS_COMMON = 0;
|
||||||
/** Clan subunit type of Royal Guard A */
|
public static final int PLEDGE_CLASS_ELITE = 100;
|
||||||
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;
|
|
||||||
|
|
||||||
private String _name;
|
private String _name;
|
||||||
private int _clanId;
|
private int _clanId;
|
||||||
@@ -289,14 +277,14 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
|
|
||||||
if (exLeader != null)
|
if (exLeader != null)
|
||||||
{
|
{
|
||||||
exLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(exLeader));
|
exLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
exLeader.broadcastUserInfo();
|
exLeader.broadcastUserInfo();
|
||||||
exLeader.checkItemRestriction();
|
exLeader.checkItemRestriction();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newLeader != null)
|
if (newLeader != null)
|
||||||
{
|
{
|
||||||
newLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(newLeader));
|
newLeader.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
newLeader.getClanPrivileges().setAll();
|
newLeader.getClanPrivileges().setAll();
|
||||||
|
|
||||||
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
|
||||||
@@ -377,7 +365,7 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
addClanMember(member);
|
addClanMember(member);
|
||||||
member.setPlayerInstance(player);
|
member.setPlayerInstance(player);
|
||||||
player.setClan(this);
|
player.setClan(this);
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
player.setPledgeClass(PLEDGE_CLASS_COMMON);
|
||||||
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
player.sendPacket(new PledgeShowMemberListUpdate(player));
|
||||||
player.sendPacket(new PledgeSkillList(this));
|
player.sendPacket(new PledgeSkillList(this));
|
||||||
|
|
||||||
@@ -526,7 +514,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
player.setClanJoinExpiryTime(clanJoinExpiryTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
|
||||||
player.broadcastUserInfo();
|
player.broadcastUserInfo();
|
||||||
// disable clan tab
|
// disable clan tab
|
||||||
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
|
||||||
@@ -563,102 +550,6 @@ public class L2Clan implements IIdentifiable, INamable
|
|||||||
return result;
|
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.
|
* @param exclude the object Id to exclude from list.
|
||||||
* @return all online members excluding the one with object id {code exclude}.
|
* @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()]);
|
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;
|
if ((_subPledges == null) || (_subPledges.get(pledgeType) != null))
|
||||||
pledgeType = getAvailablePledgeTypes(pledgeType);
|
|
||||||
if (pledgeType == 0)
|
|
||||||
{
|
{
|
||||||
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Royal Guard 5000 points per each
|
final String subPledgeName = pledgeType == PLEDGE_CLASS_COMMON ? "COMMON" : "ELITE";
|
||||||
// Order of Knights 10000 points per each
|
SubPledge subPledge = null;
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
try (Connection con = DatabaseFactory.getConnection();
|
||||||
PreparedStatement ps = con.prepareStatement("INSERT INTO clan_subpledges (clan_id,sub_pledge_id,name,leader_id) values (?,?,?,?)"))
|
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(1, _clanId);
|
||||||
ps.setInt(2, pledgeType);
|
ps.setInt(2, pledgeType);
|
||||||
ps.setString(3, subPledgeName);
|
ps.setString(3, subPledgeName);
|
||||||
ps.setInt(4, pledgeType != -1 ? leaderId : 0);
|
ps.setInt(4, _leader.getObjectId());
|
||||||
ps.execute();
|
ps.execute();
|
||||||
|
|
||||||
subPledge = new SubPledge(pledgeType, subPledgeName, leaderId);
|
subPledge = new SubPledge(pledgeType, subPledgeName, _leader.getObjectId());
|
||||||
_subPledges.put(pledgeType, subPledge);
|
_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)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
LOGGER.log(Level.SEVERE, "Error saving sub clan data: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeShowInfoUpdate(_leader.getClan()));
|
||||||
broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
// broadcastToOnlineMembers(new PledgeReceiveSubPledgeCreated(subPledge, _leader.getClan()));
|
||||||
return subPledge;
|
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)
|
public void updateSubPledgeInDB(int pledgeType)
|
||||||
{
|
{
|
||||||
try (Connection con = DatabaseFactory.getConnection();
|
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);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
if (getSubPledgeMembersCount(pledgeType) >= getMaxNrOfMembers(pledgeType))
|
if (getSubPledgeMembersCount(pledgeType) >= (pledgeType == 0 ? ClanLevelData.getCommonMemberLimit(_level) : ClanLevelData.getEliteMemberLimit(_level)))
|
||||||
{
|
{
|
||||||
if (pledgeType == 0)
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
{
|
sm.addString(_name);
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
activeChar.sendPacket(sm);
|
||||||
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 false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -714,6 +714,10 @@ public class L2ClanMember
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 11:
|
case 11:
|
||||||
|
case 12:
|
||||||
|
case 13:
|
||||||
|
case 14:
|
||||||
|
case 15:
|
||||||
{
|
{
|
||||||
switch (player.getPledgeType())
|
switch (player.getPledgeType())
|
||||||
{
|
{
|
||||||
|
@@ -1040,25 +1040,22 @@ public final class L2PcInstance extends L2Playable
|
|||||||
}
|
}
|
||||||
if ((clan != null) && (targetClan != null))
|
if ((clan != null) && (targetClan != null))
|
||||||
{
|
{
|
||||||
if ((target.getPledgeType() != L2Clan.SUBUNIT_ACADEMY) && (getPledgeType() != L2Clan.SUBUNIT_ACADEMY))
|
ClanWar war = clan.getWarWith(target.getClan().getId());
|
||||||
|
if (war != null)
|
||||||
{
|
{
|
||||||
ClanWar war = clan.getWarWith(target.getClan().getId());
|
switch (war.getState())
|
||||||
if (war != null)
|
|
||||||
{
|
{
|
||||||
switch (war.getState())
|
case DECLARATION:
|
||||||
|
case BLOOD_DECLARATION:
|
||||||
{
|
{
|
||||||
case DECLARATION:
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case BLOOD_DECLARATION:
|
break;
|
||||||
{
|
}
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
case MUTUAL:
|
||||||
break;
|
{
|
||||||
}
|
result |= RelationChanged.RELATION_DECLARED_WAR;
|
||||||
case MUTUAL:
|
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
||||||
{
|
break;
|
||||||
result |= RelationChanged.RELATION_DECLARED_WAR;
|
|
||||||
result |= RelationChanged.RELATION_MUTUAL_WAR;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9036,6 +9033,10 @@ public final class L2PcInstance extends L2Playable
|
|||||||
|
|
||||||
public void setPledgeType(int typeId)
|
public void setPledgeType(int typeId)
|
||||||
{
|
{
|
||||||
|
if (_clan != null)
|
||||||
|
{
|
||||||
|
_clan.createSubPledge(typeId);
|
||||||
|
}
|
||||||
_pledgeType = typeId;
|
_pledgeType = typeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,7 +30,6 @@ import com.l2jmobius.gameserver.instancemanager.FortManager;
|
|||||||
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.FortSiegeManager;
|
||||||
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
import com.l2jmobius.gameserver.instancemanager.SiegeManager;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan.SubPledge;
|
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
import com.l2jmobius.gameserver.model.L2SkillLearn;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
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.MagicSkillUse;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
import com.l2jmobius.gameserver.network.serverpackets.UserInfo;
|
|
||||||
import com.l2jmobius.gameserver.util.Util;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ...
|
* This class ...
|
||||||
@@ -124,51 +121,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
|
|
||||||
ClanTable.getInstance().createClan(player, cmdParams);
|
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"))
|
else if (actualCommand.equalsIgnoreCase("create_ally"))
|
||||||
{
|
{
|
||||||
if (cmdParams.isEmpty())
|
if (cmdParams.isEmpty())
|
||||||
@@ -371,207 +323,6 @@ public class L2VillageMasterInstance extends L2NpcInstance
|
|||||||
clan.updateClanInDB();
|
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.
|
* this displays PledgeSkillList to the player.
|
||||||
* @param player
|
* @param player
|
||||||
|
@@ -98,7 +98,7 @@ public final class RequestAnswerJoinPledge implements IClientIncomingPacket
|
|||||||
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
activeChar.sendPacket(new JoinPledge(requestor.getClanId()));
|
||||||
|
|
||||||
activeChar.setPledgeType(pledgeType);
|
activeChar.setPledgeType(pledgeType);
|
||||||
if (pledgeType == L2Clan.SUBUNIT_ACADEMY)
|
if (pledgeType == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
activeChar.setPowerGrade(9); // academy
|
activeChar.setPowerGrade(9); // academy
|
||||||
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
activeChar.setLvlJoinedAcademy(activeChar.getLevel());
|
||||||
|
@@ -17,11 +17,14 @@
|
|||||||
package com.l2jmobius.gameserver.network.clientpackets;
|
package com.l2jmobius.gameserver.network.clientpackets;
|
||||||
|
|
||||||
import com.l2jmobius.commons.network.PacketReader;
|
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.ClanPrivilege;
|
||||||
import com.l2jmobius.gameserver.model.L2Clan;
|
import com.l2jmobius.gameserver.model.L2Clan;
|
||||||
import com.l2jmobius.gameserver.model.L2ClanMember;
|
import com.l2jmobius.gameserver.model.L2ClanMember;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
|
||||||
import com.l2jmobius.gameserver.network.L2GameClient;
|
import com.l2jmobius.gameserver.network.L2GameClient;
|
||||||
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
|
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format: (ch) dSdS
|
* Format: (ch) dSdS
|
||||||
@@ -29,29 +32,22 @@ import com.l2jmobius.gameserver.network.L2GameClient;
|
|||||||
*/
|
*/
|
||||||
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
public final class RequestPledgeReorganizeMember implements IClientIncomingPacket
|
||||||
{
|
{
|
||||||
private int _isMemberSelected;
|
|
||||||
private String _memberName;
|
private String _memberName;
|
||||||
private int _newPledgeType;
|
private int _newPledgeType;
|
||||||
private String _selectedMember;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean read(L2GameClient client, PacketReader packet)
|
public boolean read(L2GameClient client, PacketReader packet)
|
||||||
{
|
{
|
||||||
_isMemberSelected = packet.readD();
|
packet.readD(); // _isMemberSelected
|
||||||
_memberName = packet.readS();
|
_memberName = packet.readS();
|
||||||
_newPledgeType = packet.readD();
|
_newPledgeType = packet.readD();
|
||||||
_selectedMember = packet.readS();
|
packet.readS(); // _selectedMember
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run(L2GameClient client)
|
public void run(L2GameClient client)
|
||||||
{
|
{
|
||||||
if (_isMemberSelected == 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final L2PcInstance activeChar = client.getActiveChar();
|
final L2PcInstance activeChar = client.getActiveChar();
|
||||||
if (activeChar == null)
|
if (activeChar == null)
|
||||||
{
|
{
|
||||||
@@ -75,21 +71,21 @@ public final class RequestPledgeReorganizeMember implements IClientIncomingPacke
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2ClanMember member2 = clan.getClanMember(_selectedMember);
|
|
||||||
if ((member2 == null) || (member2.getObjectId() == clan.getLeaderId()))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int oldPledgeType = member1.getPledgeType();
|
final int oldPledgeType = member1.getPledgeType();
|
||||||
if (oldPledgeType == _newPledgeType)
|
if (oldPledgeType == _newPledgeType)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (clan.getSubPledgeMembersCount(_newPledgeType) >= (_newPledgeType == 0 ? ClanLevelData.getCommonMemberLimit(clan.getLevel()) : ClanLevelData.getEliteMemberLimit(clan.getLevel())))
|
||||||
|
{
|
||||||
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_IS_FULL_AND_CANNOT_ACCEPT_ADDITIONAL_CLAN_MEMBERS_AT_THIS_TIME);
|
||||||
|
sm.addString(_newPledgeType == 0 ? "Common Members" : "Elite Members");
|
||||||
|
activeChar.sendPacket(sm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
member1.setPledgeType(_newPledgeType);
|
member1.setPledgeType(_newPledgeType);
|
||||||
member2.setPledgeType(oldPledgeType);
|
|
||||||
clan.broadcastClanStatus();
|
clan.broadcastClanStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -69,7 +69,7 @@ public final class RequestPledgeSetAcademyMaster implements IClientIncomingPacke
|
|||||||
|
|
||||||
L2ClanMember apprenticeMember;
|
L2ClanMember apprenticeMember;
|
||||||
L2ClanMember sponsorMember;
|
L2ClanMember sponsorMember;
|
||||||
if (currentMember.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (currentMember.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
apprenticeMember = currentMember;
|
apprenticeMember = currentMember;
|
||||||
sponsorMember = targetMember;
|
sponsorMember = targetMember;
|
||||||
|
@@ -74,7 +74,7 @@ public final class RequestPledgeSetMemberPowerGrade implements IClientIncomingPa
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (member.getPledgeType() == L2Clan.SUBUNIT_ACADEMY)
|
if (member.getPledgeType() == -1) // Academy - Removed.
|
||||||
{
|
{
|
||||||
// also checked from client side
|
// also checked from client side
|
||||||
activeChar.sendPacket(SystemMessageId.THAT_PRIVILEGE_CANNOT_BE_GRANTED_TO_A_CLAN_ACADEMY_MEMBER);
|
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
Reference in New Issue
Block a user