Addition of clan raid status.
Contributed by Index.
This commit is contained in:
parent
926f9f2555
commit
c29621c886
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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()
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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()));
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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()
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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()));
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user