Fixed declaring and removing clan wars.

This commit is contained in:
MobiusDevelopment
2023-02-17 23:48:43 +02:00
parent 68f3055f23
commit e33c09590d
8 changed files with 332 additions and 172 deletions

View File

@@ -26,16 +26,20 @@ import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket public class RequestExPledgeEnemyDelete implements ClientPacket
{ {
private String _pledgeName; private int _clanId;
@Override @Override
public void read(ReadablePacket packet) public void read(ReadablePacket packet)
{ {
_pledgeName = packet.readString(); _clanId = packet.readInt();
} }
@Override @Override
@@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return; return;
} }
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (clan == null) if (enemyClan == null)
{ {
player.sendMessage("No such clan."); player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
if (!playerClan.isAtWarWith(clan.getId())) if (!playerClan.isAtWarWith(enemyClan.getId()))
{ {
player.sendMessage("You aren't at war with this clan."); player.sendPacket(SystemMessageId.ENTER_THE_NAME_OF_THE_CLAN_YOU_WISH_TO_END_THE_WAR_WITH);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
// 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_PLEDGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation. // Reduce reputation.
playerClan.takeReputationScore(500); playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId()); ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
for (Player member : clan.getOnlineMembers(0)) broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
member.broadcastUserInfo(); if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
}
} }
} }
} }

View File

@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV3;
import org.l2jmobius.commons.network.ReadablePacket; import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanMember;
@@ -30,7 +29,11 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket public class RequestExPledgeEnemyRegister implements ClientPacket
{ {
private String _pledgeName; private String _pledgeName;
@@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return; return;
} }
final Clan clanDeclaringWar = player.getClan(); final Clan playerClan = player.getClan();
if (clanDeclaringWar == null) if (playerClan == null)
{ {
return; return;
} }
@@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaringWar.getWarCount() >= 30)
if (playerClan.getWarCount() >= 30)
{ {
client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME); client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null) if (enemyClan == null)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN)); client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if ((clanDeclaringWar.getAllyId() == clanDeclaredWar.getAllyId()) && (clanDeclaringWar.getAllyId() != 0))
if ((playerClan.getAllyId() == enemyClan.getAllyId()) && (playerClan.getAllyId() != 0))
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE)); client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar.getDissolvingExpiryTime() > System.currentTimeMillis())
if (enemyClan.getDissolvingExpiryTime() > System.currentTimeMillis())
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId()); final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
if (clanWar != null) if (clanWar != null)
{ {
if (clanWar.getClanWarState(clanDeclaringWar) == ClanWarState.WIN) if (clanWar.getClanWarState(playerClan) == ClanWarState.WIN)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN);
sm.addString(clanDeclaredWar.getName()); sm.addString(enemyClan.getName());
client.sendPacket(sm); client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN); if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
sm.addString(clanDeclaredWar.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
ClanTable.getInstance().storeClanWars(newClanWar);
for (ClanMember member : clanDeclaringWar.getMembers())
{
if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN);
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (clanWar.getClanWarState(playerClan) == ClanWarState.BLOOD_DECLARATION)
{
clanWar.mutualClanWarAccepted(enemyClan, playerClan);
broadcastClanInfo(playerClan, enemyClan);
return;
} }
} }
for (ClanMember member : clanDeclaredWar.getMembers())
final ClanWar newClanWar = new ClanWar(playerClan, enemyClan);
ClanTable.getInstance().storeClanWars(newClanWar);
broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
if ((member != null) && member.isOnline()) if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
} }
} }
} }

View File

@@ -26,16 +26,20 @@ import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket public class RequestExPledgeEnemyDelete implements ClientPacket
{ {
private String _pledgeName; private int _clanId;
@Override @Override
public void read(ReadablePacket packet) public void read(ReadablePacket packet)
{ {
_pledgeName = packet.readString(); _clanId = packet.readInt();
} }
@Override @Override
@@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return; return;
} }
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (clan == null) if (enemyClan == null)
{ {
player.sendMessage("No such clan."); player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
if (!playerClan.isAtWarWith(clan.getId())) if (!playerClan.isAtWarWith(enemyClan.getId()))
{ {
player.sendMessage("You aren't at war with this clan."); player.sendPacket(SystemMessageId.ENTER_THE_NAME_OF_THE_CLAN_YOU_WISH_TO_END_THE_WAR_WITH);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
// 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_PLEDGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation. // Reduce reputation.
playerClan.takeReputationScore(500); playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId()); ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
for (Player member : clan.getOnlineMembers(0)) broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
member.broadcastUserInfo(); if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
}
} }
} }
} }

View File

@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV3;
import org.l2jmobius.commons.network.ReadablePacket; import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanMember;
@@ -30,7 +29,11 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket public class RequestExPledgeEnemyRegister implements ClientPacket
{ {
private String _pledgeName; private String _pledgeName;
@@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return; return;
} }
final Clan clanDeclaringWar = player.getClan(); final Clan playerClan = player.getClan();
if (clanDeclaringWar == null) if (playerClan == null)
{ {
return; return;
} }
@@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaringWar.getWarCount() >= 30)
if (playerClan.getWarCount() >= 30)
{ {
client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME); client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null) if (enemyClan == null)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN)); client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if ((clanDeclaringWar.getAllyId() == clanDeclaredWar.getAllyId()) && (clanDeclaringWar.getAllyId() != 0))
if ((playerClan.getAllyId() == enemyClan.getAllyId()) && (playerClan.getAllyId() != 0))
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE)); client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar.getDissolvingExpiryTime() > System.currentTimeMillis())
if (enemyClan.getDissolvingExpiryTime() > System.currentTimeMillis())
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId()); final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
if (clanWar != null) if (clanWar != null)
{ {
if (clanWar.getClanWarState(clanDeclaringWar) == ClanWarState.WIN) if (clanWar.getClanWarState(playerClan) == ClanWarState.WIN)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN);
sm.addString(clanDeclaredWar.getName()); sm.addString(enemyClan.getName());
client.sendPacket(sm); client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN); if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
sm.addString(clanDeclaredWar.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
ClanTable.getInstance().storeClanWars(newClanWar);
for (ClanMember member : clanDeclaringWar.getMembers())
{
if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN);
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (clanWar.getClanWarState(playerClan) == ClanWarState.BLOOD_DECLARATION)
{
clanWar.mutualClanWarAccepted(enemyClan, playerClan);
broadcastClanInfo(playerClan, enemyClan);
return;
} }
} }
for (ClanMember member : clanDeclaredWar.getMembers())
final ClanWar newClanWar = new ClanWar(playerClan, enemyClan);
ClanTable.getInstance().storeClanWars(newClanWar);
broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
if ((member != null) && member.isOnline()) if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
} }
} }
} }

View File

@@ -26,16 +26,20 @@ import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket public class RequestExPledgeEnemyDelete implements ClientPacket
{ {
private String _pledgeName; private int _clanId;
@Override @Override
public void read(ReadablePacket packet) public void read(ReadablePacket packet)
{ {
_pledgeName = packet.readString(); _clanId = packet.readInt();
} }
@Override @Override
@@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return; return;
} }
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (clan == null) if (enemyClan == null)
{ {
player.sendMessage("No such clan."); player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
if (!playerClan.isAtWarWith(clan.getId())) if (!playerClan.isAtWarWith(enemyClan.getId()))
{ {
player.sendMessage("You aren't at war with this clan."); player.sendPacket(SystemMessageId.ENTER_THE_NAME_OF_THE_CLAN_YOU_WISH_TO_END_THE_WAR_WITH);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
// 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_PLEDGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation. // Reduce reputation.
playerClan.takeReputationScore(500); playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId()); ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
for (Player member : clan.getOnlineMembers(0)) broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
member.broadcastUserInfo(); if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
}
} }
} }
} }

View File

@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV3;
import org.l2jmobius.commons.network.ReadablePacket; import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanMember;
@@ -30,7 +29,11 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket public class RequestExPledgeEnemyRegister implements ClientPacket
{ {
private String _pledgeName; private String _pledgeName;
@@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return; return;
} }
final Clan clanDeclaringWar = player.getClan(); final Clan playerClan = player.getClan();
if (clanDeclaringWar == null) if (playerClan == null)
{ {
return; return;
} }
@@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaringWar.getWarCount() >= 30)
if (playerClan.getWarCount() >= 30)
{ {
client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME); client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null) if (enemyClan == null)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN)); client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if ((clanDeclaringWar.getAllyId() == clanDeclaredWar.getAllyId()) && (clanDeclaringWar.getAllyId() != 0))
if ((playerClan.getAllyId() == enemyClan.getAllyId()) && (playerClan.getAllyId() != 0))
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE)); client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar.getDissolvingExpiryTime() > System.currentTimeMillis())
if (enemyClan.getDissolvingExpiryTime() > System.currentTimeMillis())
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId()); final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
if (clanWar != null) if (clanWar != null)
{ {
if (clanWar.getClanWarState(clanDeclaringWar) == ClanWarState.WIN) if (clanWar.getClanWarState(playerClan) == ClanWarState.WIN)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN);
sm.addString(clanDeclaredWar.getName()); sm.addString(enemyClan.getName());
client.sendPacket(sm); client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN); if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
sm.addString(clanDeclaredWar.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
ClanTable.getInstance().storeClanWars(newClanWar);
for (ClanMember member : clanDeclaringWar.getMembers())
{
if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN);
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (clanWar.getClanWarState(playerClan) == ClanWarState.BLOOD_DECLARATION)
{
clanWar.mutualClanWarAccepted(enemyClan, playerClan);
broadcastClanInfo(playerClan, enemyClan);
return;
} }
} }
for (ClanMember member : clanDeclaredWar.getMembers())
final ClanWar newClanWar = new ClanWar(playerClan, enemyClan);
ClanTable.getInstance().storeClanWars(newClanWar);
broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
if ((member != null) && member.isOnline()) if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
} }
} }
} }

View File

@@ -26,16 +26,20 @@ import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket public class RequestExPledgeEnemyDelete implements ClientPacket
{ {
private String _pledgeName; private int _clanId;
@Override @Override
public void read(ReadablePacket packet) public void read(ReadablePacket packet)
{ {
_pledgeName = packet.readString(); _clanId = packet.readInt();
} }
@Override @Override
@@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return; return;
} }
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (clan == null) if (enemyClan == null)
{ {
player.sendMessage("No such clan."); player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
if (!playerClan.isAtWarWith(clan.getId())) if (!playerClan.isAtWarWith(enemyClan.getId()))
{ {
player.sendMessage("You aren't at war with this clan."); player.sendPacket(SystemMessageId.ENTER_THE_NAME_OF_THE_CLAN_YOU_WISH_TO_END_THE_WAR_WITH);
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
// 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_PLEDGE_WAR))
{ {
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT); player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation. // Reduce reputation.
playerClan.takeReputationScore(500); playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId()); ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
for (Player member : clan.getOnlineMembers(0)) broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
member.broadcastUserInfo(); if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
}
} }
} }
} }

View File

@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.network.clientpackets.pledgeV3;
import org.l2jmobius.commons.network.ReadablePacket; import org.l2jmobius.commons.network.ReadablePacket;
import org.l2jmobius.gameserver.data.sql.ClanTable; import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan; import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember; import org.l2jmobius.gameserver.model.clan.ClanMember;
@@ -30,7 +29,11 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.clientpackets.ClientPacket; import org.l2jmobius.gameserver.network.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage; import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket public class RequestExPledgeEnemyRegister implements ClientPacket
{ {
private String _pledgeName; private String _pledgeName;
@@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return; return;
} }
final Clan clanDeclaringWar = player.getClan(); final Clan playerClan = player.getClan();
if (clanDeclaringWar == null) if (playerClan == null)
{ {
return; return;
} }
@@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaringWar.getWarCount() >= 30)
if (playerClan.getWarCount() >= 30)
{ {
client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME); client.sendPacket(SystemMessageId.A_DECLARATION_OF_WAR_AGAINST_MORE_THAN_30_CLANS_CAN_T_BE_MADE_AT_THE_SAME_TIME);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName); final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null) if (enemyClan == null)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{ {
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN)); client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if ((clanDeclaringWar.getAllyId() == clanDeclaredWar.getAllyId()) && (clanDeclaringWar.getAllyId() != 0))
if ((playerClan.getAllyId() == enemyClan.getAllyId()) && (playerClan.getAllyId() != 0))
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE)); client.sendPacket(new SystemMessage(SystemMessageId.A_DECLARATION_OF_CLAN_WAR_AGAINST_AN_ALLIED_CLAN_CAN_T_BE_MADE));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
else if (clanDeclaredWar.getDissolvingExpiryTime() > System.currentTimeMillis())
if (enemyClan.getDissolvingExpiryTime() > System.currentTimeMillis())
{ {
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED)); client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CAN_NOT_BE_DECLARED_AGAINST_A_CLAN_THAT_IS_BEING_DISSOLVED));
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId()); final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
if (clanWar != null) if (clanWar != null)
{ {
if (clanWar.getClanWarState(clanDeclaringWar) == ClanWarState.WIN) if (clanWar.getClanWarState(playerClan) == ClanWarState.WIN)
{ {
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_CAN_T_DECLARE_A_WAR_BECAUSE_THE_21_DAY_PERIOD_HASN_T_PASSED_AFTER_A_DEFEAT_DECLARATION_WITH_THE_S1_CLAN);
sm.addString(clanDeclaredWar.getName()); sm.addString(enemyClan.getName());
client.sendPacket(sm); client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN); if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
sm.addString(clanDeclaredWar.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
ClanTable.getInstance().storeClanWars(newClanWar);
for (ClanMember member : clanDeclaringWar.getMembers())
{
if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); final SystemMessage sm = new SystemMessage(SystemMessageId.YOU_HAVE_ALREADY_BEEN_AT_WAR_WITH_THE_S1_CLAN_5_DAYS_MUST_PASS_BEFORE_YOU_CAN_DECLARE_WAR_AGAIN);
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (clanWar.getClanWarState(playerClan) == ClanWarState.BLOOD_DECLARATION)
{
clanWar.mutualClanWarAccepted(enemyClan, playerClan);
broadcastClanInfo(playerClan, enemyClan);
return;
} }
} }
for (ClanMember member : clanDeclaredWar.getMembers())
final ClanWar newClanWar = new ClanWar(playerClan, enemyClan);
ClanTable.getInstance().storeClanWars(newClanWar);
broadcastClanInfo(playerClan, enemyClan);
}
private void broadcastClanInfo(Clan playerClan, Clan enemyClan)
{
for (ClanMember member : playerClan.getMembers())
{ {
if ((member != null) && member.isOnline()) if ((member != null) && member.isOnline())
{ {
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN); member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(playerClan));
member.getPlayer().broadcastUserInfo();
}
}
for (ClanMember member : enemyClan.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().sendPacket(new ExPledgeEnemyInfoList(enemyClan));
member.getPlayer().broadcastUserInfo();
} }
} }
} }