Updated clan privileges to match latest client.

Contributed by CostyKiller.
This commit is contained in:
MobiusDevelopment
2022-05-11 10:06:51 +00:00
parent ea80c84027
commit 8d30fcb7d0
105 changed files with 413 additions and 309 deletions

View File

@@ -68,7 +68,7 @@ public class Nottingale extends AbstractNpcAI
{ {
if (player.getClan() != null) if (player.getClan() != null)
{ {
if (player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId())) if (player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId()))
{ {
htmltext = event; htmltext = event;
} }

View File

@@ -19,7 +19,9 @@ package ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import ai.AbstractNpcAI; import ai.AbstractNpcAI;
@@ -57,14 +59,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{ {
htmltext = "Roiental-03a.html"; htmltext = "Roiental-03a.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01a.html"; htmltext = "Roiental-01a.html";
@@ -76,14 +86,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{ {
htmltext = "Roiental-03b.html"; htmltext = "Roiental-03b.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01b.html"; htmltext = "Roiental-01b.html";
@@ -95,14 +113,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{ {
htmltext = "Roiental-03c.html"; htmltext = "Roiental-03c.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01c.html"; htmltext = "Roiental-01c.html";

View File

@@ -151,7 +151,7 @@ public class CastleChamberlain extends AbstractNpcAI
private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level) private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level)
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html; final NpcHtmlMessage html;
final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10";
@@ -461,7 +461,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "siege_functions": case "siege_functions":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -484,7 +484,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_doors": case "manage_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -511,7 +511,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors": case "upgrade_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int type = Integer.parseInt(st.nextToken()); final int type = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -528,7 +528,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors_confirm": case "upgrade_doors_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -579,7 +579,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_trap": case "manage_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -608,7 +608,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap": case "upgrade_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final String trapIndex = st.nextToken(); final String trapIndex = st.nextToken();
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -626,7 +626,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap_confirm": case "upgrade_trap_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -688,7 +688,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault": case "manage_vault":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -702,7 +702,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_deposit": case "manage_vault_deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -716,7 +716,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_withdraw": case "manage_vault_withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -730,7 +730,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "deposit": case "deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if ((amount > 0) && (amount < Inventory.MAX_ADENA)) if ((amount > 0) && (amount < Inventory.MAX_ADENA))
@@ -755,7 +755,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "withdraw": case "withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if (amount <= castle.getTreasury()) if (amount <= castle.getTreasury())
@@ -832,7 +832,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "doors": case "doors":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -848,7 +848,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "operate_door": case "operate_door":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -869,12 +869,12 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "additional_functions": case "additional_functions":
{ {
htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS)) ? "castletdecomanage.html" : "chamberlain-21.html";
break; break;
} }
case "recovery": case "recovery":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html");
funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP"); funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP");
@@ -890,7 +890,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "other": case "other":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html");
funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP"); funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP");
@@ -935,7 +935,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "set_func": case "set_func":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int func = Integer.parseInt(st.nextToken()); final int func = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -1081,7 +1081,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "list_siege_clans": case "list_siege_clans":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
castle.getSiege().listRegisterClan(player); castle.getSiege().listRegisterClan(player);
} }

View File

@@ -340,7 +340,7 @@ public class CastleCourtMagician extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -136,7 +136,7 @@ public class CastleDoorManager extends AbstractNpcAI
@Override @Override
public String onFirstTalk(Npc npc, Player player) public String onFirstTalk(Npc npc, Player player)
{ {
return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html"; return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html";
} }
private String getHtmlName(Npc npc) private String getHtmlName(Npc npc)

View File

@@ -74,7 +74,7 @@ public class ClanHallDoorManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
final boolean open = st.nextToken().equals("1"); final boolean open = st.nextToken().equals("1");
clanHall.openCloseDoors(open); clanHall.openCloseDoors(open);

View File

@@ -134,7 +134,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -175,7 +175,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "useFunctions": case "useFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OTHER_RIGHTS)) if (player.hasClanPrivilege(ClanPrivilege.CH_USE_FUNCTIONS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {
@@ -303,7 +303,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageFunctions": case "manageFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CH_SETTTINGS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {

View File

@@ -111,7 +111,7 @@ public class ClanTrader extends AbstractNpcAI
String htmltext = null; String htmltext = null;
if (player.getClanId() > 0) if (player.getClanId() > 0)
{ {
htmltext = npc.getId() + ((player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) ? ".html" : "-06.html"); htmltext = npc.getId() + ((player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS)) ? ".html" : "-06.html");
} }
else else
{ {

View File

@@ -100,7 +100,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }
@@ -169,7 +169,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }

View File

@@ -254,7 +254,7 @@ public class SupportUnitCaptain extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -80,7 +80,7 @@ public class ClanWarehouse implements IBypassHandler
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
if (!player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE);
return true; return true;

View File

@@ -134,7 +134,7 @@ public abstract class AirShipController extends AbstractNpcAI
player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER); player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER);
return null; return null;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP)) if (!player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS))
{ {
player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER); player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER);
return null; return null;

View File

@@ -185,7 +185,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("operate_door")) // door else if (actualCommand.equalsIgnoreCase("operate_door")) // door
// control // control
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
if (!val.isEmpty()) if (!val.isEmpty())
{ {
@@ -230,7 +230,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("manage_vault")) else if (actualCommand.equalsIgnoreCase("manage_vault"))
{ {
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
if (val.equalsIgnoreCase("deposit")) if (val.equalsIgnoreCase("deposit"))
{ {
@@ -320,7 +320,7 @@ public class FortManager extends Merchant
} }
else if (actualCommand.equalsIgnoreCase("manage")) else if (actualCommand.equalsIgnoreCase("manage"))
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (val.equalsIgnoreCase("recovery")) if (val.equalsIgnoreCase("recovery"))
{ {
@@ -995,7 +995,7 @@ public class FortManager extends Merchant
private void showVaultWindowWithdraw(Player player) private void showVaultWindowWithdraw(Player player)
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
player.setActiveWarehouse(player.getClan().getWarehouse()); player.setActiveWarehouse(player.getClan().getWarehouse());

View File

@@ -2040,7 +2040,7 @@ public class Clan implements IIdentifiable, INamable
{ {
return false; return false;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_JOIN_CLAN)) if (!player.hasClanPrivilege(ClanPrivilege.CL_INVITE))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return false; return false;

View File

@@ -25,35 +25,35 @@ public enum ClanPrivilege
{ {
/** dummy entry */ /** dummy entry */
DUMMY, DUMMY,
/** Privilege to join clan */
CL_JOIN_CLAN, /** System Privileges */
/** Privilege to give a title */ CL_INVITE,
CL_GIVE_TITLE, CL_MANAGE_TITLES,
/** Privilege to view warehouse content */ CL_WAREHOUSE_SEARCH,
CL_VIEW_WAREHOUSE,
/** Privilege to manage clan ranks */
CL_MANAGE_RANKS, CL_MANAGE_RANKS,
CL_PLEDGE_WAR, CL_CLAN_WAR,
CL_DISMISS, CL_DISMISS,
/** Privilege to register clan crest */ CL_EDIT_CREST,
CL_REGISTER_CREST, CL_USE_FUNCTIONS,
CL_APPRENTICE, CL_SETTINGS,
CL_TROOPS_FAME, CL_THRONE_OF_HEROES,
CL_SUMMON_AIRSHIP,
/** Privilege to open a door */ /** Clan Hall Privileges */
CH_OPEN_DOOR, CH_ENTRY_EXIT_RIGHTS,
CH_OTHER_RIGHTS, CH_USE_FUNCTIONS,
CH_AUCTION, CH_AUCTION,
CH_DISMISS, CH_DISMISS,
CH_SET_FUNCTIONS, CH_SETTTINGS,
CS_OPEN_DOOR,
CS_MANOR_ADMIN, /** Castle/Fortress Privileges */
CS_MANAGE_SIEGE, CS_ENTRY_EXIT_RIGHTS,
CS_SIEGE_WAR,
CS_USE_FUNCTIONS, CS_USE_FUNCTIONS,
CS_SETTINGS,
CS_DISMISS, CS_DISMISS,
CS_TAXES, CS_MANAGE_TAXES,
CS_MERCENARIES, CS_MERCENARIES,
CS_SET_FUNCTIONS; CS_MANOR_ADMIN;
public int getBitmask() public int getBitmask()
{ {

View File

@@ -183,7 +183,7 @@ public class RequestAcquireSkill implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -113,7 +113,7 @@ public class RequestAcquireSkillInfo implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -75,7 +75,7 @@ public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -55,7 +55,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
else else
{ {
// Can the player change/give a title? // Can the player change/give a title?
if (!player.hasClanPrivilege(ClanPrivilege.CL_GIVE_TITLE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_MANAGE_TITLES))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -52,7 +52,7 @@ public class RequestJoinSiege implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -65,7 +65,7 @@ public class RequestPledgePower implements IClientIncomingPacket
// Clan war, right to dismiss, set functions // Clan war, right to dismiss, set functions
// Auction, manage taxes, attack/defend registration, mercenary management // Auction, manage taxes, attack/defend registration, mercenary management
// => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR? // => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR?
_privs &= ClanPrivilege.CL_VIEW_WAREHOUSE.getBitmask() | ClanPrivilege.CH_OPEN_DOOR.getBitmask() | ClanPrivilege.CS_OPEN_DOOR.getBitmask(); _privs &= ClanPrivilege.CL_WAREHOUSE_SEARCH.getBitmask() | ClanPrivilege.CH_ENTRY_EXIT_RIGHTS.getBitmask() | ClanPrivilege.CS_ENTRY_EXIT_RIGHTS.getBitmask();
} }
player.getClan().setRankPrivs(_rank, _privs); player.getClan().setRankPrivs(_rank, _privs);
} }

View File

@@ -54,7 +54,7 @@ public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_APPRENTICE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_DISMISS))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_DISMISS_AN_APPRENTICE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_DISMISS_AN_APPRENTICE);
return; return;

View File

@@ -80,7 +80,7 @@ public class RequestSetPledgeCrest implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -63,7 +63,7 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -68,7 +68,7 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
} }
// Check if player who does the request has the correct rights to do it // Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -72,7 +72,7 @@ public class RequestSurrenderPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -103,7 +103,7 @@ public class SendWareHouseWithDrawList implements IClientIncomingPacket
if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH) if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH)
{ {
if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
return; return;
} }

View File

@@ -68,7 +68,7 @@ public class Nottingale extends AbstractNpcAI
{ {
if (player.getClan() != null) if (player.getClan() != null)
{ {
if (player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId())) if (player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId()))
{ {
htmltext = event; htmltext = event;
} }

View File

@@ -19,7 +19,9 @@ package ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import ai.AbstractNpcAI; import ai.AbstractNpcAI;
@@ -57,14 +59,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{ {
htmltext = "Roiental-03a.html"; htmltext = "Roiental-03a.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01a.html"; htmltext = "Roiental-01a.html";
@@ -76,14 +86,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{ {
htmltext = "Roiental-03b.html"; htmltext = "Roiental-03b.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01b.html"; htmltext = "Roiental-01b.html";
@@ -95,14 +113,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{ {
htmltext = "Roiental-03c.html"; htmltext = "Roiental-03c.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01c.html"; htmltext = "Roiental-01c.html";

View File

@@ -151,7 +151,7 @@ public class CastleChamberlain extends AbstractNpcAI
private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level) private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level)
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html; final NpcHtmlMessage html;
final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10";
@@ -461,7 +461,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "siege_functions": case "siege_functions":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -484,7 +484,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_doors": case "manage_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -511,7 +511,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors": case "upgrade_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int type = Integer.parseInt(st.nextToken()); final int type = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -528,7 +528,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors_confirm": case "upgrade_doors_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -579,7 +579,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_trap": case "manage_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -608,7 +608,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap": case "upgrade_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final String trapIndex = st.nextToken(); final String trapIndex = st.nextToken();
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -626,7 +626,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap_confirm": case "upgrade_trap_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -688,7 +688,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault": case "manage_vault":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -702,7 +702,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_deposit": case "manage_vault_deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -716,7 +716,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_withdraw": case "manage_vault_withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -730,7 +730,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "deposit": case "deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if ((amount > 0) && (amount < Inventory.MAX_ADENA)) if ((amount > 0) && (amount < Inventory.MAX_ADENA))
@@ -755,7 +755,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "withdraw": case "withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if (amount <= castle.getTreasury()) if (amount <= castle.getTreasury())
@@ -832,7 +832,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "doors": case "doors":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -848,7 +848,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "operate_door": case "operate_door":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -869,12 +869,12 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "additional_functions": case "additional_functions":
{ {
htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS)) ? "castletdecomanage.html" : "chamberlain-21.html";
break; break;
} }
case "recovery": case "recovery":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html");
funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP"); funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP");
@@ -890,7 +890,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "other": case "other":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html");
funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP"); funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP");
@@ -935,7 +935,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "set_func": case "set_func":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int func = Integer.parseInt(st.nextToken()); final int func = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -1081,7 +1081,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "list_siege_clans": case "list_siege_clans":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
castle.getSiege().listRegisterClan(player); castle.getSiege().listRegisterClan(player);
} }

View File

@@ -340,7 +340,7 @@ public class CastleCourtMagician extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -136,7 +136,7 @@ public class CastleDoorManager extends AbstractNpcAI
@Override @Override
public String onFirstTalk(Npc npc, Player player) public String onFirstTalk(Npc npc, Player player)
{ {
return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html"; return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html";
} }
private String getHtmlName(Npc npc) private String getHtmlName(Npc npc)

View File

@@ -74,7 +74,7 @@ public class ClanHallDoorManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
final boolean open = st.nextToken().equals("1"); final boolean open = st.nextToken().equals("1");
clanHall.openCloseDoors(open); clanHall.openCloseDoors(open);

View File

@@ -134,7 +134,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -175,7 +175,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "useFunctions": case "useFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OTHER_RIGHTS)) if (player.hasClanPrivilege(ClanPrivilege.CH_USE_FUNCTIONS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {
@@ -303,7 +303,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageFunctions": case "manageFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CH_SETTTINGS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {

View File

@@ -100,7 +100,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }
@@ -169,7 +169,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }

View File

@@ -254,7 +254,7 @@ public class SupportUnitCaptain extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -80,7 +80,7 @@ public class ClanWarehouse implements IBypassHandler
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
if (!player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE);
return true; return true;

View File

@@ -134,7 +134,7 @@ public abstract class AirShipController extends AbstractNpcAI
player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER); player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER);
return null; return null;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP)) if (!player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS))
{ {
player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER); player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER);
return null; return null;

View File

@@ -185,7 +185,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("operate_door")) // door else if (actualCommand.equalsIgnoreCase("operate_door")) // door
// control // control
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
if (!val.isEmpty()) if (!val.isEmpty())
{ {
@@ -230,7 +230,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("manage_vault")) else if (actualCommand.equalsIgnoreCase("manage_vault"))
{ {
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
if (val.equalsIgnoreCase("deposit")) if (val.equalsIgnoreCase("deposit"))
{ {
@@ -320,7 +320,7 @@ public class FortManager extends Merchant
} }
else if (actualCommand.equalsIgnoreCase("manage")) else if (actualCommand.equalsIgnoreCase("manage"))
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (val.equalsIgnoreCase("recovery")) if (val.equalsIgnoreCase("recovery"))
{ {
@@ -995,7 +995,7 @@ public class FortManager extends Merchant
private void showVaultWindowWithdraw(Player player) private void showVaultWindowWithdraw(Player player)
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
player.setActiveWarehouse(player.getClan().getWarehouse()); player.setActiveWarehouse(player.getClan().getWarehouse());

View File

@@ -2040,7 +2040,7 @@ public class Clan implements IIdentifiable, INamable
{ {
return false; return false;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_JOIN_CLAN)) if (!player.hasClanPrivilege(ClanPrivilege.CL_INVITE))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return false; return false;

View File

@@ -25,35 +25,35 @@ public enum ClanPrivilege
{ {
/** dummy entry */ /** dummy entry */
DUMMY, DUMMY,
/** Privilege to join clan */
CL_JOIN_CLAN, /** System Privileges */
/** Privilege to give a title */ CL_INVITE,
CL_GIVE_TITLE, CL_MANAGE_TITLES,
/** Privilege to view warehouse content */ CL_WAREHOUSE_SEARCH,
CL_VIEW_WAREHOUSE,
/** Privilege to manage clan ranks */
CL_MANAGE_RANKS, CL_MANAGE_RANKS,
CL_PLEDGE_WAR, CL_CLAN_WAR,
CL_DISMISS, CL_DISMISS,
/** Privilege to register clan crest */ CL_EDIT_CREST,
CL_REGISTER_CREST, CL_USE_FUNCTIONS,
CL_APPRENTICE, CL_SETTINGS,
CL_TROOPS_FAME, CL_THRONE_OF_HEROES,
CL_SUMMON_AIRSHIP,
/** Privilege to open a door */ /** Clan Hall Privileges */
CH_OPEN_DOOR, CH_ENTRY_EXIT_RIGHTS,
CH_OTHER_RIGHTS, CH_USE_FUNCTIONS,
CH_AUCTION, CH_AUCTION,
CH_DISMISS, CH_DISMISS,
CH_SET_FUNCTIONS, CH_SETTTINGS,
CS_OPEN_DOOR,
CS_MANOR_ADMIN, /** Castle/Fortress Privileges */
CS_MANAGE_SIEGE, CS_ENTRY_EXIT_RIGHTS,
CS_SIEGE_WAR,
CS_USE_FUNCTIONS, CS_USE_FUNCTIONS,
CS_SETTINGS,
CS_DISMISS, CS_DISMISS,
CS_TAXES, CS_MANAGE_TAXES,
CS_MERCENARIES, CS_MERCENARIES,
CS_SET_FUNCTIONS; CS_MANOR_ADMIN;
public int getBitmask() public int getBitmask()
{ {

View File

@@ -183,7 +183,7 @@ public class RequestAcquireSkill implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -113,7 +113,7 @@ public class RequestAcquireSkillInfo implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -75,7 +75,7 @@ public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -55,7 +55,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
else else
{ {
// Can the player change/give a title? // Can the player change/give a title?
if (!player.hasClanPrivilege(ClanPrivilege.CL_GIVE_TITLE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_MANAGE_TITLES))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -52,7 +52,7 @@ public class RequestJoinSiege implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -65,7 +65,7 @@ public class RequestPledgePower implements IClientIncomingPacket
// Clan war, right to dismiss, set functions // Clan war, right to dismiss, set functions
// Auction, manage taxes, attack/defend registration, mercenary management // Auction, manage taxes, attack/defend registration, mercenary management
// => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR? // => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR?
_privs &= ClanPrivilege.CL_VIEW_WAREHOUSE.getBitmask() | ClanPrivilege.CH_OPEN_DOOR.getBitmask() | ClanPrivilege.CS_OPEN_DOOR.getBitmask(); _privs &= ClanPrivilege.CL_WAREHOUSE_SEARCH.getBitmask() | ClanPrivilege.CH_ENTRY_EXIT_RIGHTS.getBitmask() | ClanPrivilege.CS_ENTRY_EXIT_RIGHTS.getBitmask();
} }
player.getClan().setRankPrivs(_rank, _privs); player.getClan().setRankPrivs(_rank, _privs);
} }

View File

@@ -54,7 +54,7 @@ public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_APPRENTICE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_DISMISS))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_DISMISS_AN_APPRENTICE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_DISMISS_AN_APPRENTICE);
return; return;

View File

@@ -80,7 +80,7 @@ public class RequestSetPledgeCrest implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -63,7 +63,7 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -68,7 +68,7 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
} }
// Check if player who does the request has the correct rights to do it // Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -72,7 +72,7 @@ public class RequestSurrenderPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -103,7 +103,7 @@ public class SendWareHouseWithDrawList implements IClientIncomingPacket
if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH) if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH)
{ {
if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
return; return;
} }

View File

@@ -68,7 +68,7 @@ public class Nottingale extends AbstractNpcAI
{ {
if (player.getClan() != null) if (player.getClan() != null)
{ {
if (player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId())) if (player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId()))
{ {
htmltext = event; htmltext = event;
} }

View File

@@ -19,7 +19,9 @@ package ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import ai.AbstractNpcAI; import ai.AbstractNpcAI;
@@ -57,14 +59,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{ {
htmltext = "Roiental-03a.html"; htmltext = "Roiental-03a.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01a.html"; htmltext = "Roiental-01a.html";
@@ -76,14 +86,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{ {
htmltext = "Roiental-03b.html"; htmltext = "Roiental-03b.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01b.html"; htmltext = "Roiental-01b.html";
@@ -95,14 +113,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{ {
htmltext = "Roiental-03c.html"; htmltext = "Roiental-03c.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01c.html"; htmltext = "Roiental-01c.html";

View File

@@ -151,7 +151,7 @@ public class CastleChamberlain extends AbstractNpcAI
private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level) private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level)
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html; final NpcHtmlMessage html;
final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10";
@@ -461,7 +461,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "siege_functions": case "siege_functions":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -484,7 +484,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_doors": case "manage_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -511,7 +511,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors": case "upgrade_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int type = Integer.parseInt(st.nextToken()); final int type = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -528,7 +528,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors_confirm": case "upgrade_doors_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -579,7 +579,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_trap": case "manage_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -608,7 +608,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap": case "upgrade_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final String trapIndex = st.nextToken(); final String trapIndex = st.nextToken();
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -626,7 +626,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap_confirm": case "upgrade_trap_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -688,7 +688,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault": case "manage_vault":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -702,7 +702,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_deposit": case "manage_vault_deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -716,7 +716,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_withdraw": case "manage_vault_withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -730,7 +730,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "deposit": case "deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if ((amount > 0) && (amount < Inventory.MAX_ADENA)) if ((amount > 0) && (amount < Inventory.MAX_ADENA))
@@ -755,7 +755,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "withdraw": case "withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if (amount <= castle.getTreasury()) if (amount <= castle.getTreasury())
@@ -832,7 +832,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "doors": case "doors":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -848,7 +848,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "operate_door": case "operate_door":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -869,12 +869,12 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "additional_functions": case "additional_functions":
{ {
htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS)) ? "castletdecomanage.html" : "chamberlain-21.html";
break; break;
} }
case "recovery": case "recovery":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html");
funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP"); funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP");
@@ -890,7 +890,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "other": case "other":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html");
funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP"); funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP");
@@ -935,7 +935,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "set_func": case "set_func":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int func = Integer.parseInt(st.nextToken()); final int func = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -1081,7 +1081,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "list_siege_clans": case "list_siege_clans":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
castle.getSiege().listRegisterClan(player); castle.getSiege().listRegisterClan(player);
} }

View File

@@ -340,7 +340,7 @@ public class CastleCourtMagician extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -136,7 +136,7 @@ public class CastleDoorManager extends AbstractNpcAI
@Override @Override
public String onFirstTalk(Npc npc, Player player) public String onFirstTalk(Npc npc, Player player)
{ {
return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html"; return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html";
} }
private String getHtmlName(Npc npc) private String getHtmlName(Npc npc)

View File

@@ -74,7 +74,7 @@ public class ClanHallDoorManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
final boolean open = st.nextToken().equals("1"); final boolean open = st.nextToken().equals("1");
clanHall.openCloseDoors(open); clanHall.openCloseDoors(open);

View File

@@ -134,7 +134,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -175,7 +175,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "useFunctions": case "useFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OTHER_RIGHTS)) if (player.hasClanPrivilege(ClanPrivilege.CH_USE_FUNCTIONS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {
@@ -303,7 +303,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageFunctions": case "manageFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CH_SETTTINGS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {

View File

@@ -100,7 +100,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }
@@ -169,7 +169,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }

View File

@@ -254,7 +254,7 @@ public class SupportUnitCaptain extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -80,7 +80,7 @@ public class ClanWarehouse implements IBypassHandler
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
if (!player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE);
return true; return true;

View File

@@ -134,7 +134,7 @@ public abstract class AirShipController extends AbstractNpcAI
player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER); player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER);
return null; return null;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP)) if (!player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS))
{ {
player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER); player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER);
return null; return null;

View File

@@ -185,7 +185,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("operate_door")) // door else if (actualCommand.equalsIgnoreCase("operate_door")) // door
// control // control
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
if (!val.isEmpty()) if (!val.isEmpty())
{ {
@@ -230,7 +230,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("manage_vault")) else if (actualCommand.equalsIgnoreCase("manage_vault"))
{ {
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
if (val.equalsIgnoreCase("deposit")) if (val.equalsIgnoreCase("deposit"))
{ {
@@ -320,7 +320,7 @@ public class FortManager extends Merchant
} }
else if (actualCommand.equalsIgnoreCase("manage")) else if (actualCommand.equalsIgnoreCase("manage"))
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (val.equalsIgnoreCase("recovery")) if (val.equalsIgnoreCase("recovery"))
{ {
@@ -995,7 +995,7 @@ public class FortManager extends Merchant
private void showVaultWindowWithdraw(Player player) private void showVaultWindowWithdraw(Player player)
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
player.setActiveWarehouse(player.getClan().getWarehouse()); player.setActiveWarehouse(player.getClan().getWarehouse());

View File

@@ -2040,7 +2040,7 @@ public class Clan implements IIdentifiable, INamable
{ {
return false; return false;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_JOIN_CLAN)) if (!player.hasClanPrivilege(ClanPrivilege.CL_INVITE))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return false; return false;

View File

@@ -25,35 +25,35 @@ public enum ClanPrivilege
{ {
/** dummy entry */ /** dummy entry */
DUMMY, DUMMY,
/** Privilege to join clan */
CL_JOIN_CLAN, /** System Privileges */
/** Privilege to give a title */ CL_INVITE,
CL_GIVE_TITLE, CL_MANAGE_TITLES,
/** Privilege to view warehouse content */ CL_WAREHOUSE_SEARCH,
CL_VIEW_WAREHOUSE,
/** Privilege to manage clan ranks */
CL_MANAGE_RANKS, CL_MANAGE_RANKS,
CL_PLEDGE_WAR, CL_CLAN_WAR,
CL_DISMISS, CL_DISMISS,
/** Privilege to register clan crest */ CL_EDIT_CREST,
CL_REGISTER_CREST, CL_USE_FUNCTIONS,
CL_APPRENTICE, CL_SETTINGS,
CL_TROOPS_FAME, CL_THRONE_OF_HEROES,
CL_SUMMON_AIRSHIP,
/** Privilege to open a door */ /** Clan Hall Privileges */
CH_OPEN_DOOR, CH_ENTRY_EXIT_RIGHTS,
CH_OTHER_RIGHTS, CH_USE_FUNCTIONS,
CH_AUCTION, CH_AUCTION,
CH_DISMISS, CH_DISMISS,
CH_SET_FUNCTIONS, CH_SETTTINGS,
CS_OPEN_DOOR,
CS_MANOR_ADMIN, /** Castle/Fortress Privileges */
CS_MANAGE_SIEGE, CS_ENTRY_EXIT_RIGHTS,
CS_SIEGE_WAR,
CS_USE_FUNCTIONS, CS_USE_FUNCTIONS,
CS_SETTINGS,
CS_DISMISS, CS_DISMISS,
CS_TAXES, CS_MANAGE_TAXES,
CS_MERCENARIES, CS_MERCENARIES,
CS_SET_FUNCTIONS; CS_MANOR_ADMIN;
public int getBitmask() public int getBitmask()
{ {

View File

@@ -183,7 +183,7 @@ public class RequestAcquireSkill implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -113,7 +113,7 @@ public class RequestAcquireSkillInfo implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -75,7 +75,7 @@ public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -55,7 +55,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
else else
{ {
// Can the player change/give a title? // Can the player change/give a title?
if (!player.hasClanPrivilege(ClanPrivilege.CL_GIVE_TITLE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_MANAGE_TITLES))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -52,7 +52,7 @@ public class RequestJoinSiege implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -65,7 +65,7 @@ public class RequestPledgePower implements IClientIncomingPacket
// Clan war, right to dismiss, set functions // Clan war, right to dismiss, set functions
// Auction, manage taxes, attack/defend registration, mercenary management // Auction, manage taxes, attack/defend registration, mercenary management
// => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR? // => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR?
_privs &= ClanPrivilege.CL_VIEW_WAREHOUSE.getBitmask() | ClanPrivilege.CH_OPEN_DOOR.getBitmask() | ClanPrivilege.CS_OPEN_DOOR.getBitmask(); _privs &= ClanPrivilege.CL_WAREHOUSE_SEARCH.getBitmask() | ClanPrivilege.CH_ENTRY_EXIT_RIGHTS.getBitmask() | ClanPrivilege.CS_ENTRY_EXIT_RIGHTS.getBitmask();
} }
player.getClan().setRankPrivs(_rank, _privs); player.getClan().setRankPrivs(_rank, _privs);
} }

View File

@@ -54,7 +54,7 @@ public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_APPRENTICE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_DISMISS))
{ {
player.sendPacket(SystemMessageId.YOU_DON_T_HAVE_THE_RIGHT_TO_DISMISS_MENTEES); player.sendPacket(SystemMessageId.YOU_DON_T_HAVE_THE_RIGHT_TO_DISMISS_MENTEES);
return; return;

View File

@@ -80,7 +80,7 @@ public class RequestSetPledgeCrest implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -63,7 +63,7 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -69,7 +69,7 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
} }
// Check if player who does the request has the correct rights to do it // Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -72,7 +72,7 @@ public class RequestSurrenderPledgeWar implements IClientIncomingPacket
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR)) else if (!player.hasClanPrivilege(ClanPrivilege.CL_CLAN_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);

View File

@@ -103,7 +103,7 @@ public class SendWareHouseWithDrawList implements IClientIncomingPacket
if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH) if (Config.ALT_MEMBERS_CAN_WITHDRAW_FROM_CLANWH)
{ {
if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if ((warehouse instanceof ClanWarehouse) && !player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
return; return;
} }

View File

@@ -68,7 +68,7 @@ public class Nottingale extends AbstractNpcAI
{ {
if (player.getClan() != null) if (player.getClan() != null)
{ {
if (player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId())) if (player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS) && AirShipManager.getInstance().hasAirShipLicense(player.getClanId()) && !AirShipManager.getInstance().hasAirShip(player.getClanId()))
{ {
htmltext = event; htmltext = event;
} }

View File

@@ -19,7 +19,9 @@ package ai.areas.Rune.Roiental;
import org.l2jmobius.gameserver.instancemanager.InstanceManager; import org.l2jmobius.gameserver.instancemanager.InstanceManager;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.network.SystemMessageId;
import ai.AbstractNpcAI; import ai.AbstractNpcAI;
@@ -57,14 +59,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_GB)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_GB))
{ {
htmltext = "Roiental-03a.html"; htmltext = "Roiental-03a.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01a.html"; htmltext = "Roiental-01a.html";
@@ -76,14 +86,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_MR)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_MR))
{ {
htmltext = "Roiental-03b.html"; htmltext = "Roiental-03b.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01b.html"; htmltext = "Roiental-01b.html";
@@ -95,14 +113,22 @@ public class Roiental extends AbstractNpcAI
{ {
htmltext = "Roiental-NoLevel.html"; htmltext = "Roiental-NoLevel.html";
} }
else if ((player.getClan() == null) || (player.getClan().getLevel() < CLAN_MIN_LVL_TA)) else if (player.getClan() == null)
{
player.sendPacket(SystemMessageId.YOU_DO_NOT_BELONG_TO_ANY_CLAN);
}
else if ((player.getClan().getLevel() < CLAN_MIN_LVL_TA))
{ {
htmltext = "Roiental-03c.html"; htmltext = "Roiental-03c.html";
} }
else if ((player.getClan() == null) || player.getClan().getVariables().hasVariable("TOH_DONE")) else if (player.getClan().getVariables().hasVariable("TOH_DONE"))
{ {
htmltext = "Roiental-AlreadyDone.html"; htmltext = "Roiental-AlreadyDone.html";
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CL_THRONE_OF_HEROES))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
}
else else
{ {
htmltext = "Roiental-01c.html"; htmltext = "Roiental-01c.html";

View File

@@ -151,7 +151,7 @@ public class CastleChamberlain extends AbstractNpcAI
private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level) private final String funcConfirmHtml(Player player, Npc npc, Castle castle, int func, int level)
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html; final NpcHtmlMessage html;
final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10"; final String fstring = (func == Castle.FUNC_TELEPORT) ? "9" : "10";
@@ -461,7 +461,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "siege_functions": case "siege_functions":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -484,7 +484,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_doors": case "manage_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -511,7 +511,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors": case "upgrade_doors":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int type = Integer.parseInt(st.nextToken()); final int type = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -528,7 +528,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_doors_confirm": case "upgrade_doors_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -579,7 +579,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_trap": case "manage_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -608,7 +608,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap": case "upgrade_trap":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final String trapIndex = st.nextToken(); final String trapIndex = st.nextToken();
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -626,7 +626,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "upgrade_trap_confirm": case "upgrade_trap_confirm":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (castle.getSiege().isInProgress()) if (castle.getSiege().isInProgress())
{ {
@@ -688,7 +688,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault": case "manage_vault":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -702,7 +702,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_deposit": case "manage_vault_deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_deposit.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -716,7 +716,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "manage_vault_withdraw": case "manage_vault_withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castlemanagevault_withdraw.html");
html.replace("%tax_income%", Util.formatAdena(castle.getTreasury())); html.replace("%tax_income%", Util.formatAdena(castle.getTreasury()));
@@ -730,7 +730,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "deposit": case "deposit":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if ((amount > 0) && (amount < Inventory.MAX_ADENA)) if ((amount > 0) && (amount < Inventory.MAX_ADENA))
@@ -755,7 +755,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "withdraw": case "withdraw":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_TAXES)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_TAXES))
{ {
final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0; final long amount = (st.hasMoreTokens()) ? Long.parseLong(st.nextToken()) : 0;
if (amount <= castle.getTreasury()) if (amount <= castle.getTreasury())
@@ -832,7 +832,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "doors": case "doors":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -848,7 +848,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "operate_door": case "operate_door":
{ {
if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (!isOwner(player, npc) || !player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
htmltext = "chamberlain-21.html"; htmltext = "chamberlain-21.html";
} }
@@ -869,12 +869,12 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "additional_functions": case "additional_functions":
{ {
htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) ? "castletdecomanage.html" : "chamberlain-21.html"; htmltext = (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS)) ? "castletdecomanage.html" : "chamberlain-21.html";
break; break;
} }
case "recovery": case "recovery":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AR01.html");
funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP"); funcReplace(castle, html, Castle.FUNC_RESTORE_HP, "HP");
@@ -890,7 +890,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "other": case "other":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html"); final NpcHtmlMessage html = getHtmlPacket(player, npc, "castledeco-AE01.html");
funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP"); funcReplace(castle, html, Castle.FUNC_TELEPORT, "TP");
@@ -935,7 +935,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "set_func": case "set_func":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
final int func = Integer.parseInt(st.nextToken()); final int func = Integer.parseInt(st.nextToken());
final int level = Integer.parseInt(st.nextToken()); final int level = Integer.parseInt(st.nextToken());
@@ -1081,7 +1081,7 @@ public class CastleChamberlain extends AbstractNpcAI
} }
case "list_siege_clans": case "list_siege_clans":
{ {
if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (isOwner(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
castle.getSiege().listRegisterClan(player); castle.getSiege().listRegisterClan(player);
} }

View File

@@ -340,7 +340,7 @@ public class CastleCourtMagician extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -136,7 +136,7 @@ public class CastleDoorManager extends AbstractNpcAI
@Override @Override
public String onFirstTalk(Npc npc, Player player) public String onFirstTalk(Npc npc, Player player)
{ {
return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html"; return isOwningClan(player, npc) && player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS) ? getHtmlName(npc) + ".html" : getHtmlName(npc) + "-no.html";
} }
private String getHtmlName(Npc npc) private String getHtmlName(Npc npc)

View File

@@ -74,7 +74,7 @@ public class ClanHallDoorManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (isOwningClan(player, npc) && st.hasMoreTokens() && player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
final boolean open = st.nextToken().equals("1"); final boolean open = st.nextToken().equals("1");
clanHall.openCloseDoors(open); clanHall.openCloseDoors(open);

View File

@@ -134,7 +134,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageDoors": case "manageDoors":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CH_ENTRY_EXIT_RIGHTS))
{ {
if (st.hasMoreTokens()) if (st.hasMoreTokens())
{ {
@@ -175,7 +175,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "useFunctions": case "useFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_OTHER_RIGHTS)) if (player.hasClanPrivilege(ClanPrivilege.CH_USE_FUNCTIONS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {
@@ -303,7 +303,7 @@ public class ClanHallManager extends AbstractNpcAI
} }
case "manageFunctions": case "manageFunctions":
{ {
if (player.hasClanPrivilege(ClanPrivilege.CH_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CH_SETTTINGS))
{ {
if (!st.hasMoreTokens()) if (!st.hasMoreTokens())
{ {

View File

@@ -100,7 +100,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }
@@ -169,7 +169,7 @@ public class FortressSiegeManager extends AbstractNpcAI
html.replace("%clanName%", fortress.getOwnerClan().getName()); html.replace("%clanName%", fortress.getOwnerClan().getName());
return html.getHtml(); return html.getHtml();
} }
else if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) else if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
htmltext = "FortressSiegeManager-10.html"; htmltext = "FortressSiegeManager-10.html";
} }

View File

@@ -254,7 +254,7 @@ public class SupportUnitCaptain extends AbstractNpcAI
} }
case "squadSkill": case "squadSkill":
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
RequestAcquireSkill.showSubUnitSkillList(player); RequestAcquireSkill.showSubUnitSkillList(player);
} }

View File

@@ -80,7 +80,7 @@ public class ClanWarehouse implements IBypassHandler
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
if (!player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE); player.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_THE_RIGHT_TO_USE_THE_CLAN_WAREHOUSE);
return true; return true;

View File

@@ -134,7 +134,7 @@ public abstract class AirShipController extends AbstractNpcAI
player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER); player.sendPacket(SystemMessageId.ANOTHER_AIRSHIP_HAS_BEEN_SUMMONED_TO_THE_WHARF_PLEASE_TRY_AGAIN_LATER);
return null; return null;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_SUMMON_AIRSHIP)) if (!player.hasClanPrivilege(ClanPrivilege.CL_USE_FUNCTIONS))
{ {
player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER); player.sendPacket(SystemMessageId.AIRSHIP_SUMMON_LICENSE_REGISTRATION_CAN_ONLY_BE_DONE_BY_THE_CLAN_LEADER);
return null; return null;

View File

@@ -185,7 +185,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("operate_door")) // door else if (actualCommand.equalsIgnoreCase("operate_door")) // door
// control // control
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_OPEN_DOOR)) if (player.hasClanPrivilege(ClanPrivilege.CS_ENTRY_EXIT_RIGHTS))
{ {
if (!val.isEmpty()) if (!val.isEmpty())
{ {
@@ -230,7 +230,7 @@ public class FortManager extends Merchant
else if (actualCommand.equalsIgnoreCase("manage_vault")) else if (actualCommand.equalsIgnoreCase("manage_vault"))
{ {
final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); final NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
if (player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
if (val.equalsIgnoreCase("deposit")) if (val.equalsIgnoreCase("deposit"))
{ {
@@ -320,7 +320,7 @@ public class FortManager extends Merchant
} }
else if (actualCommand.equalsIgnoreCase("manage")) else if (actualCommand.equalsIgnoreCase("manage"))
{ {
if (player.hasClanPrivilege(ClanPrivilege.CS_SET_FUNCTIONS)) if (player.hasClanPrivilege(ClanPrivilege.CS_SETTINGS))
{ {
if (val.equalsIgnoreCase("recovery")) if (val.equalsIgnoreCase("recovery"))
{ {
@@ -995,7 +995,7 @@ public class FortManager extends Merchant
private void showVaultWindowWithdraw(Player player) private void showVaultWindowWithdraw(Player player)
{ {
if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_VIEW_WAREHOUSE)) if (player.isClanLeader() || player.hasClanPrivilege(ClanPrivilege.CL_WAREHOUSE_SEARCH))
{ {
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
player.setActiveWarehouse(player.getClan().getWarehouse()); player.setActiveWarehouse(player.getClan().getWarehouse());

View File

@@ -2040,7 +2040,7 @@ public class Clan implements IIdentifiable, INamable
{ {
return false; return false;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_JOIN_CLAN)) if (!player.hasClanPrivilege(ClanPrivilege.CL_INVITE))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return false; return false;

View File

@@ -25,35 +25,35 @@ public enum ClanPrivilege
{ {
/** dummy entry */ /** dummy entry */
DUMMY, DUMMY,
/** Privilege to join clan */
CL_JOIN_CLAN, /** System Privileges */
/** Privilege to give a title */ CL_INVITE,
CL_GIVE_TITLE, CL_MANAGE_TITLES,
/** Privilege to view warehouse content */ CL_WAREHOUSE_SEARCH,
CL_VIEW_WAREHOUSE,
/** Privilege to manage clan ranks */
CL_MANAGE_RANKS, CL_MANAGE_RANKS,
CL_PLEDGE_WAR, CL_CLAN_WAR,
CL_DISMISS, CL_DISMISS,
/** Privilege to register clan crest */ CL_EDIT_CREST,
CL_REGISTER_CREST, CL_USE_FUNCTIONS,
CL_APPRENTICE, CL_SETTINGS,
CL_TROOPS_FAME, CL_THRONE_OF_HEROES,
CL_SUMMON_AIRSHIP,
/** Privilege to open a door */ /** Clan Hall Privileges */
CH_OPEN_DOOR, CH_ENTRY_EXIT_RIGHTS,
CH_OTHER_RIGHTS, CH_USE_FUNCTIONS,
CH_AUCTION, CH_AUCTION,
CH_DISMISS, CH_DISMISS,
CH_SET_FUNCTIONS, CH_SETTTINGS,
CS_OPEN_DOOR,
CS_MANOR_ADMIN, /** Castle/Fortress Privileges */
CS_MANAGE_SIEGE, CS_ENTRY_EXIT_RIGHTS,
CS_SIEGE_WAR,
CS_USE_FUNCTIONS, CS_USE_FUNCTIONS,
CS_SETTINGS,
CS_DISMISS, CS_DISMISS,
CS_TAXES, CS_MANAGE_TAXES,
CS_MERCENARIES, CS_MERCENARIES,
CS_SET_FUNCTIONS; CS_MANOR_ADMIN;
public int getBitmask() public int getBitmask()
{ {

View File

@@ -183,7 +183,7 @@ public class RequestAcquireSkill implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -113,7 +113,7 @@ public class RequestAcquireSkillInfo implements IClientIncomingPacket
} }
case SUBPLEDGE: case SUBPLEDGE:
{ {
if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_TROOPS_FAME)) if (!player.isClanLeader() || !player.hasClanPrivilege(ClanPrivilege.CL_SETTINGS))
{ {
return; return;
} }

View File

@@ -75,7 +75,7 @@ public class RequestExSetPledgeCrestLarge implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_REGISTER_CREST)) if (!player.hasClanPrivilege(ClanPrivilege.CL_EDIT_CREST))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -55,7 +55,7 @@ public class RequestGiveNickName implements IClientIncomingPacket
else else
{ {
// Can the player change/give a title? // Can the player change/give a title?
if (!player.hasClanPrivilege(ClanPrivilege.CL_GIVE_TITLE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_MANAGE_TITLES))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -52,7 +52,7 @@ public class RequestJoinSiege implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CS_MANAGE_SIEGE)) if (!player.hasClanPrivilege(ClanPrivilege.CS_SIEGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
return; return;

View File

@@ -65,7 +65,7 @@ public class RequestPledgePower implements IClientIncomingPacket
// Clan war, right to dismiss, set functions // Clan war, right to dismiss, set functions
// Auction, manage taxes, attack/defend registration, mercenary management // Auction, manage taxes, attack/defend registration, mercenary management
// => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR? // => Leaves only CP_CL_VIEW_WAREHOUSE, CP_CH_OPEN_DOOR, CP_CS_OPEN_DOOR?
_privs &= ClanPrivilege.CL_VIEW_WAREHOUSE.getBitmask() | ClanPrivilege.CH_OPEN_DOOR.getBitmask() | ClanPrivilege.CS_OPEN_DOOR.getBitmask(); _privs &= ClanPrivilege.CL_WAREHOUSE_SEARCH.getBitmask() | ClanPrivilege.CH_ENTRY_EXIT_RIGHTS.getBitmask() | ClanPrivilege.CS_ENTRY_EXIT_RIGHTS.getBitmask();
} }
player.getClan().setRankPrivs(_rank, _privs); player.getClan().setRankPrivs(_rank, _privs);
} }

View File

@@ -54,7 +54,7 @@ public class RequestPledgeSetAcademyMaster implements IClientIncomingPacket
return; return;
} }
if (!player.hasClanPrivilege(ClanPrivilege.CL_APPRENTICE)) if (!player.hasClanPrivilege(ClanPrivilege.CL_DISMISS))
{ {
player.sendPacket(SystemMessageId.YOU_DON_T_HAVE_THE_RIGHT_TO_DISMISS_MENTEES); player.sendPacket(SystemMessageId.YOU_DON_T_HAVE_THE_RIGHT_TO_DISMISS_MENTEES);
return; return;

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