Addition of clan raid status.

Contributed by Index.
This commit is contained in:
MobiusDevelopment 2021-11-10 22:58:09 +00:00
parent 926f9f2555
commit c29621c886
14 changed files with 252 additions and 38 deletions

View File

@ -21,6 +21,7 @@ import java.util.StringTokenizer;
import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
@ -196,6 +197,26 @@ public class AdminPledge implements IAdminCommandHandler
}
break;
}
case "arena":
{
if (clan == null)
{
BuilderUtil.sendSysMessage(activeChar, "Target player has no clan!");
break;
}
try
{
final int stage = Integer.parseInt(param);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId(), stage);
BuilderUtil.sendSysMessage(activeChar, "You set " + stage + " Monster Arena stage for clan " + clan.getName() + "");
}
catch (Exception e)
{
BuilderUtil.sendSysMessage(activeChar, "Usage: //pledge arena <number>");
}
break;
}
}
break;
}

View File

@ -20,11 +20,21 @@ import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
@ -32,7 +42,7 @@ import instances.AbstractInstance;
/**
* @author Mobius
* @URL https://l2wiki.com/classic/Clan_-_Clan_Arena
* @URL https://www.l2central.info/essence/articles/793.html?lang=en
*/
public class MonsterArena extends AbstractInstance
{
@ -62,6 +72,12 @@ public class MonsterArena extends AbstractInstance
25811, // Satur
25812, // Kosnak
25813, // Garaki
// TODO: 21-25 bosses
// 25834, // Shadai
// 25835, // Tyrobait
// 25836, // Tier
// 25837, // Cherkia
// 25838, // Spicula
};
// Rewards
private static final int BATTLE_BOX_1 = 90913;
@ -71,9 +87,10 @@ public class MonsterArena extends AbstractInstance
private static final int VALOR_BOX = 90915;
private static final int TICKET_M = 90946;
private static final int TICKET_H = 90947;
// Skill
private static final int CLAN_EXUBERANCE = 1867;
// Misc
private static final Collection<PlayerInstance> REWARDED_PLAYERS = ConcurrentHashMap.newKeySet();
private static final String MONSTER_ARENA_VARIABLE = "MA_C";
private static final int TEMPLATE_ID = 192;
public MonsterArena()
@ -151,16 +168,16 @@ public class MonsterArena extends AbstractInstance
machine.setScriptValue(player.getClanId());
// Initialize progress if it does not exist.
if (GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), -1) == -1)
if (GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), -1) == -1)
{
GlobalVariablesManager.getInstance().set(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
}
// On max progress, set last four bosses.
final int progress = GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 17)
final int progress = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 17) // TODO: 22 for 25 total bosses.
{
GlobalVariablesManager.getInstance().set(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 17);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 17); // TODO: 22 for 25 total bosses.
}
startQuestTimer("machine_talk", 10000, machine, null);
@ -196,7 +213,7 @@ public class MonsterArena extends AbstractInstance
final Instance world = npc.getInstanceWorld();
if (world != null)
{
world.spawnGroup("boss_" + GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + npc.getScriptValue()));
world.spawnGroup("boss_" + GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + npc.getScriptValue()));
}
break;
}
@ -215,7 +232,7 @@ public class MonsterArena extends AbstractInstance
// Mandatory reward.
final Npc machine = world.getNpc(MACHINE);
final int progress = GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue());
final int progress = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 16)
{
giveItems(player, BATTLE_BOX_4, 1);
@ -288,7 +305,7 @@ public class MonsterArena extends AbstractInstance
machine.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.HA_NOT_BAD);
// Save progress to global variables.
GlobalVariablesManager.getInstance().increaseInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
GlobalVariablesManager.getInstance().increaseInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
// Spawn reward chests.
world.spawnGroup("supplies");
@ -317,6 +334,48 @@ public class MonsterArena extends AbstractInstance
return npc.getId() + "-01.htm";
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
if (player == null)
{
return;
}
final Clan clan = player.getClan();
if (clan == null)
{
// Should never happen.
final Skill knownSkill = player.getKnownSkill(CLAN_EXUBERANCE);
if (knownSkill != null)
{
player.removeSkill(knownSkill, true);
}
return;
}
final int stage = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId(), 0);
if (stage > 4)
{
player.addSkill(SkillData.getInstance().getSkill(CLAN_EXUBERANCE, stage / 5), false);
}
}
@RegisterEvent(EventType.ON_PLAYER_CLAN_LEFT)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerClanLeft(OnPlayerClanLeft event)
{
final ClanMember member = event.getClanMember();
if ((member == null) || !member.isOnline())
{
return;
}
member.getPlayerInstance().removeSkill(CLAN_EXUBERANCE, true);
}
public static void main(String[] args)
{
new MonsterArena();

View File

@ -83,6 +83,7 @@ public class DailyTaskManager
{
clanLeaderApply();
resetVitalityWeekly();
resetMonsterArenaWeekly();
resetTimedHuntingZonesWeekly();
}
else
@ -219,6 +220,14 @@ public class DailyTaskManager
LOGGER.info("Vitality resetted");
}
private void resetMonsterArenaWeekly()
{
for (Clan clan : ClanTable.getInstance().getClans())
{
GlobalVariablesManager.getInstance().remove(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId());
}
}
private void resetClanBonus()
{
ClanTable.getInstance().getClans().forEach(Clan::resetClanBonus);

View File

@ -42,6 +42,7 @@ public class GlobalVariablesManager extends AbstractVariables
private static final String INSERT_QUERY = "INSERT INTO global_variables (var, value) VALUES (?, ?)";
// Public variable names
public static final String MONSTER_ARENA_VARIABLE = "MA_C";
public static final String PURGE_REWARD_TIME = "PURGE_REWARD_TIME";
protected GlobalVariablesManager()

View File

@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeClassicRaidInfo;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeV3Info;
/**
@ -53,5 +54,6 @@ public class RequestExPledgeV3Info implements IClientIncomingPacket
player.sendPacket(new ExPledgeV3Info(player.getClan().getExp(), player.getClan().getRank(), player.getClan().getNotice(), player.getClan().isNoticeEnabled()));
player.sendPacket(new PledgeReceiveWarList(player.getClan(), _page));
player.sendPacket(new ExPledgeClassicRaidInfo(player));
}
}

View File

@ -21,7 +21,6 @@ import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeClassicRaidInfo;
import org.l2jmobius.gameserver.network.serverpackets.pledgebonus.ExPledgeBonusOpen;
import org.l2jmobius.gameserver.network.serverpackets.pledgedonation.ExPledgeDonationInfo;
@ -46,7 +45,6 @@ public class RequestPledgeBonusOpen implements IClientIncomingPacket
}
player.sendPacket(new ExPledgeBonusOpen(player));
player.sendPacket(new ExPledgeClassicRaidInfo());
final long joinedTime = (player.getClanJoinExpiryTime() - (Config.ALT_CLAN_JOIN_DAYS * 60000));
player.sendPacket(new ExPledgeDonationInfo(player.getClanDonationPoints(), (joinedTime + 86400000) < System.currentTimeMillis()));
}

View File

@ -17,16 +17,22 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV3;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Berezkin Nikolay, on 22.04.2021
* @author Index
*/
public class ExPledgeClassicRaidInfo implements IClientOutgoingPacket
{
public ExPledgeClassicRaidInfo()
private final Clan _clan;
public ExPledgeClassicRaidInfo(PlayerInstance player)
{
_clan = player.getClan();
}
@Override
@ -34,13 +40,24 @@ public class ExPledgeClassicRaidInfo implements IClientOutgoingPacket
{
OutgoingPackets.EX_PLEDGE_CLASSIC_RAID_INFO.writeId(packet);
packet.writeD(0); // clan arena stage
packet.writeD(5);
for (int i = 1; i <= 5; i++)
if (_clan == null)
{
packet.writeD(1867);
packet.writeD(i);
packet.writeD(0);
}
else
{
final int stage = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + _clan.getId(), 0);
packet.writeD(stage);
// Skill rewards.
packet.writeD(5);
for (int i = 1; i <= 5; i++)
{
packet.writeD(1867);
packet.writeD(i);
}
}
return true;
}
}

View File

@ -21,6 +21,7 @@ import java.util.StringTokenizer;
import org.l2jmobius.gameserver.data.sql.ClanTable;
import org.l2jmobius.gameserver.enums.UserInfoType;
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
@ -196,6 +197,26 @@ public class AdminPledge implements IAdminCommandHandler
}
break;
}
case "arena":
{
if (clan == null)
{
BuilderUtil.sendSysMessage(activeChar, "Target player has no clan!");
break;
}
try
{
final int stage = Integer.parseInt(param);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId(), stage);
BuilderUtil.sendSysMessage(activeChar, "You set " + stage + " Monster Arena stage for clan " + clan.getName() + "");
}
catch (Exception e)
{
BuilderUtil.sendSysMessage(activeChar, "Usage: //pledge arena <number>");
}
break;
}
}
break;
}

View File

@ -20,11 +20,21 @@ import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.data.xml.SkillData;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.model.clan.ClanMember;
import org.l2jmobius.gameserver.model.events.EventType;
import org.l2jmobius.gameserver.model.events.ListenerRegisterType;
import org.l2jmobius.gameserver.model.events.annotations.RegisterEvent;
import org.l2jmobius.gameserver.model.events.annotations.RegisterType;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerClanLeft;
import org.l2jmobius.gameserver.model.events.impl.creature.player.OnPlayerLogin;
import org.l2jmobius.gameserver.model.instancezone.Instance;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.NpcStringId;
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
@ -32,7 +42,7 @@ import instances.AbstractInstance;
/**
* @author Mobius
* @URL https://l2wiki.com/classic/Clan_-_Clan_Arena
* @URL https://www.l2central.info/essence/articles/793.html?lang=en
*/
public class MonsterArena extends AbstractInstance
{
@ -62,6 +72,12 @@ public class MonsterArena extends AbstractInstance
25811, // Satur
25812, // Kosnak
25813, // Garaki
// TODO: 21-25 bosses
// 25834, // Shadai
// 25835, // Tyrobait
// 25836, // Tier
// 25837, // Cherkia
// 25838, // Spicula
};
// Rewards
private static final int BATTLE_BOX_1 = 90913;
@ -71,9 +87,10 @@ public class MonsterArena extends AbstractInstance
private static final int VALOR_BOX = 90915;
private static final int TICKET_M = 90946;
private static final int TICKET_H = 90947;
// Skill
private static final int CLAN_EXUBERANCE = 1867;
// Misc
private static final Collection<PlayerInstance> REWARDED_PLAYERS = ConcurrentHashMap.newKeySet();
private static final String MONSTER_ARENA_VARIABLE = "MA_C";
private static final int TEMPLATE_ID = 192;
public MonsterArena()
@ -151,16 +168,16 @@ public class MonsterArena extends AbstractInstance
machine.setScriptValue(player.getClanId());
// Initialize progress if it does not exist.
if (GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), -1) == -1)
if (GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), -1) == -1)
{
GlobalVariablesManager.getInstance().set(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
}
// On max progress, set last four bosses.
final int progress = GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 17)
final int progress = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 17) // TODO: 22 for 25 total bosses.
{
GlobalVariablesManager.getInstance().set(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 17);
GlobalVariablesManager.getInstance().set(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 17); // TODO: 22 for 25 total bosses.
}
startQuestTimer("machine_talk", 10000, machine, null);
@ -196,7 +213,7 @@ public class MonsterArena extends AbstractInstance
final Instance world = npc.getInstanceWorld();
if (world != null)
{
world.spawnGroup("boss_" + GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + npc.getScriptValue()));
world.spawnGroup("boss_" + GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + npc.getScriptValue()));
}
break;
}
@ -215,7 +232,7 @@ public class MonsterArena extends AbstractInstance
// Mandatory reward.
final Npc machine = world.getNpc(MACHINE);
final int progress = GlobalVariablesManager.getInstance().getInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue());
final int progress = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue());
if (progress > 16)
{
giveItems(player, BATTLE_BOX_4, 1);
@ -288,7 +305,7 @@ public class MonsterArena extends AbstractInstance
machine.broadcastSay(ChatType.NPC_GENERAL, NpcStringId.HA_NOT_BAD);
// Save progress to global variables.
GlobalVariablesManager.getInstance().increaseInt(MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
GlobalVariablesManager.getInstance().increaseInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + machine.getScriptValue(), 1);
// Spawn reward chests.
world.spawnGroup("supplies");
@ -317,6 +334,48 @@ public class MonsterArena extends AbstractInstance
return npc.getId() + "-01.htm";
}
@RegisterEvent(EventType.ON_PLAYER_LOGIN)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerLogin(OnPlayerLogin event)
{
final PlayerInstance player = event.getPlayer();
if (player == null)
{
return;
}
final Clan clan = player.getClan();
if (clan == null)
{
// Should never happen.
final Skill knownSkill = player.getKnownSkill(CLAN_EXUBERANCE);
if (knownSkill != null)
{
player.removeSkill(knownSkill, true);
}
return;
}
final int stage = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId(), 0);
if (stage > 4)
{
player.addSkill(SkillData.getInstance().getSkill(CLAN_EXUBERANCE, stage / 5), false);
}
}
@RegisterEvent(EventType.ON_PLAYER_CLAN_LEFT)
@RegisterType(ListenerRegisterType.GLOBAL_PLAYERS)
public void onPlayerClanLeft(OnPlayerClanLeft event)
{
final ClanMember member = event.getClanMember();
if ((member == null) || !member.isOnline())
{
return;
}
member.getPlayerInstance().removeSkill(CLAN_EXUBERANCE, true);
}
public static void main(String[] args)
{
new MonsterArena();

View File

@ -83,6 +83,7 @@ public class DailyTaskManager
{
clanLeaderApply();
resetVitalityWeekly();
resetMonsterArenaWeekly();
resetTimedHuntingZonesWeekly();
}
else
@ -219,6 +220,14 @@ public class DailyTaskManager
LOGGER.info("Vitality resetted");
}
private void resetMonsterArenaWeekly()
{
for (Clan clan : ClanTable.getInstance().getClans())
{
GlobalVariablesManager.getInstance().remove(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + clan.getId());
}
}
private void resetClanBonus()
{
ClanTable.getInstance().getClans().forEach(Clan::resetClanBonus);

View File

@ -42,6 +42,7 @@ public class GlobalVariablesManager extends AbstractVariables
private static final String INSERT_QUERY = "INSERT INTO global_variables (var, value) VALUES (?, ?)";
// Public variable names
public static final String MONSTER_ARENA_VARIABLE = "MA_C";
public static final String PURGE_REWARD_TIME = "PURGE_REWARD_TIME";
protected GlobalVariablesManager()

View File

@ -21,6 +21,7 @@ import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.PledgeReceiveWarList;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeClassicRaidInfo;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeV3Info;
/**
@ -53,5 +54,6 @@ public class RequestExPledgeV3Info implements IClientIncomingPacket
player.sendPacket(new ExPledgeV3Info(player.getClan().getExp(), player.getClan().getRank(), player.getClan().getNotice(), player.getClan().isNoticeEnabled()));
player.sendPacket(new PledgeReceiveWarList(player.getClan(), _page));
player.sendPacket(new ExPledgeClassicRaidInfo(player));
}
}

View File

@ -21,7 +21,6 @@ import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.GameClient;
import org.l2jmobius.gameserver.network.clientpackets.IClientIncomingPacket;
import org.l2jmobius.gameserver.network.serverpackets.pledgeV3.ExPledgeClassicRaidInfo;
import org.l2jmobius.gameserver.network.serverpackets.pledgebonus.ExPledgeBonusOpen;
import org.l2jmobius.gameserver.network.serverpackets.pledgedonation.ExPledgeDonationInfo;
@ -46,7 +45,6 @@ public class RequestPledgeBonusOpen implements IClientIncomingPacket
}
player.sendPacket(new ExPledgeBonusOpen(player));
player.sendPacket(new ExPledgeClassicRaidInfo());
final long joinedTime = (player.getClanJoinExpiryTime() - (Config.ALT_CLAN_JOIN_DAYS * 60000));
player.sendPacket(new ExPledgeDonationInfo(player.getClanDonationPoints(), (joinedTime + 86400000) < System.currentTimeMillis()));
}

View File

@ -17,16 +17,22 @@
package org.l2jmobius.gameserver.network.serverpackets.pledgeV3;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.instancemanager.GlobalVariablesManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.clan.Clan;
import org.l2jmobius.gameserver.network.OutgoingPackets;
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
/**
* Written by Berezkin Nikolay, on 22.04.2021
* @author Index
*/
public class ExPledgeClassicRaidInfo implements IClientOutgoingPacket
{
public ExPledgeClassicRaidInfo()
private final Clan _clan;
public ExPledgeClassicRaidInfo(PlayerInstance player)
{
_clan = player.getClan();
}
@Override
@ -34,13 +40,24 @@ public class ExPledgeClassicRaidInfo implements IClientOutgoingPacket
{
OutgoingPackets.EX_PLEDGE_CLASSIC_RAID_INFO.writeId(packet);
packet.writeD(0); // clan arena stage
packet.writeD(5);
for (int i = 1; i <= 5; i++)
if (_clan == null)
{
packet.writeD(1867);
packet.writeD(i);
packet.writeD(0);
}
else
{
final int stage = GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.MONSTER_ARENA_VARIABLE + _clan.getId(), 0);
packet.writeD(stage);
// Skill rewards.
packet.writeD(5);
for (int i = 1; i <= 5; i++)
{
packet.writeD(1867);
packet.writeD(i);
}
}
return true;
}
}