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.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket
{
private String _pledgeName;
private int _clanId;
@Override
public void read(ReadablePacket packet)
{
_pledgeName = packet.readString();
_clanId = packet.readInt();
}
@Override
@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return;
}
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clan == null)
final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (enemyClan == null)
{
player.sendMessage("No such clan.");
player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET);
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);
return;
}
// Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation.
playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
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.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan;
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.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket
{
private String _pledgeName;
@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return;
}
final Clan clanDeclaringWar = player.getClan();
if (clanDeclaringWar == null)
final Clan playerClan = player.getClan();
if (playerClan == null)
{
return;
}
@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null)
final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (enemyClan == null)
{
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId());
final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
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);
sm.addString(clanDeclaredWar.getName());
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
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);
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())
if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
{
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())
{
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.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket
{
private String _pledgeName;
private int _clanId;
@Override
public void read(ReadablePacket packet)
{
_pledgeName = packet.readString();
_clanId = packet.readInt();
}
@Override
@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return;
}
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clan == null)
final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (enemyClan == null)
{
player.sendMessage("No such clan.");
player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET);
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);
return;
}
// Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation.
playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
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.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan;
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.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket
{
private String _pledgeName;
@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return;
}
final Clan clanDeclaringWar = player.getClan();
if (clanDeclaringWar == null)
final Clan playerClan = player.getClan();
if (playerClan == null)
{
return;
}
@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null)
final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (enemyClan == null)
{
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId());
final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
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);
sm.addString(clanDeclaredWar.getName());
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
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);
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())
if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
{
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())
{
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.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket
{
private String _pledgeName;
private int _clanId;
@Override
public void read(ReadablePacket packet)
{
_pledgeName = packet.readString();
_clanId = packet.readInt();
}
@Override
@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return;
}
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clan == null)
final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (enemyClan == null)
{
player.sendMessage("No such clan.");
player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET);
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);
return;
}
// Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation.
playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
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.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan;
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.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket
{
private String _pledgeName;
@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return;
}
final Clan clanDeclaringWar = player.getClan();
if (clanDeclaringWar == null)
final Clan playerClan = player.getClan();
if (playerClan == null)
{
return;
}
@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null)
final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (enemyClan == null)
{
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId());
final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
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);
sm.addString(clanDeclaredWar.getName());
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
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);
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())
if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
{
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())
{
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.clientpackets.ClientPacket;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyDelete implements ClientPacket
{
private String _pledgeName;
private int _clanId;
@Override
public void read(ReadablePacket packet)
{
_pledgeName = packet.readString();
_clanId = packet.readInt();
}
@Override
@ -53,22 +57,21 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
return;
}
final Clan clan = ClanTable.getInstance().getClanByName(_pledgeName);
if (clan == null)
final Clan enemyClan = ClanTable.getInstance().getClan(_clanId);
if (enemyClan == null)
{
player.sendMessage("No such clan.");
player.sendPacket(SystemMessageId.THERE_IS_NO_SUCH_CLAN);
player.sendPacket(ActionFailed.STATIC_PACKET);
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);
return;
}
// Check if player who does the request has the correct rights to do it
if (!player.hasClanPrivilege(ClanPrivilege.CL_PLEDGE_WAR))
{
player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
@ -90,15 +93,28 @@ public class RequestExPledgeEnemyDelete implements ClientPacket
// Reduce reputation.
playerClan.takeReputationScore(500);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
member.broadcastUserInfo();
}
ClanTable.getInstance().deleteClanWars(playerClan.getId(), enemyClan.getId());
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.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.model.actor.Player;
import org.l2jmobius.gameserver.model.clan.Clan;
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.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeEnemyInfoList;
/**
* @author Mobius
*/
public class RequestExPledgeEnemyRegister implements ClientPacket
{
private String _pledgeName;
@ -50,8 +53,8 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
return;
}
final Clan clanDeclaringWar = player.getClan();
if (clanDeclaringWar == null)
final Clan playerClan = player.getClan();
if (playerClan == null)
{
return;
}
@ -62,73 +65,94 @@ public class RequestExPledgeEnemyRegister implements ClientPacket
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final Clan clanDeclaredWar = ClanTable.getInstance().getClanByName(_pledgeName);
if (clanDeclaredWar == null)
final Clan enemyClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (enemyClan == null)
{
client.sendPacket(new SystemMessage(SystemMessageId.A_CLAN_WAR_CANNOT_BE_DECLARED_AGAINST_A_CLAN_THAT_DOES_NOT_EXIST));
client.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
else if (clanDeclaredWar == clanDeclaringWar)
if (enemyClan == playerClan)
{
client.sendPacket(new SystemMessage(SystemMessageId.FOOL_YOU_CANNOT_DECLARE_WAR_AGAINST_YOUR_OWN_CLAN));
client.sendPacket(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
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(ActionFailed.STATIC_PACKET);
return;
}
final ClanWar clanWar = clanDeclaringWar.getWarWith(clanDeclaredWar.getId());
final ClanWar clanWar = playerClan.getWarWith(enemyClan.getId());
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);
sm.addString(clanDeclaredWar.getName());
sm.addString(enemyClan.getName());
client.sendPacket(sm);
client.sendPacket(ActionFailed.STATIC_PACKET);
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);
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())
if ((clanWar.getClanWarState(playerClan) != ClanWarState.BLOOD_DECLARATION) || (clanWar.getAttackerClanId() == playerClan.getId()))
{
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())
{
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();
}
}
}