Clan war related fixes.

Contributed by nasseka.
This commit is contained in:
MobiusDevelopment
2022-07-04 18:51:42 +00:00
parent 0649ec5ba0
commit 637bf5f0a4
46 changed files with 1085 additions and 146 deletions

View File

@ -29,6 +29,7 @@ import org.l2jmobius.gameserver.model.clan.ClanWar;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
public class RequestStartPledgeWar implements IClientIncomingPacket
@ -119,12 +120,34 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
player.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());
player.sendPacket(sm);
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
if (clanWar.getState() == ClanWarState.MUTUAL)
{
player.sendMessage("You have already been at war with " + clanDeclaredWar.getName() + ".");
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (clanWar.getState() == ClanWarState.BLOOD_DECLARATION)
{
clanWar.mutualClanWarAccepted(clanDeclaredWar, clanDeclaringWar);
ClanTable.getInstance().storeClanWars(clanWar);
for (ClanMember member : clanDeclaringWar.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN);
}
}
for (ClanMember member : clanDeclaredWar.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN);
}
}
player.sendPacket(new PledgeReceiveWarList(player.getClan(), 0));
return;
}
}
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
@ -144,5 +167,6 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
member.getPlayer().broadcastUserInfo(UserInfoType.CLAN);
}
}
player.sendPacket(new PledgeReceiveWarList(player.getClan(), 0));
}
}

View File

@ -25,6 +25,8 @@ import org.l2jmobius.gameserver.model.clan.ClanPrivilege;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager;
public class RequestStopPledgeWar implements IClientIncomingPacket
@ -74,6 +76,15 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
return;
}
// Check if clan has enough reputation to end the war (5000).
if (player.getClan().getReputationScore() <= 5000)
{
final SystemMessage sm = new SystemMessage(SystemMessageId.THE_CLAN_REPUTATION_IS_TOO_LOW);
player.sendPacket(sm);
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
for (ClanMember member : playerClan.getMembers())
{
if ((member == null) || (member.getPlayer() == null))
@ -83,12 +94,16 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
if (AttackStanceTaskManager.getInstance().hasAttackStanceTask(member.getPlayer()))
{
player.sendPacket(SystemMessageId.A_CEASE_FIRE_DURING_A_CLAN_WAR_CAN_NOT_BE_CALLED_WHILE_MEMBERS_OF_YOUR_CLAN_ARE_ENGAGED_IN_BATTLE);
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
}
// Reduce reputation.
playerClan.takeReputationScore(5000);
final SystemMessage sm = new SystemMessage(SystemMessageId.YOUR_CLAN_LOST_5_000_REPUTATION_POINTS_FOR_WITHDRAWING_FROM_THE_CLAN_WAR);
player.getClan().broadcastToOnlineMembers(sm);
ClanTable.getInstance().deleteClanWars(playerClan.getId(), clan.getId());
for (Player member : playerClan.getOnlineMembers(0))
{
@ -99,5 +114,7 @@ public class RequestStopPledgeWar implements IClientIncomingPacket
{
member.broadcastUserInfo();
}
player.sendPacket(new PledgeReceiveWarList(player.getClan(), 0));
}
}